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