1from optparse import OptionParser 2import os 3import re 4import sys 5 6styles = { 7 "bsd": 8 "/* -*- mode: c; c-file-style: \"bsd\"; indent-tabs-mode: t -*- */\n", 9 "krb5": 10 "/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */\n" 11 } 12 13def dofile(fname, style): 14 changed = False 15 newname = fname + ".new" 16 infile = open(fname) 17 outfile = open(newname, "w") 18 first = next(infile) 19 if (first != style): 20 changed = True 21 outfile.write(style) 22 if re.match(r"""\s*/\*\s*-\*-.*-\*-\s*\*/""", first): 23 # Replace first line if it was already a local variables line. 24 pass 25 else: 26 outfile.write(first) 27 28 # Simply copy remaining lines. 29 for line in infile: 30 outfile.write(line) 31 32 infile.close() 33 outfile.close() 34 35 if changed: 36 os.rename(newname, fname) 37 else: 38 os.remove(newname) 39 40parser = OptionParser() 41parser.add_option("--cstyle", action="store", dest="style", 42 choices=("bsd", "krb5"), default="krb5") 43(options, args) = parser.parse_args() 44 45for fname in args: 46 print(fname) 47 dofile(fname, styles[options.style]) 48