]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Make kh2reg.py compatible with modern Python.
authorJacob Nevins <jacobn@chiark.greenend.org.uk>
Tue, 24 Feb 2015 10:30:18 +0000 (10:30 +0000)
committerJacob Nevins <jacobn@chiark.greenend.org.uk>
Tue, 24 Feb 2015 10:30:18 +0000 (10:30 +0000)
Bare string exceptions aren't supported any more.
Patch by Will Aoki, plus a backward compatibility tweak from Colin Watson.
Seen working with Python 2.4.3 and 2.7.6.

contrib/kh2reg.py

index 503dd6e34fc291640d56d9050de5c5f18c8826b6..7904d65eb702ec4d934712289e2375641da3e5d8 100755 (executable)
@@ -8,7 +8,8 @@
 #     kh2reg.py --unix    known_hosts1 2 3 4 ... > sshhostkeys
 #       Creates data suitable for storing in ~/.putty/sshhostkeys (Unix).
 # Line endings are someone else's problem as is traditional.
-# Developed for Python 1.5.2.
+# Originally developed for Python 1.5.2, but probably won't run on that
+# any more.
 
 import fileinput
 import base64
@@ -63,6 +64,13 @@ if output_type == 'windows':
 [HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys]
 """)
 
+class BlankInputLine(Exception):
+    pass
+
+class UnknownKeyType(Exception):
+   def __init__(self, keytype):
+       self.keytype = keytype
+
 # Now process all known_hosts input.
 for line in fileinput.input(args):
 
@@ -72,7 +80,7 @@ for line in fileinput.input(args):
 
         # Skip blanks and comments
         if line == '' or line[0] == '#':
-            raise "Skipping input line"
+            raise BlankInputLine
 
         # Split line on spaces.
         fields = string.split (line, ' ')
@@ -119,7 +127,7 @@ for line in fileinput.input(args):
             if   sshkeytype == "ssh-rsa":   keytype = "rsa2"
             elif sshkeytype == "ssh-dss":   keytype = "dss"
             else:
-                raise "Unknown SSH key type", sshkeytype
+                raise UnknownKeyType(sshkeytype)
 
         # Now print out one line per host pattern, discarding wildcards.
         for host in string.split (hostpat, ','):
@@ -150,7 +158,7 @@ for line in fileinput.input(args):
                     sys.stdout.write("\"%s\"=\"%s\"\n"
                                      % (winmungestr(key), value))
 
-    except "Unknown SSH key type", k:
-        sys.stderr.write("Unknown SSH key type '%s', skipping\n" % k)
-    except "Skipping input line":
+    except UnknownKeyType, k:
+        sys.stderr.write("Unknown SSH key type '%s', skipping\n" % k.keytype)
+    except BlankInputLine:
         pass