home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
debug
/
Snooper
/
Snoopy
/
Support
/
makeoffsets.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-06-25
|
4KB
|
112 lines
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <exec/types.h>
#include <dos/dos.h>
#include <dos/rdargs.h>
#include <clib/dos_protos.h>
#define TEMPLATE "FILES/A/M,INCPATH/K,INCSUFFIX/K,SKIPPREFIX/K,OUTPATH/K,OUTSUFFIX/K"
#define OPT_FILES 0
#define OPT_INCPATH 1
#define OPT_INCPREFIX 2
#define OPT_SKIPPREFIX 3
#define OPT_OUTPATH 4
#define OPT_OUTPREFIX 5
#define OPT_COUNT 6
LONG opts[OPT_COUNT];
char *ver="\0$VER: makeoffsets Snoopy Support Tool 1.0 (01.01.94)";
char *includePath = "include:";
char *includeSuffix = ".i";
char *skipPrefix = "_LVO";
char *outputPath = "";
char *outputSuffix = "";
extern struct Library *DOSBase;
void BuildOffsets( char *filename )
{
char buffer[256];
FILE *source,*target;
sprintf( buffer, "%s%s%s", includePath, filename, includeSuffix );
if( ( source = fopen( buffer, "r" ) ) != NULL )
{
sprintf( buffer, "%s%s%s", outputPath, filename, outputSuffix );
if( ( target = fopen( buffer, "w" ) ) != NULL )
{
char *cp,*result,*code;
printf("Creating SNOOPY Includefile \"%s\"....", buffer );
while( !feof( source ) )
{
fgets( buffer, 256, source );
result = NULL;
// note: this code my look stupid, but kids, I can do it!
for( cp=buffer; *cp && !isspace( *cp ); cp++ );
if( *cp )
{
for( *(cp++)=0; *cp && isspace( *cp ); cp++ );
if( *cp )
{
for( ++cp; *cp && !isspace( *cp ); cp++ );
if( *cp )
{
for( ++cp; *cp && isspace( *cp ); cp++ );
if( *cp && (*(cp++)=='-') )
{
for( result=cp; *cp && isdigit( *cp ); cp++ ); *cp=0;
if( !strncmp( buffer, skipPrefix, strlen(skipPrefix) ) )
code = buffer+strlen(skipPrefix);
else
code = buffer;
fprintf( target, "define=%s,-%s\n",code,result);
}
}
}
}
}
printf( "Done!\n");
fclose( target );
}
else printf( "ERROR, cannot open target \"%s\"\n", buffer );
fclose( source );
}
else printf( "ERROR, cannot open source \"%s\"\n", buffer );
} // BuildOffsets()
int main( void )
{
struct RDArgs *argsptr;
if( ( argsptr = ReadArgs( TEMPLATE, opts, NULL ) ) != NULL )
{
char **sptr;
if( opts[OPT_INCPATH] ) includePath = (char *)(opts[OPT_INCPATH ]);
if( opts[OPT_INCPREFIX] ) includeSuffix = (char *)(opts[OPT_INCPREFIX]);
if( opts[OPT_SKIPPREFIX]) skipPrefix = (char *)(opts[OPT_SKIPPREFIX]);
if( opts[OPT_OUTPATH] ) outputPath = (char *)(opts[OPT_OUTPATH ]);
if( opts[OPT_OUTPREFIX] ) outputSuffix = (char *)(opts[OPT_OUTPREFIX]);
sptr = (char **)(opts[OPT_FILES]);
while( *sptr ) BuildOffsets( *(sptr++) );
FreeArgs( argsptr );
}
else
{
PrintFault( IoErr(), NULL );
return RETURN_ERROR;
}
return RETURN_OK;
}