/* the main preprocessor parsing loop */ int wpp_parse( const char *input, FILE *output ) { int ret; pp_status.input = NULL; pp_push_define_state(); add_cmdline_defines(); add_special_defines(); if (!input) ppin = stdin; else if (!(ppin = fopen(input, "rt"))) { fprintf(stderr,"Could not open %s\n", input); exit(2); } pp_status.input = input; ppout = output; fprintf(ppout, "# 1 \"%s\" 1\n", input ? input : ""); ret = ppparse(); if (input) fclose(ppin); pp_pop_define_state(); return ret; }
/* the main preprocessor parsing loop */ int wpp_parse( const char *input, FILE *output ) { int ret; pp_status.input = NULL; pp_status.line_number = 1; pp_status.char_number = 1; pp_status.state = 0; ret = pp_push_define_state(); if(ret) return ret; add_cmdline_defines(); add_special_defines(); if (!input) pp_status.file = stdin; else if (!(pp_status.file = wpp_callbacks->open(input, 1))) { ppy_error("Could not open %s\n", input); del_special_defines(); del_cmdline_defines(); pp_pop_define_state(); return 2; } pp_status.input = input ? pp_xstrdup(input) : NULL; ppy_out = output; pp_writestring("# 1 \"%s\" 1\n", input ? input : ""); ret = ppy_parse(); /* If there were errors during processing, return an error code */ if (!ret && pp_status.state) ret = pp_status.state; if (input) { wpp_callbacks->close(pp_status.file); free(pp_status.input); } /* Clean if_stack, it could remain dirty on errors */ while (pp_get_if_depth()) pp_pop_if(); del_special_defines(); del_cmdline_defines(); pp_pop_define_state(); return ret; }