Ejemplo n.º 1
0
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;
            }

        }
    }
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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 );
        }
    }
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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
}
Ejemplo n.º 6
0
void leave( int rc )
{
    OutputSetFH( stdout );
    OutputFini();
    exit( rc );
}