annotate Tools/scripts/untabify.py @ 25838:8540887bcec6 2.2

Backport of 2.183: Fix memory leak in add_subclass() found by NealN with valgrind.
author Guido van Rossum <guido@python.org>
date Fri, 18 Oct 2002 13:42:21 +0000
parents 0379eb7be323
children 8a7a2f1f88f0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9098
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 #! /usr/bin/env python
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 "Replace tabs with spaces in argument files. Print names of changed files."
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 import os
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 import sys
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 import string
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 import getopt
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 def main():
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 tabsize = 8
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 try:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 opts, args = getopt.getopt(sys.argv[1:], "t:")
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 if not args:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 raise getopt.error, "At least one file argument required"
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 except getopt.error, msg:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 print msg
9412
0379eb7be323 Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de notices:
Guido van Rossum <guido@python.org>
parents: 9098
diff changeset
18 print "usage:", sys.argv[0], "[-t tabwidth] file ..."
9098
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 return
9412
0379eb7be323 Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de notices:
Guido van Rossum <guido@python.org>
parents: 9098
diff changeset
20 for optname, optvalue in opts:
0379eb7be323 Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de notices:
Guido van Rossum <guido@python.org>
parents: 9098
diff changeset
21 if optname == '-t':
0379eb7be323 Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de notices:
Guido van Rossum <guido@python.org>
parents: 9098
diff changeset
22 tabsize = int(optvalue)
9098
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 for file in args:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 process(file, tabsize)
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
26
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 def process(file, tabsize):
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 try:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 f = open(file)
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 text = f.read()
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 f.close()
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 except IOError, msg:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 print "%s: I/O error: %s" % (`file`, str(msg))
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 return
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 newtext = string.expandtabs(text, tabsize)
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 if newtext == text:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 return
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 backup = file + "~"
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 try:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 os.unlink(backup)
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 except os.error:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 pass
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 try:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 os.rename(file, backup)
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 except os.error:
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 pass
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 f = open(file, "w")
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 f.write(newtext)
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 f.close()
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 print file
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
51
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 if __name__ == '__main__':
b826e50e9573 Utility to untabify stubber results.
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 main()