diff options
author | Korey Sewell <ksewell@umich.edu> | 2009-05-11 19:44:34 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2009-05-11 19:44:34 -0400 |
commit | a63cc2ff5fbba0e42a7aa39bfce6b6e2310fd52a (patch) | |
tree | 0952c5678b449ffd8def645fec2b714c4960df9e /src/mem/gems_common/ioutil/embedtext.py | |
parent | eea2b02b04a3076969dd607aca739b96d94b6155 (diff) | |
parent | f21e80ec72cf68ad859f18a2886297004ea9f959 (diff) | |
download | gem5-a63cc2ff5fbba0e42a7aa39bfce6b6e2310fd52a.tar.xz |
Merge Ruby Stuff
Diffstat (limited to 'src/mem/gems_common/ioutil/embedtext.py')
-rw-r--r-- | src/mem/gems_common/ioutil/embedtext.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/mem/gems_common/ioutil/embedtext.py b/src/mem/gems_common/ioutil/embedtext.py new file mode 100644 index 000000000..64e1c97f3 --- /dev/null +++ b/src/mem/gems_common/ioutil/embedtext.py @@ -0,0 +1,54 @@ + +import sys + +#--------------------------------------------------------------------------- + +class embedText: + """ + embedText converts a text file into a file that can be embedded in C + using an #include statement, that defines a \"const char *\" pointing + to the same text. + + This is useful to embed scripts and configuration files in object files. + """ + def __init__(self, filename): + self.filename = filename + self.escape = [ "\'", "\"", "\\", "\?" ] + + def write(self, outputfile, varname): + # reads the text file in, line by line, converting it to a C string + fin = open( self.filename, 'r' ) + fout= open( outputfile, 'w' ) + fout.write("static const char *%s =\n" % varname); + l = " " + while l != "": + l = fin.readline() + + # add escape sequences for the characters in escape + fout.write("\"") + for char in l: + if char == "\n": + break + if char in self.escape: + fout.write( "\\" ) + fout.write( char ) + else: + fout.write( char ) + fout.write("\\n\"\n"); + fout.write(";\n"); + fin.close() + fout.close() + +#--------------------------------------------------------------------------- + +if __name__ == "__main__": + if len(sys.argv) != 4: + print len(sys.argv) + print "usage:", sys.argv[0], " input-file output-file varname" + sys.exit(1) + inputfile = sys.argv[1] + outputfile = sys.argv[2] + varname = sys.argv[3] + print "generating embedded text file: %s from %s\n" % (outputfile, inputfile) + inc = embedText( inputfile ) + inc.write( outputfile, varname ) |