mirror of
https://github.com/mongodb/mongo.git
synced 2024-11-29 16:47:28 +01:00
86 lines
2.6 KiB
Python
Executable File
86 lines
2.6 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import os
|
|
import sys
|
|
import re
|
|
|
|
def getAllSourceFiles( arr=None , prefix="." ):
|
|
if arr is None:
|
|
arr = []
|
|
|
|
for x in os.listdir( prefix ):
|
|
if x.startswith( "." ) or x.startswith( "pcre-" ) or x.startswith( "32bit" ) or x.startswith( "mongodb-" ) or x.startswith("debian") or x.startswith( "mongo-cxx-driver" ):
|
|
continue
|
|
full = prefix + "/" + x
|
|
if os.path.isdir( full ) and not os.path.islink( full ):
|
|
getAllSourceFiles( arr , full )
|
|
else:
|
|
if full.endswith( ".cpp" ) or full.endswith( ".h" ) or full.endswith( ".c" ):
|
|
arr.append( full )
|
|
|
|
return arr
|
|
|
|
assertNames = [ "uassert" , "massert" ]
|
|
|
|
def assignErrorCodes():
|
|
cur = 10000
|
|
for root in assertNames:
|
|
for x in getAllSourceFiles():
|
|
print( x )
|
|
didAnything = False
|
|
fixed = ""
|
|
for line in open( x ):
|
|
s = line.partition( root + "(" )
|
|
if s[1] == "" or line.startswith( "#define " + root):
|
|
fixed += line
|
|
continue
|
|
fixed += s[0] + root + "( " + str( cur ) + " , " + s[2]
|
|
cur = cur + 1
|
|
didAnything = True
|
|
if didAnything:
|
|
out = open( x , 'w' )
|
|
out.write( fixed )
|
|
out.close()
|
|
|
|
|
|
def readErrorCodes( callback ):
|
|
ps = [ re.compile( "([um]asser(t|ted)) *\( *(\d+)" ) ,
|
|
re.compile( "(User|Msg)Exceptio(n)\( *(\d+)" )
|
|
]
|
|
for x in getAllSourceFiles():
|
|
lineNum = 1
|
|
for line in open( x ):
|
|
for p in ps:
|
|
for m in p.findall( line ):
|
|
callback( x , lineNum , line , m[2] )
|
|
lineNum = lineNum + 1
|
|
|
|
|
|
def getNextCode():
|
|
highest = [0]
|
|
def check( fileName , lineNum , line , code ):
|
|
code = int( code )
|
|
if code > highest[0]:
|
|
highest[0] = code
|
|
readErrorCodes( check )
|
|
return highest[0] + 1
|
|
|
|
def checkErrorCodes():
|
|
seen = {}
|
|
errors = []
|
|
def checkDups( fileName , lineNum , line , code ):
|
|
if code in seen:
|
|
print( "DUPLICATE IDS" )
|
|
print( "%s:%d:%s %s" % ( fileName , lineNum , line.strip() , code ) )
|
|
print( "%s:%d:%s %s" % seen[code] )
|
|
errors.append( seen[code] )
|
|
seen[code] = ( fileName , lineNum , line , code )
|
|
readErrorCodes( checkDups )
|
|
return len( errors ) == 0
|
|
|
|
if __name__ == "__main__":
|
|
ok = checkErrorCodes()
|
|
print( "ok:" + str( ok ) )
|
|
print( "next: " + str( getNextCode() ) )
|
|
|