diff --git a/Tools/scripts/byext.py b/Tools/scripts/byext.py
index 93759bc..09610b0 100644
--- a/Tools/scripts/byext.py
+++ b/Tools/scripts/byext.py
@@ -17,7 +17,7 @@
             elif os.path.isfile(arg):
                 self.statfile(arg)
             else:
-                sys.stderr.write("Can't find %s\n" % file)
+                sys.stderr.write("Can't find %s\n" % arg)
                 self.addstats("<???>", "unknown", 1)
 
     def statdir(self, dir):
@@ -25,8 +25,8 @@
         try:
             names = os.listdir(dir)
         except os.error, err:
-            sys.stderr.write("Can't list %s: %s\n" % (file, err))
-            self.addstats(ext, "unlistable", 1)
+            sys.stderr.write("Can't list %s: %s\n" % (dir, err))
+            self.addstats("<dir>", "unlistable", 1)
             return
         names.sort()
         for name in names:
@@ -42,9 +42,9 @@
             else:
                 self.statfile(full)
 
-    def statfile(self, file):
-        head, ext = os.path.splitext(file)
-        head, base = os.path.split(file)
+    def statfile(self, filename):
+        head, ext = os.path.splitext(filename)
+        head, base = os.path.split(filename)
         if ext == base:
             ext = "" # E.g. .cvsignore is deemed not to have an extension
         ext = os.path.normcase(ext)
@@ -52,9 +52,9 @@
             ext = "<none>"
         self.addstats(ext, "files", 1)
         try:
-            f = open(file, "rb")
+            f = open(filename, "rb")
         except IOError, err:
-            sys.stderr.write("Can't open %s: %s\n" % (file, err))
+            sys.stderr.write("Can't open %s: %s\n" % (filename, err))
             self.addstats(ext, "unopenable", 1)
             return
         data = f.read()
