]> git.proxmox.com Git - mirror_frr.git/blame - tools/stringmangle.py
Merge pull request #10323 from opensourcerouting/ospf6-lsa-stats
[mirror_frr.git] / tools / stringmangle.py
CommitLineData
93195af6
DL
1# 2020 by David Lamparter, placed in the public domain.
2
3import sys
4import os
5import re
6import argparse
7
8wrap_res = [
701a0192 9 (re.compile(r'(?<!\\n)"\s*\n\s*"', re.M), r""),
93195af6
DL
10]
11pri_res = [
701a0192 12 (re.compile(r'(PRI[udx][0-9]+)\s*\n\s*"', re.M), r'\1"'),
13 (re.compile(r'"\s*PRI([udx])32\s*"'), r"\1"),
14 (re.compile(r'"\s*PRI([udx])32'), r'\1"'),
15 (re.compile(r'"\s*PRI([udx])16\s*"'), r"h\1"),
16 (re.compile(r'"\s*PRI([udx])16'), r'h\1"'),
17 (re.compile(r'"\s*PRI([udx])8\s*"'), r"hh\1"),
18 (re.compile(r'"\s*PRI([udx])8'), r'hh\1"'),
93195af6
DL
19]
20
701a0192 21
93195af6 22def main():
701a0192 23 argp = argparse.ArgumentParser(description="C string mangler")
24 argp.add_argument("--unwrap", action="store_const", const=True)
25 argp.add_argument("--pri8-16-32", action="store_const", const=True)
26 argp.add_argument("files", type=str, nargs="+")
93195af6
DL
27 args = argp.parse_args()
28
29 regexes = []
30 if args.unwrap:
31 regexes.extend(wrap_res)
32 if args.pri8_16_32:
33 regexes.extend(pri_res)
34 if len(regexes) == 0:
701a0192 35 sys.stderr.write("no action selected to execute\n")
93195af6
DL
36 sys.exit(1)
37
38 l = 0
39
40 for fn in args.files:
701a0192 41 sys.stderr.write(fn + "\033[K\r")
42 with open(fn, "r") as ifd:
93195af6
DL
43 data = ifd.read()
44
45 newdata = data
46 n = 0
47 for regex, repl in regexes:
48 newdata, m = regex.subn(repl, newdata)
49 n += m
50
51 if n > 0:
701a0192 52 sys.stderr.write("changed: %s\n" % fn)
53 with open(fn + ".new", "w") as ofd:
93195af6 54 ofd.write(newdata)
701a0192 55 os.rename(fn + ".new", fn)
93195af6
DL
56 l += 1
57
701a0192 58 sys.stderr.write("%d files changed.\n" % (l))
59
93195af6
DL
60
61main()