]> granicus.if.org Git - python/commitdiff
correct the fixpath.py script to work in Python 3 #6999
authorBenjamin Peterson <benjamin@python.org>
Fri, 25 Sep 2009 20:56:52 +0000 (20:56 +0000)
committerBenjamin Peterson <benjamin@python.org>
Fri, 25 Sep 2009 20:56:52 +0000 (20:56 +0000)
Tools/scripts/pathfix.py

index 601a172fdc483596c54d8bfa9ea57531089573d9..6cbac10ecbb810a94323678910b284dcf2007985 100755 (executable)
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#!/usr/bin/env python3
 
 # Change the #! line occurring in Python scripts.  The new interpreter
 # pathname must be given with a -i option.
@@ -43,8 +43,9 @@ def main():
         sys.exit(2)
     for o, a in opts:
         if o == '-i':
-            new_interpreter = a
-    if not new_interpreter or new_interpreter[0] != '/' or not args:
+            new_interpreter = a.encode()
+    if not new_interpreter or not new_interpreter.startswith(b'/') or \
+           not args:
         err('-i option or file-or-directory missing\n')
         err(usage)
         sys.exit(2)
@@ -61,7 +62,7 @@ def main():
 
 ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$')
 def ispython(name):
-    return ispythonprog.match(name) >= 0
+    return bool(ispythonprog.match(name))
 
 def recursedown(dirname):
     dbg('recursedown(%r)\n' % (dirname,))
@@ -88,7 +89,7 @@ def recursedown(dirname):
 def fix(filename):
 ##  dbg('fix(%r)\n' % (filename,))
     try:
-        f = open(filename, 'r')
+        f = open(filename, 'rb')
     except IOError as msg:
         err('%s: cannot open: %r\n' % (filename, msg))
         return 1
@@ -101,7 +102,7 @@ def fix(filename):
     head, tail = os.path.split(filename)
     tempname = os.path.join(head, '@' + tail)
     try:
-        g = open(tempname, 'w')
+        g = open(tempname, 'wb')
     except IOError as msg:
         f.close()
         err('%s: cannot create: %r\n' % (tempname, msg))
@@ -139,11 +140,11 @@ def fix(filename):
     return 0
 
 def fixline(line):
-    if not line.startswith('#!'):
+    if not line.startswith(b'#!'):
         return line
-    if "python" not in line:
+    if b"python" not in line:
         return line
-    return '#! %s\n' % new_interpreter
+    return b'#! ' + new_interpreter + b'\n'
 
 if __name__ == '__main__':
     main()