Quoting Lionel Landwerlin (2017-03-10 08:26:15) > Signed-off-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> > --- > src/intel/Makefile.genxml.am | 1 + > src/intel/genxml/gen_zipped_file.py | 25 +++++++++++++++++++++++++ > 2 files changed, 26 insertions(+) > create mode 100755 src/intel/genxml/gen_zipped_file.py > > diff --git a/src/intel/Makefile.genxml.am b/src/intel/Makefile.genxml.am > index 20e4b15786..1866d7e2df 100644 > --- a/src/intel/Makefile.genxml.am > +++ b/src/intel/Makefile.genxml.am > @@ -60,4 +60,5 @@ EXTRA_DIST += \ > genxml/genX_pack.h \ > genxml/gen_macros.h \ > genxml/gen_pack_header.py \ > + genxml/gen_zipped_file.py \ > genxml/README > diff --git a/src/intel/genxml/gen_zipped_file.py > b/src/intel/genxml/gen_zipped_file.py > new file mode 100755 > index 0000000000..d5735336c5 > --- /dev/null > +++ b/src/intel/genxml/gen_zipped_file.py > @@ -0,0 +1,25 @@ > +#!/usr/bin/env python2 > +#encoding=utf-8
copyright? > + > +import os > +import sys > +import zlib > + could you wrap the rest of this in a main function, and add the "if __name__ == "__main__" idiom to the bottom of the file? > +if len(sys.argv) < 2: > + print("No input xml file specified") > + sys.exit(1) > + > +input_file = open(sys.argv[1]) > +input_data = input_file.read() > +compressed_data = zlib.compress(input_data) with open(sys.argv[1]) as f: compressed_data = zlib.compress(f.read()) This ensures that the fd is closed even if there's an exception, and is more idomatic. > + > +gen_name = os.path.splitext(os.path.basename(sys.argv[1]))[0] > +sys.stdout.write("static const uint8_t %s_xml[] = {\n " % gen_name) You don't want to use sys.stdout.write, you need to manually flush if you do, print would be better. I'm going to suggest that you use print_function here to (and below), since you can control whether that prints the newline at the end (which is what I assume you're trying to avoid using sys.stdout.write. > + > +count = 0 > +for c in compressed_data: > + sys.stdout.write("0x%.2x, " % ord(c)) > + count += 1 > + if count % 12 == 0: > + sys.stdout.write("\n ") > +print("\n};") If you use the print function (from __future__ import print_function), then you can use enumerate to simplify this to: for i, c in enumerate(compressed_data, start=1): print("0x%.2x, " % ord(c), end='\n ' if not i % 12 else '') print('\n};) Start needs to be 1 rather than 0, since i gets incremented at the start of the loop rather than the end in this version. If you want to get really fancy you can use python's str.format instead of the old % syntax (this is just a suggestion, feel no obligation): print("{:0=#4x}, ".format(ord(c))) Which specifies: 0: fill with zeros =: make it equal to the width #: print the 0x (or 0b, or 0o for binary and octal) 4: the wdith (which needs to include the #) x: format hexidecimal Dylan
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev