From 0efe960c045c1d8ade2166036cc390e3c43a0a37 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Wed, 12 Sep 2007 13:13:19 +0200 Subject: [PATCH] data2csrc determines variable names, shell compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit João Pinto pointed out that Tennix will not compile when not using bash as /bin/sh, as the makefile in data/ will complain about bad substitution. This has been worked around by making data2csrc generating the variable name on-the-fly if the variable name is not passed as second command line argument. --- data/data2csrc.c | 28 ++++++++++++++++++++++------ data/makefile | 4 ++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/data/data2csrc.c b/data/data2csrc.c index a705212..7344824 100644 --- a/data/data2csrc.c +++ b/data/data2csrc.c @@ -9,25 +9,41 @@ #include #include +#include int main( int argc, char** argv) { FILE *fp; - int c, x = 0; + int c, x = 0, i; + char filename[FILENAME_MAX], varname[FILENAME_MAX]; - if( argc != 3) { - fprintf( stderr, "Usage: %s /path/to/infile.dat name_of_variable\n", argv[0]); + if( argc != 3 && argc != 2) { + fprintf( stderr, "Usage: %s /path/to/infile.dat [name_of_variable]\n", argv[0]); exit(1); } - fp = fopen( argv[1], "rb"); + strcpy( filename, argv[1]); + + if( argc == 2) { + /* Determine variable name based on filename */ + strcpy( varname, (char*)basename( argv[1])); + for( i=0; i 'z') varname[i] = '_'; + } + } else { + strcpy( varname, argv[2]); + } + + fp = fopen( filename, "rb"); if( fp == NULL) { fprintf( stderr, "Cannot open file: %s\n", argv[1]); exit(1); } - printf( "const char %s[] = {", argv[2]); + printf( "/**\n * Automatically generated from \"%s\" by %s.\n **/\n", filename, (char*)basename( argv[0])); + printf( "const char %s[] = {", varname); while( (c = fgetc( fp)) != EOF) { if( x > 0) putchar(','); if( x++ % 20 == 0) putchar('\n'); printf( "%d", c); } - printf( "\n};\n"); + printf( "\n};\n\n"); fclose( fp); return 0; } diff --git a/data/makefile b/data/makefile index bcd47ad..ccdb31a 100644 --- a/data/makefile +++ b/data/makefile @@ -7,10 +7,10 @@ all: graphics_data.c sounds_data.c data2csrc: data2csrc.o graphics_data.c: data2csrc $(GRAPHICS) - (for i in $(GRAPHICS); do base=$${i%%.png}; ./data2csrc $$i $${base/-/_}; done)>graphics_data.c + (for i in $(GRAPHICS); do ./data2csrc $$i; done)>graphics_data.c sounds_data.c: data2csrc $(SOUNDS) - (for i in $(SOUNDS); do base=$${i%%.wav}; ./data2csrc $$i $${base/-/_}; done)>sounds_data.c + (for i in $(SOUNDS); do ./data2csrc $$i; done)>sounds_data.c clean: rm -f data2csrc *.o graphics_data.c sounds_data.c -- 2.11.4.GIT