diff options
author | Nathan Binkert <binkertn@umich.edu> | 2006-12-17 18:58:05 -0800 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2006-12-17 18:58:05 -0800 |
commit | 2d09f30a6d564a9d6472abb408e3f25d5845d021 (patch) | |
tree | 6e4fe79bb3df449347b1ce04f971ec65e766bf42 /util/fixwhite | |
parent | 81996f855a2ffb05c70e904040c5da42a0666545 (diff) | |
download | gem5-2d09f30a6d564a9d6472abb408e3f25d5845d021.tar.xz |
Utilities for doing a format check for some elements of proper
m5 style and fixing whitespace. For whitespace, any tabs in
leading whitespace on a line are converted to spaces, and any
trailing whitespace is removed.
--HG--
extra : convert_revision : d0591663c028a388635fc71c6c1d31f700748cf6
Diffstat (limited to 'util/fixwhite')
-rwxr-xr-x | util/fixwhite | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/util/fixwhite b/util/fixwhite new file mode 100755 index 000000000..3bc1ff0bc --- /dev/null +++ b/util/fixwhite @@ -0,0 +1,83 @@ +#! /usr/bin/env python +# Copyright (c) 2006 The Regents of The University of Michigan +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Authors: Nathan Binkert + +import re +import os +import sys +from getopt import getopt, GetoptError + +tabs = re.compile(r'^[ \t]+') +def fixwhite(filename, tabsize): + try: + f = file(filename, 'r+') + except OSError, msg: + print 'could not open file %s: %s' % (filename, msg) + return + + lines = list(f) + + f.seek(0) + f.truncate() + + for line in lines: + if tabs.search(line): + newline = '' + for i,c in enumerate(line): + if c == ' ': + newline += ' ' + elif c == '\t': + newline += ' ' * (tabsize - len(newline) % tabsize) + else: + newline += line[i:] + break + + line = newline + + print >>f, line.rstrip() + +if __name__ == '__main__': + progname = sys.argv[0] + + def usage(code=None): + print >>sys.stderr, '''%s [-t <tabsize>] <filenames>''' % progname + if code is not None: + sys.exit(code) + + try: + opts, args = getopt(sys.argv[1:], '-t:') + except GetoptError: + usage(2) + + tabsize = 8 + for opt,arg in opts: + if opt == '-t': + tabsize = int(arg) + + for filename in args: + fixwhite(filename, tabsize) |