Update to 2.7.3
[profile/ivi/python.git] / Tools / scripts / untabify.py
1 #! /usr/bin/env python
2
3 "Replace tabs with spaces in argument files.  Print names of changed files."
4
5 import os
6 import sys
7 import getopt
8
9 def main():
10     tabsize = 8
11     try:
12         opts, args = getopt.getopt(sys.argv[1:], "t:")
13         if not args:
14             raise getopt.error, "At least one file argument required"
15     except getopt.error, msg:
16         print msg
17         print "usage:", sys.argv[0], "[-t tabwidth] file ..."
18         return
19     for optname, optvalue in opts:
20         if optname == '-t':
21             tabsize = int(optvalue)
22
23     for filename in args:
24         process(filename, tabsize)
25
26 def process(filename, tabsize, verbose=True):
27     try:
28         f = open(filename)
29         text = f.read()
30         f.close()
31     except IOError, msg:
32         print "%r: I/O error: %s" % (filename, msg)
33         return
34     newtext = text.expandtabs(tabsize)
35     if newtext == text:
36         return
37     backup = filename + "~"
38     try:
39         os.unlink(backup)
40     except os.error:
41         pass
42     try:
43         os.rename(filename, backup)
44     except os.error:
45         pass
46     with open(filename, "w") as f:
47         f.write(newtext)
48     if verbose:
49         print filename
50
51 if __name__ == '__main__':
52     main()