From c04dcc2e7d834218ef2d4194331e383402495ae1 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 20:07:22 +0200 Subject: Adding upstream version 2:20.4+dfsg. Signed-off-by: Daniel Baumann --- lib/libUPnP/Neptune/Extras/Scripts/CodeScanner.py | 150 ++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 lib/libUPnP/Neptune/Extras/Scripts/CodeScanner.py (limited to 'lib/libUPnP/Neptune/Extras/Scripts/CodeScanner.py') diff --git a/lib/libUPnP/Neptune/Extras/Scripts/CodeScanner.py b/lib/libUPnP/Neptune/Extras/Scripts/CodeScanner.py new file mode 100644 index 0000000..e06c0ef --- /dev/null +++ b/lib/libUPnP/Neptune/Extras/Scripts/CodeScanner.py @@ -0,0 +1,150 @@ +#! /usr/bin/python + +import os +import os.path +import re +import sys + +ErrorPattern = re.compile('([A-Z]{3}_ERROR_[A-Z_0-9]+)\s+=?\s*\(?([A-Z_0-9-][A-Z_0-9-+ ]+[A-Z_0-9])') +LoggerPattern = re.compile('NPT_SET_LOCAL_LOGGER\s*\([ "]*(\S+)[ "]*\)') +NakedErrorPattern = re.compile('return.*[ \(]..._FAILURE') +FilePatternH = re.compile('^.*\.h$') +FilePatternC = re.compile('^.*\.(c|cpp)$') + +Errors = {} +Codes = {} +Loggers = [] + +def ResolveErrors(): + keep_going = True + while keep_going: + keep_going = False + for key in Errors.keys(): + value = Errors[key] + if type(value) is str: + elements = [x.strip() for x in value.split('-')] + if len(elements[0]) == 0: + first = 0 + else: + first = elements[0] + if Errors.has_key(first): + first = Errors[first] + if not type(first) is str: + second = int(elements[1]) + Errors[key] = first-second + keep_going = True + + +def AnalyzeErrorCodes(file): + input = open(file) + for line in input.readlines(): + m = ErrorPattern.search(line) + if m: + Errors[m.group(1)] = m.group(2) + input.close() + +def ScanErrorCodes(top): + for root, dirs, files in os.walk(top): + for file in files: + if FilePatternH.match(file): + AnalyzeErrorCodes(os.path.join(root, file)) + + ResolveErrors() + for key in Errors: + #print key,"==>",Errors[key] + if (key.find("ERROR_BASE") > 1): continue + if Codes.has_key(Errors[key]): + raise Exception("duplicate error code: "+ str(key) +" --> " + str(Errors[key]) + "=" + Codes[Errors[key]]) + Codes[Errors[key]] = key + + sorted_keys = Codes.keys() + sorted_keys.sort() + sorted_keys.reverse() + last = 0 + for code in sorted_keys: + if type(code) != int: + continue + if code != last-1: + print + print code,"==>", Codes[code] + last = code + +def AnalyzeLoggers(file): + input = open(file) + for line in input.readlines(): + m = LoggerPattern.search(line) + if m: + if m.group(1) not in Loggers: + Loggers.append(m.group(1)) + input.close() + +def ScanLoggers(top): + for root, dirs, files in os.walk(top): + for file in files: + if FilePatternC.match(file): + AnalyzeLoggers(os.path.join(root, file)) + + Loggers.sort() + for logger in Loggers: + print logger + +def AnalyzeNakedErrors(file, prefix): + line_number = 0 + input = open(file) + for line in input.readlines(): + line_number += 1 + m = NakedErrorPattern.search(line) + if m: + print file[len(prefix):],line_number," --> ", line, + input.close() + +def ScanNakedErrors(top): + for root, dirs, files in os.walk(top): + for file in files: + if FilePatternC.match(file): + AnalyzeNakedErrors(os.path.join(root, file), top) + +def FindTabsInFile(file): + input = open(file) + for line in input.readlines(): + if line.find('\t') >= 0: + print "TAB found in", file + input.close() + return + input.close() + +def FindTabs(top): + for root, dirs, files in os.walk(top): + for file in files: + if FilePatternC.match(file) or FilePatternH.match(file): + FindTabsInFile(os.path.join(root, file)) + +#################################################### +# main +#################################################### +sys.argv.reverse() +sys.argv.pop() +action = None +top = None +while len(sys.argv): + arg = sys.argv.pop() + if arg == '--list-error-codes': + action = ScanErrorCodes + elif arg == '--list-loggers': + action = ScanLoggers + elif arg == '--list-naked-errors': + action = ScanNakedErrors + elif arg == '--find-tabs': + action = FindTabs + elif top == None: + top = arg + else: + raise "unexpected argument " + arg + +if not action or not top: + print "CodeScanner {--list-error-codes | --list-loggers | --find-tabs} " + sys.exit(1) + +action(top) + + -- cgit v1.2.3