This started opening files in text mode by default in the 2.3 release,
which is a disaster on Windows.  Restored the binary default of all
previous releases.  Also minor code cleanups.

Bugfix candidate!
diff --git a/Misc/NEWS b/Misc/NEWS
index 8f24d85..ebda27d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -52,6 +52,12 @@
 Tools/Demos
 -----------
 
+- md5sum.py mistakenly opened input files in text mode by default, a
+  silent and dangerous change from previous releases.  It once again
+  opens input files in binary mode by default.  The -t and -b flags
+  remain for compatibility with the 2.3 release, but -b is the default
+  now.
+
 - py-electric-colon now works when pending-delete/delete-selection mode is
   in effect
 
diff --git a/Tools/scripts/md5sum.py b/Tools/scripts/md5sum.py
index 0711db8..e045f1a 100644
--- a/Tools/scripts/md5sum.py
+++ b/Tools/scripts/md5sum.py
@@ -6,12 +6,12 @@
 
 bufsize = 8096
 fnfilter = None
-rmode = 'r'
+rmode = 'rb'
 
 usage = """
 usage: sum5 [-b] [-t] [-l] [-s bufsize] [file ...]
--b        : read files in binary mode
--t        : read files in text mode (default)
+-b        : read files in binary mode (default)
+-t        : read files in text mode (you almost certainly don't want this!)
 -l        : print last pathname component only
 -s bufsize: read buffer size (default %d)
 file ...  : files to sum; '-' or no files means stdin
@@ -40,7 +40,7 @@
             sts = sum(f, out) or sts
     return sts
 
-def printsum(filename, out = sys.stdout):
+def printsum(filename, out=sys.stdout):
     try:
         fp = open(filename, rmode)
     except IOError, msg:
@@ -52,12 +52,13 @@
     fp.close()
     return sts
 
-def printsumfp(fp, filename, out = sys.stdout):
+def printsumfp(fp, filename, out=sys.stdout):
     m = md5.new()
     try:
         while 1:
             data = fp.read(bufsize)
-            if not data: break
+            if not data:
+                break
             m.update(data)
     except IOError, msg:
         sys.stderr.write('%s: I/O error: %s\n' % (filename, msg))
@@ -65,7 +66,7 @@
     out.write('%s %s\n' % (m.hexdigest(), filename))
     return 0
 
-def main(args = sys.argv[1:], out = sys.stdout):
+def main(args = sys.argv[1:], out=sys.stdout):
     global fnfilter, rmode, bufsize
     try:
         opts, args = getopt.getopt(args, 'blts:')
@@ -75,11 +76,11 @@
     for o, a in opts:
         if o == '-l':
             fnfilter = os.path.basename
-        if o == '-b':
+        elif o == '-b':
             rmode = 'rb'
-        if o == '-t':
+        elif o == '-t':
             rmode = 'r'
-        if o == '-s':
+        elif o == '-s':
             bufsize = int(a)
     if not args:
         args = ['-']