From: Niels Provos Date: Fri, 3 Jul 2009 17:25:45 +0000 (+0000) Subject: fix preamble of rpcgen-generated files to rely on event2 includes; based on work... X-Git-Tag: release-2.0.3-alpha~193 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bbcc54ef9ce0dbbdf4a26b4bcc43cfb9c4e3bec4;p=libevent fix preamble of rpcgen-generated files to rely on event2 includes; based on work by jmansion; patch from Zack Weinberg. svn:r1334 --- diff --git a/ChangeLog b/ChangeLog index 273fc461..661b9e8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -37,6 +37,7 @@ Changes in 2.0.2-alpha: o Replace some read()/write() instances with send()/recv() to work properly on win32. o Set truncated flag correctly in evdns server replies. o Raise RpcGenError in event_rpcgen.py; from jmanison and Zack Weinberg + o Fix preamble of rpcgen-generated files to rely on event2 includes; based on work by jmansion; patch from Zack Weinberg. Changes in 2.0.1-alpha: diff --git a/event_rpcgen.py b/event_rpcgen.py index 33842109..255e47e6 100755 --- a/event_rpcgen.py +++ b/event_rpcgen.py @@ -18,6 +18,7 @@ line_count = 0 white = re.compile(r'^\s+') cppcomment = re.compile(r'\/\/.*$') +nonident = re.compile(r'[^a-zA-Z0-9_]') headerdirect = [] cppdirect = [] @@ -1507,11 +1508,10 @@ class CCodeGenerator: pass def GuardName(self, name): - name = '_'.join(name.split('.')) - name = '_'.join(name.split('/')) - guard = '_' + name.upper() + '_' - - return guard + # Use the complete provided path to the input file, with all + # non-identifier characters replaced with underscores, to + # reduce the chance of a collision between guard macros. + return '_' + nonident.sub('_', name).upper() + '_' def HeaderPreamble(self, name): guard = self.GuardName(name) @@ -1523,19 +1523,15 @@ class CCodeGenerator: '#define %s\n\n' ) % ( name, guard, guard) - # insert stdint.h - let's hope everyone has it - pre += ( - '#include \n' - '#ifdef _EVENT_HAVE_STDINT_H\n' - '#include \n' - '#endif\n' ) - for statement in headerdirect: pre += '%s\n' % statement if headerdirect: pre += '\n' - pre += '#include ' + pre += ( + '#include /* for ev_uint*_t */\n' + '#include \n' + ) return pre @@ -1548,14 +1544,15 @@ class CCodeGenerator: global _VERSION header_file = '.'.join(name.split('.')[:-1]) + '.gen.h' + slash = header_file.rfind('/') + if slash != -1: + header_file = header_file[slash+1:] pre = ( '/*\n' ' * Automatically generated from %s\n' ' * by %s/%s. DO NOT EDIT THIS FILE.\n' ' */\n\n' ) % (name, _NAME, _VERSION) - pre += ( '#include \n' - '#include \n' - '#include \n' + pre += ( '#include \n' '#include \n' '#include \n' '#include \n'