diff -u b/src/python/journalling.py b/src/python/journalling.py
--- b/src/python/journalling.py
+++ b/src/python/journalling.py
@@ -27,7 +27,6 @@
import re
from optparse import OptionParser
from lxml import etree
-import shlex
import base64
# TODO fix xml pretty print
@@ -100,8 +99,8 @@
# Count number of leading spaces
indent = len(line) - len(line.lstrip())
- # using shlex to get rid of the quotes
- splitted = shlex.split(line)
+ # splitting the line into list
+ splitted = line.split()
# if the line is not empty
if splitted:
@@ -118,7 +117,9 @@
for part in splitted:
# if flag is set, string is an elements content
if CONTENT_FLAG == 1:
- content = base64.b64decode(part)
+ # First and last characters(quotes) stripped and
+ # string is decoded from base64
+ content = base64.b64decode(part[1:-1])
# end parsing after content is stored
break
# test if string is an elements content indicator
@@ -128,13 +129,15 @@
# test if string is an elements time attribute
if re.match(r'^--timestamp=', part):
attribute_name = "timestamp"
- attribute_value = part.split('=', 1)[1]
+ # Value is string after '=' sign and without first abd last char(quotes)
+ attribute_value = part.split('=', 1)[1][1:-1]
attributes[attribute_name] = time.strftime(TIME_FORMAT, time.localtime(int(attribute_value)))
continue
# test if string is an elements regular attribute
if re.match(r'^--[a-zA-Z0-9]+=', part):
attribute_name = part.split('=', 1)[0][2:]
- attribute_value = part.split('=', 1)[1]
+ # Value is string after '=' sign and without first abd last char(quotes)
+ attribute_value = part.split('=', 1)[1][1:-1]
attributes[attribute_name] = base64.b64decode(attribute_value)
continue
@@ -145,7 +148,11 @@
# information given as parameters
def createElement(element, attributes, content):
element = unicode(element, 'utf-8', errors='replace').translate(xmlTrans)
- new_el = etree.Element(element)
+ try:
+ new_el = etree.Element(element)
+ except ValueError, e:
+ sys.stderr.write('Failed to create element with name %s\nError: %s\nExiting unsuccessfully.\n' % (element, e))
+ exit(1)
content = unicode(content, 'utf-8', errors='replace').translate(xmlTrans)
new_el.text = content