[cig-commits] r9325 - cs/benchmark/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Wed Feb 13 15:58:05 PST 2008


Author: luis
Date: 2008-02-13 15:58:05 -0800 (Wed, 13 Feb 2008)
New Revision: 9325

Added:
   cs/benchmark/cigma/trunk/src/freeze.py
Log:
Added python script to store the contents of a file inside a string literal.


Added: cs/benchmark/cigma/trunk/src/freeze.py
===================================================================
--- cs/benchmark/cigma/trunk/src/freeze.py	                        (rev 0)
+++ cs/benchmark/cigma/trunk/src/freeze.py	2008-02-13 23:58:05 UTC (rev 9325)
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""freeze.py
+
+This script will store the contents of a given file inside a
+C/C++ string literal.
+"""
+
+import sys
+
+def quote(s):
+    r = repr(s)
+    if len(r) > 2:
+        a,b = r[0],r[-1]
+        r = r[1:-1]
+        r = r.replace(r'\\','\\')
+        if a == b == "'":
+            r = r.replace(r"\'","'")
+            r = r.replace('"',r'\"')
+        elif a == b == '"':
+            r = r.replace(r'\"','"')
+        else:
+            raise Exception("Bad repr()?")
+        return r
+    return ''
+
+def escape(s):
+    return '"' + quote(s) + '"'
+
+def freeze(filename, varname="foobar"):
+    fp = open(filename, "" + 'r')
+
+    prefix = "    "
+    print "const char %s[] = \\" % varname
+    for line in fp:
+        line2 = prefix + escape(line)
+        #print line2 + " <-- " + repr(line)
+        print line2
+    print prefix + '"";'
+    fp.close()
+
+
+def main(argv=None):
+    if argv == None:
+        argv = sys.argv[1:]
+    if len(argv) == 0:
+        return 1
+    elif len(argv) == 1:
+        freeze(filename=argv[0])
+        return 0
+    elif len(argv) >= 2:
+        freeze(filename=argv[0],
+               varname=argv[1])
+        return 0
+    else:
+        return 2
+
+if __name__ == "__main__":
+    sys.exit(main())


Property changes on: cs/benchmark/cigma/trunk/src/freeze.py
___________________________________________________________________
Name: svn:executable
   + *



More information about the cig-commits mailing list