]> granicus.if.org Git - libevent/commitdiff
fix preamble of rpcgen-generated files to rely on event2 includes; based on work...
authorNiels Provos <provos@gmail.com>
Fri, 3 Jul 2009 17:25:45 +0000 (17:25 +0000)
committerNiels Provos <provos@gmail.com>
Fri, 3 Jul 2009 17:25:45 +0000 (17:25 +0000)
svn:r1334

ChangeLog
event_rpcgen.py

index 273fc461020e29263ee2864955d37abe28420856..661b9e8e1c611f2e9e6a23bc7c679796b9212bb0 100644 (file)
--- 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:
index 338421091d835b8bf8fba4be4e747fdceb9225ee..255e47e6cb84bca275375e15adfeea4d6f28afae 100755 (executable)
@@ -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 <event-config.h>\n'
-            '#ifdef _EVENT_HAVE_STDINT_H\n'
-            '#include <stdint.h>\n'
-            '#endif\n' )
-
         for statement in headerdirect:
             pre += '%s\n' % statement
         if headerdirect:
             pre += '\n'
 
-        pre += '#include <event2/rpc.h>'
+        pre += (
+            '#include <event2/util.h> /* for ev_uint*_t */\n'
+            '#include <event2/rpc.h>\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 <sys/types.h>\n'
-                 '#include <sys/time.h>\n'
-                 '#include <stdlib.h>\n'
+        pre += ( '#include <stdlib.h>\n'
                  '#include <string.h>\n'
                  '#include <assert.h>\n'
                  '#include <event2/event.h>\n'