static void do_init_stuff( char **cmdline ) /*****************************************/ { char *env; char buff[80]; if( !MsgInit() ) exit(1); AsmInit( -1, -1, -1, -1 ); // initialize hash table strcpy( buff, "__WASM__=" BANSTR( _BANVER ) ); add_constant( buff ); ForceInclude = getenv( "FORCE" ); do_envvar_cmdline( "WASM" ); parse_cmdline( cmdline ); set_build_target(); get_os_include(); env = getenv( "INCLUDE" ); if( env != NULL ) AddStringToIncludePath( env ); if( !Options.quiet && !Options.banner_printed ) { Options.banner_printed = TRUE; trademark(); } open_files(); PushLineQueue(); AsmLookup( "$" ); // create "$" symbol for current segment counter }
static void get_os_include( void ) /********************************/ { char *env; char *tmp; /* add OS_include to the include path */ tmp = AsmTmpAlloc( strlen( Options.build_target ) + 10 ); strcpy( tmp, Options.build_target ); strcat( tmp, "_INCLUDE" ); env = getenv( tmp ); if( env != NULL ) { AddStringToIncludePath( env ); } }
static void SetInclude( void ) { AddStringToIncludePath( GetAFileName() ); }
static void get_fname( char *token, int type ) /********************************************/ /* * figure out the source file name & store it in AsmFiles * fill in default object file name if it is null */ { char name [ _MAX_PATH ]; char msgbuf[80]; PGROUP pg; PGROUP def; /* get filename for source file */ if( type == ASM ) { if( token == NULL ) { MsgGet( SOURCE_FILE, msgbuf ); Fatal( MSG_CANNOT_OPEN_FILE, msgbuf ); } if( AsmFiles.fname[ASM] != NULL ) { Fatal( MSG_TOO_MANY_FILES ); } _splitpath2( token, pg.buffer, &pg.drive, &pg.dir, &pg.fname, &pg.ext ); if( *pg.ext == '\0' ) { pg.ext = ASM_EXT; } _makepath( name, pg.drive, pg.dir, pg.fname, pg.ext ); AsmFiles.fname[ASM] = AsmAlloc( strlen( name ) + 1 ); strcpy( AsmFiles.fname[ASM], name ); _makepath( name, pg.drive, pg.dir, NULL, NULL ); /* add the source path to the include path */ AddStringToIncludePath( name ); if( AsmFiles.fname[OBJ] == NULL ) { /* set up default object and error filename */ pg.ext = OBJ_EXT; _makepath( name, NULL, NULL, pg.fname, pg.ext ); } else { _splitpath2( AsmFiles.fname[OBJ], def.buffer, &def.drive, &def.dir, &def.fname, &def.ext ); if( *def.fname == NULLC ) def.fname = pg.fname; if( *def.ext == NULLC ) def.ext = OBJ_EXT; _makepath( name, def.drive, def.dir, def.fname, def.ext ); AsmFree( AsmFiles.fname[OBJ] ); } AsmFiles.fname[OBJ] = AsmAlloc( strlen( name ) + 1 ); strcpy( AsmFiles.fname[OBJ], name ); if( AsmFiles.fname[ERR] == NULL ) { pg.ext = ERR_EXT; _makepath( name, NULL, NULL, pg.fname, pg.ext ); } else { _splitpath2( AsmFiles.fname[ERR], def.buffer, &def.drive, &def.dir, &def.fname, &def.ext ); if( *def.fname == NULLC ) def.fname = pg.fname; if( *def.ext == NULLC ) def.ext = ERR_EXT; _makepath( name, def.drive, def.dir, def.fname, def.ext ); AsmFree( AsmFiles.fname[ERR] ); } AsmFiles.fname[ERR] = AsmAlloc( strlen( name ) + 1 ); strcpy( AsmFiles.fname[ERR], name ); if( AsmFiles.fname[LST] == NULL ) { pg.ext = LST_EXT; _makepath( name, NULL, NULL, pg.fname, pg.ext ); } else { _splitpath2( AsmFiles.fname[LST], def.buffer, &def.drive, &def.dir, &def.fname, &def.ext ); if( *def.fname == NULLC ) def.fname = pg.fname; if( *def.ext == NULLC ) def.ext = LST_EXT; _makepath( name, def.drive, def.dir, def.fname, def.ext ); AsmFree( AsmFiles.fname[LST] ); } AsmFiles.fname[LST] = AsmAlloc( strlen( name ) + 1 ); strcpy( AsmFiles.fname[LST], name ); } else { /* get filename for object, error, or listing file */ _splitpath2( token, pg.buffer, &pg.drive, &pg.dir, &pg.fname, &pg.ext ); if( AsmFiles.fname[ASM] != NULL ) { _splitpath2( AsmFiles.fname[ASM], def.buffer, &def.drive, &def.dir, &def.fname, &def.ext ); if( *pg.fname == NULLC ) { pg.fname = def.fname; } } if( *pg.ext == NULLC ) { switch( type ) { case ERR: pg.ext = ERR_EXT; break; case LST: pg.ext = LST_EXT; break; case OBJ: pg.ext = OBJ_EXT; break; } } _makepath( name, pg.drive, pg.dir, pg.fname, pg.ext ); if( AsmFiles.fname[type] != NULL ) { AsmFree( AsmFiles.fname[type] ); } AsmFiles.fname[type] = AsmAlloc( strlen( name ) + 1 ); strcpy( AsmFiles.fname[type], name ); } }
static void SetInclude( void ) { AddStringToIncludePath( OptParm, OptScanPtr ); }