foxygit / doom Log in
commit 167d4df40b55f2e8b559a797bb93b09554a871d0
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Tue Nov 9 16:10:52 2010 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Tue Nov 9 16:10:52 2010 +0000

    Update Python scripts to work in Python 3.

    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 2162
---
 data/convert-icon      |  7 ++-----
 man/docgen             | 25 +++++++++++--------------
 pkg/wince/wince-cabgen | 40 ++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 41 deletions(-)

diff --git a/data/convert-icon b/data/convert-icon
index c651bc7f..30fade20 100755
--- a/data/convert-icon
+++ b/data/convert-icon
@@ -1,6 +1,4 @@
-#!/usr/bin/python
-#
-# $Id: convert-icon 704 2006-10-18 00:51:11Z fraggle $
+#!/usr/bin/env python
 #
 # Copyright(C) 2005 Simon Howard
 #
@@ -29,7 +27,7 @@ import re
 try:
         import Image
 except ImportError:
-        print "WARNING: Could not update %s.  Please install the Python Imaging library." % sys.argv[2]
+        print("WARNING: Could not update %s.  Please install the Python Imaging library." % sys.argv[2])
         sys.exit(0)


@@ -71,4 +69,3 @@ def convert_image(filename, output_filename):

 convert_image(sys.argv[1], sys.argv[2])

-
diff --git a/man/docgen b/man/docgen
index 73e8c852..bfde7aef 100755
--- a/man/docgen
+++ b/man/docgen
@@ -150,11 +150,8 @@ config_files = {}
 show_vanilla_options = True

 class Parameter:
-    def __cmp__(self, other):
-        if self.name < other.name:
-            return -1
-        else:
-            return 1
+    def __lt__(self, other):
+        return self.name < other.name

     def __init__(self):
         self.text = ""
@@ -389,7 +386,7 @@ def print_template(template_file, content):
     try:
         for line in f:
             line = line.replace("@content", content)
-            print line.rstrip()
+            print(line.rstrip())

     finally:
         f.close()
@@ -407,7 +404,7 @@ def wiki_output(targets, template):
     read_wikipages()

     for t in targets:
-        print t.wiki_output()
+        print(t.wiki_output())

 def plaintext_output(targets, template_file):

@@ -419,13 +416,13 @@ def plaintext_output(targets, template_file):
     print_template(template_file, content)

 def usage():
-    print "Usage: %s [-V] [-c filename ]( -m | -w | -p ) <directory>" \
-            % sys.argv[0]
-    print "   -c :  Provide documentation for the specified configuration file"
-    print "   -m :  Manpage output"
-    print "   -w :  Wikitext output"
-    print "   -p :  Plaintext output"
-    print "   -V :  Don't show Vanilla Doom options"
+    print("Usage: %s [-V] [-c filename ]( -m | -w | -p ) <directory>" \
+            % sys.argv[0])
+    print("   -c :  Provide documentation for the specified configuration file")
+    print("   -m :  Manpage output")
+    print("   -w :  Wikitext output")
+    print("   -p :  Plaintext output")
+    print("   -V :  Don't show Vanilla Doom options")
     sys.exit(0)

 # Parse command line
diff --git a/pkg/wince/wince-cabgen b/pkg/wince/wince-cabgen
index 97cba132..76845cf9 100755
--- a/pkg/wince/wince-cabgen
+++ b/pkg/wince/wince-cabgen
@@ -3,10 +3,11 @@
 import os
 import re
 import shutil
+import struct
 import sys
 import tempfile

-CAB_HEADER = "MSCE"
+CAB_HEADER = "MSCE".encode("ascii")

 ARCHITECTURES = {
     "shx-sh3":        103,
@@ -58,16 +59,10 @@ DIR_VARIABLES = {
 }

 def write_int16(f, value):
-    b1 = value & 0xff
-    b2 = (value >> 8) & 0xff
-    f.write("%c%c" % (b1, b2))
+    f.write(struct.pack("<H", value))

 def write_int32(f, value):
-    b1 = value & 0xff
-    b2 = (value >> 8) & 0xff
-    b3 = (value >> 16) & 0xff
-    b4 = (value >> 24) & 0xff
-    f.write("%c%c%c%c" % (b1, b2, b3, b4))
+    f.write(struct.pack("<I", value))

 # Pad a string with NUL characters so that it has a length that is
 # a multiple of 4.  At least one NUL is always added.
@@ -208,7 +203,7 @@ class StringDictionary:
         for i, s in self.string_list:
             write_int16(stream, i)
             write_int16(stream, len(s))
-            stream.write(s)
+            stream.write(s.encode("ascii"))

 class DirectoryList:
     def __init__(self, cab_header):
@@ -252,7 +247,7 @@ class DirectoryList:
             #    dir_path = dir_path[1:]
             dir_path = [ dir ]

-            dir_path = map(lambda x: dictionary.get(x), dir_path)
+            dir_path = list(map(lambda x: dictionary.get(x), dir_path))

             self.directories[key] = self.index
             self.directories_list.append((self.index, dir_path))
@@ -334,7 +329,7 @@ class FileList:
             write_int16(stream, file_no)
             write_int32(stream, flags)
             write_int16(stream, len(filename))
-            stream.write(filename)
+            stream.write(filename.encode("ascii"))

 # TODO?

@@ -412,7 +407,7 @@ class LinkList:
         # Map dirs that make up the path to strings.

         dictionary = self.cab_header.dictionary
-        dest_path = map(lambda x: dictionary.get(x), dest_path)
+        dest_path = list(map(lambda x: dictionary.get(x), dest_path))

         self.links.append((self.index, target_type, target_id,
                            base_dir, dest_path))
@@ -492,6 +487,7 @@ class CabHeaderFile:
             section.write(stream)
             pos = stream.tell()
             if pos != old_pos + len(section):
+                print(section)
                 raise Exception("Section is %i bytes long, but %i written" % \
                                 (len(section), pos - old_pos))
             old_pos = pos
@@ -574,7 +570,7 @@ class CabFile:
         basename = self.__shorten_name(self.files[0], 0)
         filename = os.path.join(dir, basename)

-        stream = file(filename, "w")
+        stream = open(filename, "wb")
         self.cab_header.write(stream)
         stream.close()

@@ -625,17 +621,17 @@ def expand_path(filename):
     # Expand $(xyz) path variables to their Windows equivalents:

     def replace_var(match):
-	var_name = match.group(1)
+        var_name = match.group(1)

-	if not var_name in DIR_VARIABLES:
-	    raise Exception("Unknown variable '%s'" % var_name)
-	else:
-	    return DIR_VARIABLES[var_name]
+        if not var_name in DIR_VARIABLES:
+            raise Exception("Unknown variable '%s'" % var_name)
+        else:
+            return DIR_VARIABLES[var_name]

     return re.sub(r"\$\((.*?)\)", replace_var, filename)

 def read_config_file(filename):
-    f = file(filename)
+    f = open(filename)

     data = f.readlines()
     data = "".join(data)
@@ -656,10 +652,10 @@ def print_dependencies(filename):
     files_list = config["files"]

     for dest, source_file in files_list.items():
-        print source_file
+        print(source_file)

 if len(sys.argv) < 3:
-    print "Usage: %s <config file> <output file>" % sys.argv[0]
+    print("Usage: %s <config file> <output file>" % sys.argv[0])
     sys.exit(0)

 if sys.argv[1] == "-d":