Version 2.2.3
[lttng-ust.git] / tools / lttng-gen-tp
index 828bee6e77e72780dddbc25a5689812127353b35..db78a5a82b8358a915982aef0969809c81fb44ec 100755 (executable)
@@ -31,13 +31,8 @@ class HeaderFile:
 #undef TRACEPOINT_PROVIDER
 #define TRACEPOINT_PROVIDER {providerName}
 
-#undef TRACEPOINT_INCLUDE_FILE
-#define TRACEPOINT_INCLUDE_FILE ./{headerFilename}
-
-#ifdef __cplusplus
-#extern "C"{{
-#endif /*__cplusplus */
-
+#undef TRACEPOINT_INCLUDE
+#define TRACEPOINT_INCLUDE "./{headerFilename}"
 
 #if !defined({includeGuard}) || defined(TRACEPOINT_HEADER_MULTI_READ)
 #define {includeGuard}
@@ -49,11 +44,6 @@ class HeaderFile:
 #endif /* {includeGuard} */
 
 #include <lttng/tracepoint-event.h>
-
-#ifdef __cplusplus
-}}
-#endif /*__cplusplus */
-
 """
     def __init__(self, filename, template):
         self.outputFilename = filename
@@ -61,7 +51,9 @@ class HeaderFile:
 
     def write(self):
         outputFile = open(self.outputFilename,"w")
-        includeGuard = "_"+self.outputFilename.upper().replace(".","_")
+        # Include guard macro will be created by uppercasing the filename and
+        # replacing all non alphanumeric characters with '_'
+        includeGuard = re.sub('[^0-9a-zA-Z]', '_', self.outputFilename.upper())
 
         outputFile.write(HeaderFile.HEADER_TPL.format(providerName=self.template.domain,
                                            includeGuard = includeGuard,
@@ -222,6 +214,14 @@ def main(argv=None):
             outputNames.append(a)
         if o in ("-a",""):
             all = True
+    try:
+        if len(args) == 0:
+            raise Usage("No template file given")
+
+    except Usage, err:
+        print >>sys.stderr, err.msg
+        print >>sys.stderr, "for help use --help"
+        return 2
 
     doCFile = None
     doHeader = None
@@ -255,29 +255,41 @@ def main(argv=None):
 
     # process arguments
     for arg in args:
+        if arg[-3:] != ".tp":
+                print arg + " does not end in .tp. Skipping."
+                continue
 
-        tpl = TemplateFile(arg)
-        if doHeader:
-            if headerFilename:
-                curFilename = headerFilename
-            else:
-                curFilename = re.sub("\.tp$",".h",arg)
-            doth = HeaderFile(curFilename, tpl)
-            doth.write()
-        if doCFile:
-            if cFilename:
-                curFilename = cFilename
-            else:
-                curFilename = re.sub("\.tp$",".c",arg)
-            dotc = CFile(curFilename, tpl)
-            dotc.write()
-        if doObj:
-            if objFilename:
-                curFilename = objFilename
-            else:
-                curFilename = re.sub("\.tp$",".o",arg)
-            dotobj = ObjFile(curFilename, tpl)
-            dotobj.write()
-
+        tpl = None
+        try:
+            tpl = TemplateFile(arg)
+        except IOError as args:
+            print "Cannot read input file " + args.filename + " " + args.strerror
+            return -1
+        try:
+            if doHeader:
+                if headerFilename:
+                    curFilename = headerFilename
+                else:
+                    curFilename = re.sub("\.tp$",".h",arg)
+                doth = HeaderFile(curFilename, tpl)
+                doth.write()
+            if doCFile:
+                if cFilename:
+                    curFilename = cFilename
+                else:
+                    curFilename = re.sub("\.tp$",".c",arg)
+                dotc = CFile(curFilename, tpl)
+                dotc.write()
+            if doObj:
+                if objFilename:
+                    curFilename = objFilename
+                else:
+                    curFilename = re.sub("\.tp$",".o",arg)
+                dotobj = ObjFile(curFilename, tpl)
+                dotobj.write()
+        except IOError as args:
+            print "Cannot write output file " + args.filename + " " + args.strerror 
+            return -1
+        
 if __name__ == "__main__":
     sys.exit(main())
This page took 0.024854 seconds and 4 git commands to generate.