PageRenderTime 54ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/util/fixwhite

https://bitbucket.org/musleh123/gem5_cetus
Python | 83 lines | 50 code | 5 blank | 28 comment | 4 complexity | 9d2a4cab1f200ce75dc92907d0a21a73 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1
  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. import re
  30. import os
  31. import sys
  32. from getopt import getopt, GetoptError
  33. tabs = re.compile(r'^[ \t]+')
  34. def fixwhite(filename, tabsize):
  35. try:
  36. f = file(filename, 'r+')
  37. except OSError, msg:
  38. print 'could not open file %s: %s' % (filename, msg)
  39. return
  40. lines = list(f)
  41. f.seek(0)
  42. f.truncate()
  43. for line in lines:
  44. if tabs.search(line):
  45. newline = ''
  46. for i,c in enumerate(line):
  47. if c == ' ':
  48. newline += ' '
  49. elif c == '\t':
  50. newline += ' ' * (tabsize - len(newline) % tabsize)
  51. else:
  52. newline += line[i:]
  53. break
  54. line = newline
  55. print >>f, line.rstrip()
  56. if __name__ == '__main__':
  57. progname = sys.argv[0]
  58. def usage(code=None):
  59. print >>sys.stderr, '''%s [-t <tabsize>] <filenames>''' % progname
  60. if code is not None:
  61. sys.exit(code)
  62. try:
  63. opts, args = getopt(sys.argv[1:], '-t:')
  64. except GetoptError:
  65. usage(2)
  66. tabsize = 8
  67. for opt,arg in opts:
  68. if opt == '-t':
  69. tabsize = int(arg)
  70. for filename in args:
  71. fixwhite(filename, tabsize)