Exemple #1
0
static void handleOptionFC( OPT_STORAGE *data, int value )
{
    value = value;
    if( data->fc ) {
        data->fc = FALSE;
        if( CompFlags.batch_file_primary ) {
            if( CompFlags.batch_file_processing ) {
                BadCmdLine( ERR_FC_IN_BATCH_FILE );
            } else {
                BadCmdLine( ERR_FC_MORE_THAN_ONCE );
            }
        } else {
            CompFlags.batch_file_primary = TRUE;
            if( CompFlags.batch_file_processing ) {
                VBUF buf;
                if( CmdLnBatchRead( &buf ) ) {
                    CmdLnCtxPush( CTX_CLTYPE_FC );
                    procOptions( data, VbufString( &buf ) );
                    CmdLnCtxPop();
                }
                CmdLnBatchFreeRecord( &buf );
            } else {
                CmdLnBatchOpen( data->fc_value->data );
                CMemFreePtr( &data->fc_value );
            }
        }
    }
}
Exemple #2
0
static void procOptions(        // PROCESS AN OPTIONS LINE
    OPT_STORAGE *data,          // - options data
    const char *str )           // - scan position in command line
{
    int c;                      // - next character
    char const *fnm;            // - scanned @ name
    char *env;                  // - environment name
    size_t len;                 // - length of file name

    if( indirectionLevel >= MAX_INDIRECTION ) {
        BadCmdLine( ERR_MAX_CMD_INDIRECTION );
    } else if( str != NULL ) {
        ++indirectionLevel;
        CtxSetSwitchAddr( str );
        CmdScanInit( str );
        for(;;) {
            c = CmdScanWhiteSpace();
            if( c == '\0' ) break;
            CmdScanSwitchBegin();
            CmdLnCtxSwitch( CmdScanAddr() - 1 );
            if( c == '-'  ||  c == SwitchChar ) {
                if( OPT_PROCESS( data ) ) {
                    BadCmdLine( ERR_INVALID_OPTION );
                }
            } else if( c == '@' ) {
                CmdScanWhiteSpace();
                CmdScanUngetChar();
                len = CmdScanFilename( &fnm );
                env = get_env( fnm, len );
                if( NULL == env ) {
                    if( openCmdFile( fnm, len ) ) {
                        CmdLnCtxPushCmdFile( SrcFileCurrent() );
                        processCmdFile( data );
                        CmdLnCtxPop();
                    } else {
                        CmdLnCtxPushEnv( fnm );
                        BadCmdLine( ERR_BAD_CMD_INDIRECTION );
                        CmdLnCtxPop();
                    }
                } else {
                    CmdLnCtxPushEnv( fnm );
                    procOptions( data, env );
                    CmdLnCtxPop();
                }
            } else {
                CmdScanUngetChar();
                scanInputFile();
            }
        }
        --indirectionLevel;
    }
}
Exemple #3
0
static bool scanFBI( OPT_STRING **p )
{
#ifdef OPT_BR
    bool retn;                  // - return: 1 ==> ok, 0 ==> error
    FBI_KIND options;           // - options scanned

    p = p;
    if( scanFBIopts( &options, FBI_DEFAULT_ON ) ) {
        if( options & FBI_VAR ) {
            CompFlags.optbr_v = TRUE;
        }
        if( options & FBI_TYPE ) {
            CompFlags.optbr_t = TRUE;
        }
        if( options & FBI_MEMB_DATA ) {
            CompFlags.optbr_m = TRUE;
        }
        if( options & FBI_MACRO ) {
            CompFlags.optbr_p = TRUE;
        }
        if( options & FBI_FUN ) {
            CompFlags.optbr_f = TRUE;
        }
        retn = TRUE;
    } else {
        retn = FALSE;
    }
    return( retn );
#else
    p = p;
    BadCmdLine( ERR_INVALID_OPTION );
    return( FALSE );
#endif
}
Exemple #4
0
void CmdLnBatchOpen(            // OPEN CMD-LN BATCH FILE
    char const * fname )        // - file name
{
    int retn = open( fname, O_RDONLY | O_BINARY );
    if( retn == -1 ) {
        CompFlags.batch_file_eof = true;
        BadCmdLine( ERR_FC_OPEN );
    } else {
        batch_file = retn;
        batch_bytes = 0;
        CompFlags.batch_file_eof = false;
        CompInfo.fc_file_line = 0;
        cmdLnBatchFlushCrap();
        if( real_eof ) {
            BadCmdLine( ERR_FC_EMPTY );
        }
    }
}
Exemple #5
0
static int cmdLnBatchReadBuffer(// READ A BUFFER
    void )
{
    int retn = read( batch_file, batch_buffer, sizeof( batch_buffer ) );
    if( retn == -1 ) {
        BadCmdLine( ERR_FC_READ );
        real_eof = false;
        cmdLnBatchClose();
    } else if( retn == 0 ) {
        real_eof = true;
        cmdLnBatchClose();
    } else {
        batch_cursor = batch_buffer;
        batch_bytes = retn;
    }
    return retn;
}
Exemple #6
0
static bool scanFBIopts         // SCAN FBI/FBX OPTIONS
    ( FBI_KIND* a_kind          // - addr[ option kinds ]
    , FBI_KIND def_kind )       // - default kind
{
    bool retn;                  // - return: 1 ==> ok, 0 ==> error
    FBI_KIND kind;              // - options scanned

    kind = 0;
    CmdRecogEquals();
    for( ; ; ) {
        if( CmdScanSwEnd()
         || CmdPeekChar() == '-' ) {
            if( 0 == kind ) {
                kind = def_kind;
            }
            retn = TRUE;
            break;
        }
        switch( CmdScanChar() ) {
          case 'v' :
            kind |= FBI_VAR;
            continue;
          case 't' :
            kind |= FBI_TYPE;
            continue;
          case 'f' :
            kind |= FBI_FUN;
            continue;
          case 'm' :
            kind |= FBI_MEMB_DATA;
            continue;
          case 'p' :
            kind |= FBI_MACRO;
            continue;
          default :
            BadCmdLine( ERR_INVALID_OPTION );
            retn = FALSE;
            break;
        }
        break;
    }
    *a_kind = kind;
    return( retn );
}
Exemple #7
0
void BadCmdLineFile( void )             // BAD FILE DETECTED
{
    BadCmdLine( ERR_INVALID_OPTION_FILE );
}
Exemple #8
0
void BadCmdLinePath( void )             // BAD PATH DETECTED
{
    BadCmdLine( ERR_INVALID_OPTION_PATH );
}
Exemple #9
0
void BadCmdLineNumber( void )           // BAD NUMBER DETECTED
{
    BadCmdLine( ERR_INVALID_OPTION_NUMBER );
}
Exemple #10
0
void BadCmdLineId( void )               // BAD ID DETECTED
{
    BadCmdLine( ERR_INVALID_OPTION_ID );
}
Exemple #11
0
void BadCmdLineChar( void )             // BAD CHAR DETECTED
{
    BadCmdLine( ERR_INVALID_OPTION_CHAR );
}