Skip to content

Commit d36702f

Browse files
committed
Fixed several string escape issues; generating xml by hand always bites you.
1 parent 6e294e3 commit d36702f

File tree

2 files changed

+32
-23
lines changed

2 files changed

+32
-23
lines changed

bin/code_swarm

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -196,27 +196,27 @@ def do_git(dir):
196196
tmp = os.path.join(dir, "temp.log")
197197
xml = os.path.join(dir, "log.xml")
198198

199-
return do_cmds('git log --name-status --pretty=format:"%s" > %s'%(fmt, tmp)
200-
,"convert_logs.py -g %s -o %s" % (tmp, xml)
201-
,"rm " + tmp)
199+
return do_cmds('git log --name-status --pretty=format:"%s" > "%s"'%(fmt, tmp)
200+
,"convert_logs.py -g '%s' -o '%s'" % (tmp, xml)
201+
,"rm %s" % tmp)
202202

203203

204204
def do_svn(dir):
205205
tmp = os.path.join(dir, "temp.log")
206206
xml = os.path.join(dir, "log.xml")
207207

208-
return do_cmds("svn log -v > " + tmp
209-
,"convert_logs.py -s %s -o %s" % (tmp, xml)
210-
,"rm " + tmp)
208+
return do_cmds("svn log -v > '%s'" % tmp
209+
,"convert_logs.py -s '%s' -o '%s'" % (tmp, xml)
210+
,"rm '%s'" % tmp)
211211

212212

213213
def do_hg(dir):
214214
tmp = os.path.join(dir, "unsorted_log.xml")
215215
xml = os.path.join(dir, "log.xml")
216216

217-
return do_cmds("hg_log.py -o %s ." % tmp
218-
,"sort_code_swarm_input.py < %s > %s" % (tmp, xml)
219-
,"rm " + tmp)
217+
return do_cmds("hg_log.py -o '%s' ." % tmp
218+
,"sort_code_swarm_input.py < '%s' > '%s'" % (tmp, xml)
219+
,"rm '%s'" % tmp)
220220

221221
def do_freebase(domain):
222222
dir = os.path.abspath(tempfile.gettempdir())

bin/convert_logs.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import sre_constants
1212
from itertools import ifilter
1313

14+
1415
# Some global variables
1516
SVN_SEP = "------------------------------------------------------------------------"
1617
CVS_SEP = "----------------------------"
@@ -109,21 +110,29 @@ def main(argv):
109110

110111
def create_event_xml(events, output):
111112
""" Write out the final XML given an input iterator of events."""
112-
# Create new empty xml file.
113-
output.write('<?xml version="1.0"?>\n')
114-
output.write('<file_events>\n')
115-
# Make sure the events are sorted in ascending order by date, then
116-
# write the events into the xml file.
117-
# If we can get a guarantee that this sort isn't necessary somehow it
118-
# could be a big win for decreasing startup time
113+
from xml.sax.saxutils import XMLGenerator
114+
from xml.sax.xmlreader import AttributesNSImpl
115+
116+
generator = XMLGenerator(output, "utf-8")
117+
generator.startDocument()
118+
119+
generator.startElementNS((None, 'file_events'), 'file_events', AttributesNSImpl({},{}))
120+
121+
qnames = {(None, "date"):"date",
122+
(None, "filename"):"filename",
123+
(None, "author"):"author"}
124+
119125
for event in events:
120-
try:
121-
output.write('<event date="%s" filename="%s" author="%s" />\n' % \
122-
(event.date, h(event.filename), h(event.author)))
123-
except:
124-
print >>stderr, "Error when writing %s to %s" % (event, output)
125-
output.write('</file_events>\n')
126-
output.close()
126+
generator.startElementNS((None, "event"), "event", AttributesNSImpl({
127+
(None,"date"):str(event.date),
128+
(None,"filename"):event.filename,
129+
(None,"author"):event.author
130+
}, qnames))
131+
132+
generator.endElementNS((None, "event"), "event")
133+
134+
generator.endElementNS((None, 'file_events'), 'file_events')
135+
generator.endDocument()
127136

128137
def parse_args(argv):
129138
""" Parses command line arguments and returns an options object

0 commit comments

Comments
 (0)