diff options
author | Matt Cotter <matt.cotter@mongodb.com> | 2016-11-07 14:41:29 -0500 |
---|---|---|
committer | Matt Cotter <matt.cotter@mongodb.com> | 2016-11-17 11:44:59 -0500 |
commit | 47653843a0d97cb37ffb736febfeb139c532cd23 (patch) | |
tree | 512128ace092a324d468de6634f3f56483c70576 /site_scons | |
parent | 229574021f47ec966ba39989b8737ab30400c19c (diff) | |
download | mongo-47653843a0d97cb37ffb736febfeb139c532cd23.tar.gz |
SERVER-26642 use char arrays instead of str literals for js code
Diffstat (limited to 'site_scons')
-rw-r--r-- | site_scons/site_tools/jstoh.py | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/site_scons/site_tools/jstoh.py b/site_scons/site_tools/jstoh.py index 5ae9471f108..62424a6cd4f 100644 --- a/site_scons/site_tools/jstoh.py +++ b/site_scons/site_tools/jstoh.py @@ -1,55 +1,55 @@ import os import sys + def jsToHeader(target, source): outFile = target - h = ['#include "mongo/base/string_data.h"' - ,'namespace mongo {' - ,'struct JSFile{ const char* name; const StringData& source; };' - ,'namespace JSFiles{' - ] + h = [ + '#include "mongo/base/string_data.h"', + 'namespace mongo {', + 'struct JSFile{ const char* name; const StringData& source; };', + 'namespace JSFiles{', + ] - def cppEscape(s): - s = s.rstrip() - s = s.replace( '\\', '\\\\' ) - s = s.replace( '"', r'\"' ) - return s + def lineToChars(s): + return ','.join(str(ord(c)) for c in (s.rstrip() + '\n')) + ',' for s in source: filename = str(s) objname = os.path.split(filename)[1].split('.')[0] stringname = '_jscode_raw_' + objname - h.append('const StringData ' + stringname + " = ") + h.append('const char ' + stringname + "[] = {") - for l in open( filename, 'r' ): - h.append( '"' + cppEscape(l) + r'\n" ' ) + with open(filename, 'r') as f: + for line in f: + h.append(lineToChars(line)) - h.append(";") - h.append('extern const JSFile %s;'%objname) #symbols aren't exported w/o this - h.append('const JSFile %s = { "%s", %s };'%(objname, filename.replace('\\', '/'), stringname)) + h.append("0};") + # symbols aren't exported w/o this + h.append('extern const JSFile %s;' % objname) + h.append('const JSFile %s = { "%s", StringData(%s) };' % + (objname, filename.replace('\\', '/'), stringname)) h.append("} // namespace JSFiles") h.append("} // namespace mongo") h.append("") - text = '\n'.join(h); + text = '\n'.join(h) print "writing: %s" % outFile - out = open( outFile, 'wb' ) - try: - out.write( text ) - finally: - out.close() + with open(outFile, 'wb') as out: + try: + out.write(text) + finally: + out.close() if __name__ == "__main__": if len(sys.argv) < 3: print "Must specify [target] [source] " - sys.exit(1); + sys.exit(1) jsToHeader(sys.argv[1], sys.argv[2:]) - - |