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 ); } } } }
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; } }
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 }
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 ); } } }
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; }
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 ); }
void BadCmdLineFile( void ) // BAD FILE DETECTED { BadCmdLine( ERR_INVALID_OPTION_FILE ); }
void BadCmdLinePath( void ) // BAD PATH DETECTED { BadCmdLine( ERR_INVALID_OPTION_PATH ); }
void BadCmdLineNumber( void ) // BAD NUMBER DETECTED { BadCmdLine( ERR_INVALID_OPTION_NUMBER ); }
void BadCmdLineId( void ) // BAD ID DETECTED { BadCmdLine( ERR_INVALID_OPTION_ID ); }
void BadCmdLineChar( void ) // BAD CHAR DETECTED { BadCmdLine( ERR_INVALID_OPTION_CHAR ); }