Ping's new version -- more efficient at finding the keywords.
This commit is contained in:
parent
3d99e35884
commit
4d81984011
|
@ -60,58 +60,34 @@ def main():
|
||||||
else: optfile = "Lib/keyword.py"
|
else: optfile = "Lib/keyword.py"
|
||||||
|
|
||||||
# scan the source file for keywords
|
# scan the source file for keywords
|
||||||
try:
|
fp = open(iptfile)
|
||||||
fp = open(iptfile)
|
|
||||||
except IOError, err:
|
|
||||||
sys.stderr.write("I/O error reading from %s: %s\n" % (optfile, err))
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
strprog = regex.compile('"\([^"]+\)"')
|
strprog = regex.compile('"\([^"]+\)"')
|
||||||
labelprog = regex.compile('static[ \t]+label.*=[ \t]+{')
|
lines = []
|
||||||
keywordlist = []
|
|
||||||
while 1:
|
while 1:
|
||||||
line = fp.readline()
|
line = fp.readline()
|
||||||
if not line: break
|
if not line: break
|
||||||
if labelprog.search(line) > -1: break
|
if string.find(line, '{1, "') > -1 and strprog.search(line) > -1:
|
||||||
while line:
|
lines.append(" '" + strprog.group(1) + "',\n")
|
||||||
line = fp.readline()
|
|
||||||
if string.find(line, ';') > -1: break
|
|
||||||
if strprog.search(line) > -1: keywordlist.append(strprog.group(1))
|
|
||||||
fp.close()
|
fp.close()
|
||||||
|
lines.sort()
|
||||||
keywordlist.sort()
|
|
||||||
keywordlist.remove("EMPTY")
|
|
||||||
|
|
||||||
# load the output skeleton from the target
|
# load the output skeleton from the target
|
||||||
try:
|
fp = open(optfile)
|
||||||
fp = open(optfile)
|
format = fp.readlines()
|
||||||
format = fp.readlines()
|
fp.close()
|
||||||
fp.close()
|
|
||||||
except IOError, err:
|
|
||||||
sys.stderr.write("I/O error reading from %s: %s\n" % (optfile, err))
|
|
||||||
sys.exit(2)
|
|
||||||
|
|
||||||
|
# insert the lines of keywords
|
||||||
try:
|
try:
|
||||||
start = format.index("#--start keywords--\n") + 1
|
start = format.index("#--start keywords--\n") + 1
|
||||||
end = format.index("#--end keywords--\n")
|
end = format.index("#--end keywords--\n")
|
||||||
|
format[start:end] = lines
|
||||||
except ValueError:
|
except ValueError:
|
||||||
sys.stderr.write("target does not contain format markers\n")
|
sys.stderr.write("target does not contain format markers\n")
|
||||||
sys.exit(3)
|
sys.exit(1)
|
||||||
|
|
||||||
# insert the lines of keywords
|
|
||||||
lines = []
|
|
||||||
for keyword in keywordlist:
|
|
||||||
lines.append(" '" + keyword + "',\n")
|
|
||||||
format[start:end] = lines
|
|
||||||
|
|
||||||
# write the output file
|
# write the output file
|
||||||
try:
|
fp = open(optfile, 'w')
|
||||||
fp = open(optfile, 'w')
|
|
||||||
except IOError, err:
|
|
||||||
sys.stderr.write("I/O error writing to %s: %s\n" % (optfile, err))
|
|
||||||
sys.exit(4)
|
|
||||||
fp.write(string.join(format, ''))
|
fp.write(string.join(format, ''))
|
||||||
fp.close()
|
fp.close()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__": main()
|
||||||
main()
|
|
||||||
|
|
Loading…
Reference in New Issue