summaryrefslogtreecommitdiff
path: root/src/bin/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/main.c')
-rw-r--r--src/bin/main.c14
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)