]> granicus.if.org Git - python/commitdiff
escape 8-bit chars when generating .py files. fixes bug #566302
authorJust van Rossum <just@letterror.com>
Sun, 9 Jun 2002 09:08:53 +0000 (09:08 +0000)
committerJust van Rossum <just@letterror.com>
Sun, 9 Jun 2002 09:08:53 +0000 (09:08 +0000)
Tools/bgen/bgen/scantools.py

index 768b3b7a0981a349827373a84d4fe2b91c6a36c3..9256c4f4203dc62d2cd9e5744ba021c1a1f01cec 100644 (file)
@@ -433,6 +433,7 @@ if missing: raise "Missing Types"
 
        def dosymdef(self, match):
                name, defn = match.group('name', 'defn')
+               defn = escape8bit(defn)
                if self.debug:
                        self.report("\tsym: name=%s, defn=%s" % (`name`, `defn`))
                if not name in self.blacklistnames:
@@ -638,7 +639,21 @@ class Scanner_OSX(Scanner):
                self.whole_pat = self.type_pat + self.name_pat + self.args_pat
                self.sym_pat = "^[ \t]*(?P<name>[a-zA-Z0-9_]+)[ \t]*=" + \
                               "[ \t]*(?P<defn>[-0-9_a-zA-Z'\"\(][^\t\n,;}]*),?"
-       
+
+_8bit = re.compile(r"[\200-\377]")
+
+def escape8bit(s):
+       if _8bit.search(s) is not None:
+               out = []
+               for c in s:
+                       o = ord(c)
+                       if o >= 128:
+                               out.append("\\" + hex(o)[1:])
+                       else:
+                               out.append(c)
+               s = "".join(out)
+       return s
+
 def test():
        input = "D:Development:THINK C:Mac #includes:Apple #includes:AppleEvents.h"
        output = "@aespecs.py"