diff options
Diffstat (limited to 'src/bin/main.c')
| -rw-r--r-- | src/bin/main.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/bin/main.c b/src/bin/main.c index a969956..5242cd5 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -92,7 +92,9 @@ main(int argc, char *argv[]) int opt, xflag, input_file; long tmp; FILE *f; - unsigned long failsim_count, failsim_fails; + unsigned long failsim_count, failsim_fails, failsim_strict; + + failsim_strict = getenv_ulong("APLWC_FAILSIM_STRICT", 0); aplwc_clear_line(&line); aplwc_clear_value(&value); @@ -208,7 +210,7 @@ file_size: if(!aplwc_valid_line(&line)){ line_error: fprintf(stderr, "error on line %d: %s: %s\n", line_number, aplwc_errstr(aplwc), input); - if(aplwc_failsim_query(APLWC_FAILSIM_COUNT) > 0){ + if(failsim_strict){ ret = aplwc_last_error(aplwc); goto end; }else @@ -224,7 +226,7 @@ line_error: end: if(input) free(input); - if(NEVER(aplwc_valid_line(&line))) + if(aplwc_valid_line(&line)) aplwc_free_line(&line); if(NEVER(aplwc_valid_value(&value))) aplwc_free_value(&value); @@ -233,14 +235,16 @@ end: failsim_count = aplwc_failsim_query(APLWC_FAILSIM_COUNT); failsim_fails = aplwc_failsim_query(APLWC_FAILSIM_FAILS); - if(failsim_count > 0){ + if(failsim_fails > 0){ switch(ret){ case APLWC_OK: case APLWC_OTHER_FAILURE: case APLWC_OUT_OF_MEMORY: break; default: - return 97; + if(failsim_strict) + return 97; + break; } if(failsim_count > failsim_fails) |