[scanner] Print error instead of throwing for unknown include
authorColin Walters <walters@verbum.org>
Thu, 11 Feb 2010 21:03:59 +0000 (16:03 -0500)
committerColin Walters <walters@verbum.org>
Thu, 11 Feb 2010 21:03:59 +0000 (16:03 -0500)
We should avoid exceptions being propagated to the toplevel.

giscanner/scannermain.py
giscanner/transformer.py

index cc70fde..44c0287 100644 (file)
@@ -276,7 +276,11 @@ def scanner_main(args):
     for include in options.includes:
         if os.sep in include:
             raise ValueError("Invalid include path %r" % (include, ))
-        include_obj = Include.from_string(include)
+        try:
+            include_obj = Include.from_string(include)
+        except:
+            sys.stderr.write("Malformed include %r\n" % (include, ))
+            sys.exit(1)
         transformer.register_include(include_obj)
 
     packages = set(options.packages)
index f31408f..2863e73 100644 (file)
@@ -18,7 +18,7 @@
 # Boston, MA 02111-1307, USA.
 #
 
-import os
+import os, sys
 
 from .ast import (Bitfield, Callback, Enum, Function, Namespace, Member,
                   Parameter, Return, Struct, Field,
@@ -125,8 +125,9 @@ class Transformer(object):
             path = os.path.join(d, girname)
             if os.path.exists(path):
                 return path
-        raise ValueError("Couldn't find include %r (search path: %r)"\
+        sys.stderr.write("Couldn't find include %r (search path: %r)\n"\
                          % (girname, searchdirs))
+        sys.exit(1)
 
     def _parse_include(self, filename):
         parser = self._cachestore.load(filename)