Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg
This patch was generated by a script. Here's the source of the script for
future reference:
function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
! -wholename "*security/nss*" \
! -wholename "*/.hg*" \
! -wholename "obj-ff-dbg*" \
! -name nsXPCOMCID.h \
! -name prtypes.h \
-type f \
\( -iname "*.cpp" \
-o -iname "*.h" \
-o -iname "*.c" \
-o -iname "*.cc" \
-o -iname "*.idl" \
-o -iname "*.ipdl" \
-o -iname "*.ipdlh" \
-o -iname "*.mm" \) | \
xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}
convert PRInt8 int8_t
convert PRUint8 uint8_t
convert PRInt16 int16_t
convert PRUint16 uint16_t
convert PRInt32 int32_t
convert PRUint32 uint32_t
convert PRInt64 int64_t
convert PRUint64 uint64_t
convert PRIntn int
convert PRUintn unsigned
convert PRSize size_t
convert PROffset32 int32_t
convert PROffset64 int64_t
convert PRPtrdiff ptrdiff_t
convert PRFloat64 double
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import json
import os
import sys
import writeMakefile
def extractLines(fp):
lines = []
watch = False
for line in fp:
if line == '@@@ @@@ Failures\n':
watch = True
elif watch:
watch = False
idx = line.index('@@@')
lines.append((line[:idx], line[idx + 3:]))
return lines
def ensuredir(path):
dir = path[:path.rfind('/')]
if not os.path.exists(dir):
os.makedirs(dir)
def dumpFailures(lines):
files = []
for url, objstr in lines:
if objstr == '{}\n':
continue
jsonpath = 'failures/' + url + '.json'
files.append(jsonpath)
ensuredir(jsonpath)
obj = json.loads(objstr)
formattedobj = json.dumps(obj, sort_keys=True, indent=2, separators=(',', ': '))
fp = open(jsonpath, 'w')
fp.write(formattedobj + '\n')
fp.close()
return files
def writeMakefiles(files):
pathmap = {}
for path in files:
dirp, leaf = path.rsplit('/', 1)
pathmap.setdefault(dirp, []).append(leaf)
for k, v in pathmap.iteritems():
result = writeMakefile.substMakefile('parseFailures.py', 'dom/imptests/' + k, [], v)
fp = open(k + '/Makefile.in', 'wb')
fp.write(result)
fp.close()
def main(logPath):
fp = open(logPath, 'rb')
lines = extractLines(fp)
fp.close()
files = dumpFailures(lines)
writeMakefiles(files)
if __name__ == '__main__':
if len(sys.argv) < 2:
print "Please pass the path to the logfile from which failures should be extracted."
main(sys.argv[1])