void AddGrpdef( unsigned_16 grpidx, unsigned_16 segidx ) { /********************************************************/ Grpdeflist *entry; Grpdeflist *wkentry; int k; if( segidx == 0 ) { /* start new grpdef */ entry = malloc( sizeof(Grpdeflist) ); if( entry == NULL ) { OutputSetFH( stdout ); Output( CRLF "**FATAL** Out of memory!" CRLF ); leave( 21 ); } entry->next = NULL; entry->grpind = grpidx; for( k = 0; k < MAXGRPSEGS; ++k ) { entry->segidx[ k ] = 0; /* no members yet */ } if( Grpdefs == NULL ) { Grpdefs = entry; } else { wkentry = Grpdefs; for ( ;; ) { if( wkentry->next == NULL ) { break; } wkentry = wkentry->next; } wkentry->next = entry; } } else { /* add member to grp*/ if( Grpdefs == NULL ) { OutputSetFH( stdout ); Output( CRLF "**FATAL** No grpdef entry!" CRLF ); leave( 21 ); } else { wkentry = Grpdefs; for ( ;; ) { if( wkentry->next == NULL ) { break; } wkentry = wkentry->next; } for( k = 0; k < MAXGRPSEGS; ++k ) { if( wkentry->segidx[ k ] == 0 ) { break; } } if( k < MAXGRPSEGS ) { wkentry->segidx[ k ] = segidx; } } } }
void AddSegdef( unsigned_16 idx ) { /*********************************/ Segdeflist *entry; Segdeflist *wkentry; entry = malloc( sizeof(Segdeflist) ); if( entry == NULL ) { OutputSetFH( stdout ); Output( CRLF "**FATAL** Out of memory!" CRLF ); leave( 21 ); } if( Segdefs == NULL ) { Segdefs = entry; } else { wkentry = Segdefs; for ( ;; ) { if( wkentry->next == NULL ) { break; } wkentry = wkentry->next; } wkentry->next = entry; } entry->next = NULL; entry->segind = idx; }
void ResizeBuff( unsigned_16 reqd_len ) { if( reqd_len > RecMaxLen ) { RecMaxLen = reqd_len; if( RecBuff != NULL ) { free( RecBuff ); } RecBuff = malloc( RecMaxLen ); if( RecBuff == NULL ) { OutputSetFH( stdout ); Output( CRLF "**FATAL** Out of memory!" CRLF ); leave( 20 ); } } }
void AddXname( void ) { /*********************/ Lnamelist *entry; entry = malloc( sizeof(Lnamelist) + NameLen ); if( entry == NULL ) { OutputSetFH( stdout ); Output( CRLF "**FATAL** Out of memory!" CRLF ); leave( 21 ); } if( Xnames == NULL ) { Xnames = entry; } else { lastXname->next = entry; } entry->next = NULL; entry->LnameLen = NameLen; memcpy( &(entry->Lname), NamePtr, NameLen ); *(&(entry->Lname) + NameLen) = '\0'; lastXname = entry; }
int main( int argc, char **argv ) /*******************************/ { FILE *fp; char drive[ _MAX_DRIVE ]; char dir[ _MAX_DIR ]; char fname[ _MAX_FNAME ]; char ext[ _MAX_EXT ]; char file[ _MAX_PATH ]; char *fn; int i; bool list_file; FILE *fh; bool is_intel; OutputInit(); OutputSetFH( stdout ); Descriptions = FALSE; InterpretComent = TRUE; TranslateIndex = FALSE; list_file = FALSE; is_intel = FALSE; quiet = FALSE; for( i = 1; i < argc; ++i ) { if( argv[i][0] == '-' ) { switch( tolower( argv[i][1] ) ) { case 'l': list_file = TRUE; break; case 'd': Descriptions = TRUE; break; case 'c': InterpretComent = FALSE; break; case 'r': if( strnicmp( argv[i] + 1, "rec=", 4 ) == 0 ) { if( rec_count < 10 ) { if( isdigit( argv[i][5] ) ) { rec_type[ rec_count++ ] = atoi( argv[i] + 5 ); } else { rec_type[ rec_count++ ] = RecNameToNumber( argv[i] + 5 ); } } else { Output( "Maximum 10 record type allowed." CRLF ); OutputFini(); } } else { DumpRaw = TRUE; } break; case 'i': is_intel = FALSE; break; case 'q': quiet = TRUE; break; case 't': TranslateIndex = TRUE; break; default: usage(); } } else { break; } } if( i == argc ) { usage(); } ShowProductInfo(); for( ; i < argc; ++i ) { _splitpath( argv[i], drive, dir, fname, ext ); if( ext[0] == 0 ) { _makepath( file, drive, dir, fname, OBJSUFFIX ); fn = file; } else { fn = argv[i]; } fp = fopen( fn, "rb" ); if( fp == NULL ) { Output( "Cannot open '%s' for reading" CRLF, fn ); leave( 20 ); } if( list_file ) { _makepath( file, drive, dir, fname, LSTSUFFIX ); fh = fopen( file, "w" ); if( fh == NULL ) { Output( "Cannot open '%s' for writing" CRLF, file ); leave( 20 ); } OutputSetFH( fh ); } ProcFile( fp, is_intel ); fclose( fp ); OutputSetFH( stdout ); /* does fclose() if necessary */ } leave( 0 ); return( 0 ); // for the less intelligent compilers }
void leave( int rc ) { OutputSetFH( stdout ); OutputFini(); exit( rc ); }