diff --git a/Tools/scripts/classfix.py b/Tools/scripts/classfix.py
index 332db12..26aa599 100755
--- a/Tools/scripts/classfix.py
+++ b/Tools/scripts/classfix.py
@@ -80,7 +80,7 @@
     return bad
 
 def fix(filename):
-##      dbg('fix(' + `filename` + ')\n')
+##  dbg('fix(' + `filename` + ')\n')
     try:
         f = open(filename, 'r')
     except IOError, msg:
diff --git a/Tools/scripts/dutree.py b/Tools/scripts/dutree.py
index 63b3e67..7a32533 100755
--- a/Tools/scripts/dutree.py
+++ b/Tools/scripts/dutree.py
@@ -42,8 +42,8 @@
         tsub, dsub = d[key]
         list.append((tsub, key))
         if tsub is not None: sum = sum + tsub
-##      if sum < total:
-##              list.append((total - sum, os.curdir))
+##  if sum < total:
+##      list.append((total - sum, os.curdir))
     list.sort()
     list.reverse()
     width = len(`list[0][0]`)
diff --git a/Tools/scripts/fixcid.py b/Tools/scripts/fixcid.py
index 836ceed..6f674c6 100755
--- a/Tools/scripts/fixcid.py
+++ b/Tools/scripts/fixcid.py
@@ -116,7 +116,7 @@
     return bad
 
 def fix(filename):
-##      dbg('fix(' + `filename` + ')\n')
+##  dbg('fix(' + `filename` + ')\n')
     if filename == '-':
         # Filter mode
         f = sys.stdin
@@ -226,15 +226,15 @@
 
 def fixline(line):
     global Program
-##      print '-->', `line`
+##  print '-->', `line`
     i = 0
     while i < len(line):
         i = Program.search(line, i)
         if i < 0: break
         found = Program.group(0)
-##              if Program is InsideCommentProgram: print '...',
-##              else: print '   ',
-##              print found
+##      if Program is InsideCommentProgram: print '...',
+##      else: print '   ',
+##      print found
         if len(found) == 2:
             if found == '/*':
                 Program = InsideCommentProgram
@@ -249,14 +249,14 @@
                     i = i + n
                     continue
                 if NotInComment.has_key(found):
-##                                      print 'Ignored in comment:',
-##                                      print found, '-->', subst
-##                                      print 'Line:', line,
+##                  print 'Ignored in comment:',
+##                  print found, '-->', subst
+##                  print 'Line:', line,
                     subst = found
-##                              else:
-##                                      print 'Substituting in comment:',
-##                                      print found, '-->', subst
-##                                      print 'Line:', line,
+##              else:
+##                  print 'Substituting in comment:',
+##                  print found, '-->', subst
+##                  print 'Line:', line,
             line = line[:i] + subst + line[i+n:]
             n = len(subst)
         i = i + n
diff --git a/Tools/scripts/fixnotice.py b/Tools/scripts/fixnotice.py
index a69a981..921d94e 100755
--- a/Tools/scripts/fixnotice.py
+++ b/Tools/scripts/fixnotice.py
@@ -30,7 +30,7 @@
     f.close()
     i = string.find(data, OLD_NOTICE)
     if i < 0:
-##         print "No old notice in", arg
+##      print "No old notice in", arg
         return
     data = data[:i] + NEW_NOTICE + data[i+len(OLD_NOTICE):]
     new = arg + ".new"
diff --git a/Tools/scripts/methfix.py b/Tools/scripts/methfix.py
index a9b7c21..cbbb964 100755
--- a/Tools/scripts/methfix.py
+++ b/Tools/scripts/methfix.py
@@ -78,7 +78,7 @@
     return bad
 
 def fix(filename):
-##      dbg('fix(' + `filename` + ')\n')
+##  dbg('fix(' + `filename` + ')\n')
     try:
         f = open(filename, 'r')
     except IOError, msg:
diff --git a/Tools/scripts/pathfix.py b/Tools/scripts/pathfix.py
index d4e3071..e1c6e73 100755
--- a/Tools/scripts/pathfix.py
+++ b/Tools/scripts/pathfix.py
@@ -87,7 +87,7 @@
     return bad
 
 def fix(filename):
-##      dbg('fix(' + `filename` + ')\n')
+##  dbg('fix(' + `filename` + ')\n')
     try:
         f = open(filename, 'r')
     except IOError, msg:
