#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# (c) 2007 Sebastian Schildt, Leuphana Universität Lüneburg
# This simple script converts "anything", e.g. any file into a C char array
# It requries at least Python 2.4
#
# Start with python any2c.py to get some usage notes
#
# This is Public Domain. 



from optparse import OptionParser
import sys

parser = OptionParser()

parser.add_option("-i", "--infile", dest="filein",                  help="read data from FILE. Omit to read from stdin", metavar="FILE")
parser.add_option("-o", "--oufile", dest="fileout",                  help="write C Array to FILE. Omit to write to stdout", metavar="FILE")
parser.add_option("-n", "--name", dest="arrayname", default="data",                  help="C array has identifier ID", metavar="ID")  
parser.add_option("-w", "--width", dest="width", default="24", type="int",                  help="NUM bytes per line in output", metavar="num")                                             parser.add_option("-c", "--const",                  action="store_true", dest="const", default=False,                  help="Create const array")(options, args) = parser.parse_args()


if options.filein == None:
    f=sys.stdin
else:
    f=open(options.filein, 'r')

if options.fileout == None:
    outfile=sys.stdout
else:
    outfile=open(options.fileout, 'w')




current=f.read(1)
lookahead=f.read(1)

#write prefix 
if options.const:
    outfile.write("const ")
outfile.write("char "+options.arrayname+"[] = {\n")

char=0
while lookahead != "":
    outfile.write(hex(ord(current))+", ")
    char+=1
    if char==options.width:
        outfile.write("\\\n")
        char=0;
    current=lookahead
    lookahead=f.read(1)
    
    
#write suffix
outfile.write(hex(ord(current))+"\n};\n")
