#!/usr/bin/perl use strict; # Convert the file given on the commandline into something which # can be compiled with C and linked into an executable. # Use the generated object module with the following declarations: # extern unsigned char ${ARGV[0]}[]; /* Array of data */ # extern int ${ARGV[0]}_size; /* Size of array */ # Note, .'s in the argument filename are converted to _'s open FILE, $ARGV[0] or die "usage: $0 file"; # "Slurp the whole file" undef $/; my $contents = ; # Replace .'s in the filename with _'s (since . is an operator in C) my $label = $ARGV[0]; $label =~ s/\./_/; print "FT_Byte $label\[\] = {\n"; for ( my $i = 0; $i < length $contents; $i += 16 ) { print join( ",", unpack( "C*", substr( $contents, $i, 16 ) ) ), ",\n"; } print "};\n"; print "const int ${label}_size = sizeof( $label );\n";