void ProcIf( void ) { const char *start; size_t len; const char *true_start; size_t true_len; unsigned_64 res; cmd_list *cmd; bool have_true; true_len = 0; have_true = false; for( ;; ) { if( have_true ) { ChkExpr(); U64Clear( res ); } else { res = ReqU64Expr(); } if( !ScanQuote( &start, &len ) ) { Error( ERR_LOC, LIT_ENG( ERR_WANT_COMMAND_LIST ) ); } if( U64Test( &res ) != 0 ) { true_start = start; true_len = len; have_true = true; } if( ScanCmd( ElseifTab ) < 0 ) { break; } } ScanCmd( ElseTab ); /* optional else */ if( ScanQuote( &start, &len ) && !have_true ) { true_start = start; true_len = len; } ReqEOC(); if( true_len != 0 ) { cmd = AllocCmdList( true_start, true_len ); PushCmdList( cmd ); CopyInpFlags(); FreeCmdList( cmd ); } }
OVL_EXTERN void GetExprSyntax( void *value ) { value = value; ChkExpr(); ReqEOC(); }