diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-02-21 14:32:40 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2012-03-09 13:39:33 +0000 |
commit | 60470526bdbe624201c32a50f9d4145dd32fa1cb (patch) | |
tree | 768b10469eb5408778df64e6f2a983c7ceeb3ba3 /tools/glib-gtypes-generator.py | |
parent | 920c4e208fd7e0ce27abfc9657750ab8d34e38a7 (diff) | |
download | telepathy-glib-60470526bdbe624201c32a50f9d4145dd32fa1cb.tar.gz |
Codegen: write temporary files first, and rename them into place
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36398
Reviewed-by: Xavier Claessens <xavier.claessens@collabora.co.uk>
Diffstat (limited to 'tools/glib-gtypes-generator.py')
-rw-r--r-- | tools/glib-gtypes-generator.py | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/tools/glib-gtypes-generator.py b/tools/glib-gtypes-generator.py index a49c36e7f..e5e62904a 100644 --- a/tools/glib-gtypes-generator.py +++ b/tools/glib-gtypes-generator.py @@ -23,6 +23,7 @@ import sys import xml.dom.minidom +from libtpcodegen import file_set_contents from libglibcodegen import escape_as_identifier, \ get_docstring, \ NS_TP, \ @@ -42,15 +43,16 @@ class GTypesGenerator(object): self.PREFIX_ = self.Prefix.upper() + '_' self.prefix_ = self.Prefix.lower() + '_' - self.header = open(output + '.h', 'w') - self.body = open(output + '-body.h', 'w') - self.docs = open(output + '-gtk-doc.h', 'w') + self.header = [] + self.body = [] + self.docs = [] + self.output = output for f in (self.header, self.body, self.docs): - f.write('/* Auto-generated, do not edit.\n *\n' - ' * This file may be distributed under the same terms\n' - ' * as the specification from which it was generated.\n' - ' */\n\n') + f.append('/* Auto-generated, do not edit.\n *\n' + ' * This file may be distributed under the same terms\n' + ' * as the specification from which it was generated.\n' + ' */\n\n') # keys are e.g. 'sv', values are the key escaped self.need_mappings = {} @@ -66,13 +68,13 @@ class GTypesGenerator(object): self.need_other_arrays = {} def h(self, code): - self.header.write(code.encode("utf-8")) + self.header.append(code.encode("utf-8")) def c(self, code): - self.body.write(code.encode("utf-8")) + self.body.append(code.encode("utf-8")) def d(self, code): - self.docs.write(code.encode('utf-8')) + self.docs.append(code.encode('utf-8')) def do_mapping_header(self, mapping): members = mapping.getElementsByTagNameNS(NS_TP, 'member') @@ -290,6 +292,10 @@ class GTypesGenerator(object): self.c(' return t;\n') self.c('}\n\n') + file_set_contents(self.output + '.h', ''.join(self.header)) + file_set_contents(self.output + '-body.h', ''.join(self.body)) + file_set_contents(self.output + '-gtk-doc.h', ''.join(self.docs)) + if __name__ == '__main__': argv = sys.argv[1:] |