/* * Copyright 1993, 1995 Christopher Seiwald. * * This file is part of Jam - see jam.c for Copyright information. */ /* * mkjambase.c - turn Jambase into a big C structure * * Usage: mkjambase jambase.c Jambase ... * * Results look like this: * * char *jambase[] = { * "...\n", * ... * 0 }; * * Handles \'s and "'s specially; knows to delete blank and comment lines. * * 11/04/02 (seiwald) - const-ing for string literals */ # include <stdio.h> # include <string.h> main( int argc, char **argv, char **envp ) { char buf[ 1024 ]; FILE *fin; FILE *fout; char *p; int doDotC = 0; if( argc < 3 ) { fprintf( stderr, "usage: %s jambase.c Jambase ...\n", argv[0] ); return -1; } if( !( fout = fopen( argv[1], "w" ) ) ) { perror( argv[1] ); return -1; } /* If the file ends in .c generate a C source file */ if( ( p = strrchr( argv[1], '.' ) ) && !strcmp( p, ".c" ) ) doDotC++; /* Now process the files */ argc -= 2, argv += 2; if( doDotC ) { fprintf( fout, "/* Generated by mkjambase from Jambase */\n" ); fprintf( fout, "const char *jambase[] = {\n" ); } for( ; argc--; argv++ ) { if( !( fin = fopen( *argv, "r" ) ) ) { perror( *argv ); return -1; } if( doDotC ) { fprintf( fout, "/* %s */\n", *argv ); } else { fprintf( fout, "### %s ###\n", *argv ); } while( fgets( buf, sizeof( buf ), fin ) ) { if( doDotC ) { char *p = buf; /* Strip leading whitespace. */ while( *p == ' ' || *p == '\t' || *p == '\n' ) p++; /* Drop comments and empty lines. */ if( *p == '#' || !*p ) continue; /* Copy */ putc( '"', fout ); for( ; *p && *p != '\n'; p++ ) switch( *p ) { case '\\': putc( '\\', fout ); putc( '\\', fout ); break; case '"': putc( '\\', fout ); putc( '"', fout ); break; default: putc( *p, fout ); break; } fprintf( fout, "\\n\",\n" ); } else { fprintf( fout, "%s", buf ); } } fclose( fin ); } if( doDotC ) fprintf( fout, "0 };\n" ); fclose( fout ); return 0; }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#3 | 3183 | Craig Mcpheeters | Integration of my jam mainline branch into my work branch. | ||
#2 | 785 | Craig Mcpheeters |
Integration from //guest/craig_mcpheeters/jam/src/... This work area now contains both the Alias|Wavefront changes, and the latest integrations from the mainline. There are some changes in this area which shouldn't be merged back into the mainline. As I merge this branch back into my jam/src/... branch, I'll leave out a few of the changes. |
||
#1 | 777 | Craig Mcpheeters |
Branch of my jam/src/... area. This new area establishes the integration base for the copy of Jam which has all the changes. |
||
//guest/craig_mcpheeters/jam/src/mkjambase.c | |||||
#2 | 617 | Craig Mcpheeters | Integration from mainline as of @3 | ||
#1 | 616 | Craig Mcpheeters | Integration from Jam mainline, as of @2 |