garnet: Split network power in ruby.stats
[gem5.git] / util / fixwhite
1 #! /usr/bin/env python
2 # Copyright (c) 2006 The Regents of The University of Michigan
3 # All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are
7 # met: redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer;
9 # redistributions in binary form must reproduce the above copyright
10 # notice, this list of conditions and the following disclaimer in the
11 # documentation and/or other materials provided with the distribution;
12 # neither the name of the copyright holders nor the names of its
13 # contributors may be used to endorse or promote products derived from
14 # this software without specific prior written permission.
15 #
16 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #
28 # Authors: Nathan Binkert
29
30 import re
31 import os
32 import sys
33 from getopt import getopt, GetoptError
34
35 tabs = re.compile(r'^[ \t]+')
36 def fixwhite(filename, tabsize):
37 try:
38 f = file(filename, 'r+')
39 except OSError, msg:
40 print 'could not open file %s: %s' % (filename, msg)
41 return
42
43 lines = list(f)
44
45 f.seek(0)
46 f.truncate()
47
48 for line in lines:
49 if tabs.search(line):
50 newline = ''
51 for i,c in enumerate(line):
52 if c == ' ':
53 newline += ' '
54 elif c == '\t':
55 newline += ' ' * (tabsize - len(newline) % tabsize)
56 else:
57 newline += line[i:]
58 break
59
60 line = newline
61
62 print >>f, line.rstrip()
63
64 if __name__ == '__main__':
65 progname = sys.argv[0]
66
67 def usage(code=None):
68 print >>sys.stderr, '''%s [-t <tabsize>] <filenames>''' % progname
69 if code is not None:
70 sys.exit(code)
71
72 try:
73 opts, args = getopt(sys.argv[1:], '-t:')
74 except GetoptError:
75 usage(2)
76
77 tabsize = 8
78 for opt,arg in opts:
79 if opt == '-t':
80 tabsize = int(arg)
81
82 for filename in args:
83 fixwhite(filename, tabsize)