X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fc_client.py;h=d634c27ef3a9fd4ade295a64f6cbaa65a6ed0dd7;hb=d6d44e1bf09cca8aefbf4ce9875d7f794bf19fb1;hp=835ae5c929fafa1aea8567fb23a89724574f264e;hpb=b3832bcc46d85110fdb2b553df6249a831cfe0fa;p=free-sw%2Fxcb%2Flibxcb diff --git a/src/c_client.py b/src/c_client.py index 835ae5c..d634c27 100755 --- a/src/c_client.py +++ b/src/c_client.py @@ -1,7 +1,8 @@ #!/usr/bin/env python from xml.etree.cElementTree import * -from sys import argv from os.path import basename +import getopt +import sys import re # Jump to the bottom of this file for the main routine @@ -182,7 +183,7 @@ def c_open(self): _h('extern xcb_extension_t %s;', _ns.c_ext_global_name) _c('') - _c('xcb_extension_t %s = { "%s" };', _ns.c_ext_global_name, _ns.ext_xname) + _c('xcb_extension_t %s = { "%s", 0 };', _ns.c_ext_global_name, _ns.ext_xname) def c_close(self): ''' @@ -634,9 +635,15 @@ def _c_complex(self): struct_fields = [] maxtypelen = 0 + varfield = None for field in self.fields: if not field.type.fixed_size(): - break + varfield = field.c_field_name + continue + if varfield != None and not field.type.is_pad and field.wire: + errmsg = '%s: warning: variable field %s followed by fixed field %s\n' % (self.c_type, varfield, field.c_field_name) + sys.stderr.write(errmsg) + # sys.exit(1) if field.wire: struct_fields.append(field) @@ -982,6 +989,18 @@ output = {'open' : c_open, # Boilerplate below this point +# Check for the argument that specifies path to the xcbgen python package. +try: + opts, args = getopt.getopt(sys.argv[1:], 'p:') +except getopt.GetoptError, err: + print str(err) + print 'Usage: c_client.py [-p path] file.xml' + sys.exit(1) + +for (opt, arg) in opts: + if opt == '-p': + sys.path.append(arg) + # Import the module class try: from xcbgen.state import Module @@ -996,7 +1015,7 @@ except ImportError: raise # Parse the xml header -module = Module(argv[1], output) +module = Module(args[0], output) # Build type-registry and resolve type dependencies module.register()