summaryrefslogtreecommitdiff
path: root/devtools/p4debugscan.py
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /devtools/p4debugscan.py
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'devtools/p4debugscan.py')
-rw-r--r--devtools/p4debugscan.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/devtools/p4debugscan.py b/devtools/p4debugscan.py
new file mode 100644
index 0000000..462e8cf
--- /dev/null
+++ b/devtools/p4debugscan.py
@@ -0,0 +1,59 @@
+
+import sys, re, os, stat
+from ctypes import *
+
+
+if len( sys.argv ) < 3:
+ print 'p4debugscan.py scans for debug DLLs in the last N revisions of a file in Perforce'
+ print 'usage: p4debugscan.py filename N'
+ print 'alt : p4debugscan.py filename -1 (will only look at filename on disk)'
+ print 'ex : p4debugscan.py //valvegames/rel/hl2/game/bin/engine.dll 10'
+ print ' (looks for debug versions in the past 10 revisions of engine.dll)'
+ sys.exit( 1 )
+
+filename = sys.argv[1]
+nRevisions = sys.argv[2]
+
+
+if nRevisions == '-1':
+ hdll = windll.kernel32.LoadLibraryA( filename )
+ fn_addr = windll.kernel32.GetProcAddress( hdll, "BuiltDebug" )
+ windll.kernel32.FreeLibrary( hdll )
+
+ if fn_addr == 0:
+ print '%s: RELEASE' % (filename)
+ else:
+ print '%s: DEBUG' % (filename)
+else:
+ # Get the revisions list.
+ f = os.popen( 'p4 changes -m %s %s' % (nRevisions, filename) )
+ str = f.read()
+ f.close()
+
+
+ changelistNumbers = []
+ myRE = re.compile( r'change (?P<num>\d+?) on (?P<date>.+?) ', re.IGNORECASE )
+ while 1:
+ m = myRE.search( str )
+ if m:
+ str = str[m.end():]
+ changelistNumbers.append( [m.group('num'), m.group('date')] )
+ else:
+ break
+
+ testDLLFilename = 'p4debugscan_test.dll'
+
+ for x in changelistNumbers:
+ os.system( 'p4 print -q -o %s %s@%s' % (testDLLFilename, filename, x[0]) )
+
+ hdll = windll.kernel32.LoadLibraryA( testDLLFilename )
+ fn_addr = windll.kernel32.GetProcAddress( hdll, "BuiltDebug" )
+ windll.kernel32.FreeLibrary( hdll )
+
+ if fn_addr == 0:
+ print '%s: %s@%s - RELEASE' % (x[1], filename, x[0])
+ else:
+ print '%s: %s@%s - DEBUG' % (x[1], filename, x[0])
+
+ os.chmod( testDLLFilename, stat.S_IWRITE | stat.S_IREAD )
+ os.unlink( testDLLFilename )