| line | true | false | branch | 
 
| 120 | 61915 | 8528 | while (*pattern && cur_pos | 
 
|  | 61915 | 0 | while (*pattern && cur_pos | 
 
| 121 | 37842 | 24073 | if (*pattern == *cur_pos || *PATTERN == *cur_pos) { | 
 
|  | 13261 | 24581 | if (*pattern == *cur_pos || *PATTERN == *cur_pos) { | 
 
| 129 | 0 | 8528 | if (cur_pos>=next_to_end) return 0; | 
 
| 140 | 6151 | 26246 | while (isspace(*(state->cur_pos)) && state->cur_poscur_pos++;}; | 
 
|  | 6151 | 0 | while (isspace(*(state->cur_pos)) && state->cur_poscur_pos++;}; | 
 
| 164 | 935 | 1476 | if (('"'==cur_char) || ('\''==cur_char)) { | 
 
|  | 42 | 893 | if (('"'==cur_char) || ('\''==cur_char)) { | 
 
| 170 | 1518 | 893 | if (quote_char) { | 
 
| 171 | 12782 | 1516 | while (quote_char!=cur_char | 
 
| 176 | 12780 | 2 | && cur_pos | 
 
| 181 | 4319 | 813 | while ('>'!=cur_char && ! isspace(cur_char) && cur_pos | 
 
|  | 4239 | 80 | while ('>'!=cur_char && ! isspace(cur_char) && cur_pos | 
 
|  | 4239 | 0 | while ('>'!=cur_char && ! isspace(cur_char) && cur_pos | 
 
| 186 | 2 | 2409 | if (cur_pos>=next_to_end) { | 
 
| 194 | 1516 | 893 | if (quote_char) { | 
 
| 195 | 1516 | 0 | if (quote_char==*cur_pos) { | 
 
| 214 | 1738 | 16166 | if (is_string(state, modifier, MODIFIER)) { | 
 
| 216 | 1736 | 2 | if ('='==*(state->cur_pos)) { | 
 
| 233 | 4476 | 2866 | while (opt_found) { | 
 
| 235 | 17904 | 4476 | for (i=MIN_TAG_OPT; i<=MAX_TAG_OPT; i++) { | 
 
| 236 | 1736 | 16168 | if ( | 
 
| 242 | 4 | 1732 | if (debuglevel) log_state(state,TMPL_LOG_DEBUG,"in tag %s: found option %s=%.*s\n", TAGNAME[tag_type], TAGOPT[i],(int)(TagOptVal[i].endnext-TagOptVal[i].begin),TagOptVal[i].begin); | 
 
| 245 | 2866 | 1610 | if (!found_in_loop) opt_found = 0; | 
 
| 259 | 13580 | 3395 | for (i=MIN_TAG_OPT; i<=MAX_TAG_OPT; i++) { | 
 
| 264 | 9398 | 0 | for (i=HTML_TEMPLATE_FIRST_TAG_USED; i<=HTML_TEMPLATE_LAST_TAG_USED; i++) { | 
 
| 265 | 3395 | 6003 | if (is_string(state, tagname[i], TAGNAME[i])) { | 
 
| 268 | 5 | 3390 | if (debuglevel) { | 
 
| 269 | 1 | 4 | if (is_tag_closed) { | 
 
| 278 | 0 | 3395 | if (HTML_TEMPLATE_BAD_TAG==tag_type) { | 
 
| 286 | 798 | 2597 | if (is_tag_closed && !tag_can_be_closed[tag_type]) { | 
 
|  | 0 | 798 | if (is_tag_closed && !tag_can_be_closed[tag_type]) { | 
 
| 292 | 2597 | 798 | if (is_tag_closed || ! tag_has_opt[tag_type][TAG_OPT_NAME]) { | 
 
|  | 2191 | 406 | if (is_tag_closed || ! tag_has_opt[tag_type][TAG_OPT_NAME]) { | 
 
| 304 | 1234 | 957 | if (TagOptVal[TAG_OPT_NAME].begin == NULL && | 
 
|  | 1234 | 0 | if (TagOptVal[TAG_OPT_NAME].begin == NULL && | 
 
| 305 | 1201 | 33 | tag_has_opt[tag_type][TAG_OPT_NAME] && | 
 
| 306 | 642 | 559 | (!tag_has_opt[tag_type][TAG_OPT_EXPR] || TagOptVal[TAG_OPT_EXPR].begin == NULL )) { | 
 
| 311 | 559 | 1632 | if (TagOptVal[TAG_OPT_NAME].begin == NULL && | 
 
|  | 559 | 0 | if (TagOptVal[TAG_OPT_NAME].begin == NULL && | 
 
| 312 | 559 | 0 | tag_has_opt[tag_type][TAG_OPT_NAME] && | 
 
| 313 | 0 | 559 | (!tag_has_opt[tag_type][TAG_OPT_EXPR] || TagOptVal[TAG_OPT_EXPR].begin == NULL )) { | 
 
| 317 | 8764 | 2191 | for (i=MIN_TAG_OPT; i<=MAX_TAG_OPT; i++) { | 
 
| 318 | 2411 | 6353 | if (TagOptVal[i].begin!=NULL && ! tag_has_opt[tag_type][i]) { | 
 
|  | 0 | 2411 | if (TagOptVal[i].begin!=NULL && ! tag_has_opt[tag_type][i]) { | 
 
| 325 | 18 | 3377 | if (state->is_tag_commented) { | 
 
| 329 | 18 | 0 | if (state->cur_posnext_to_end-2 && '-'==*(state->cur_pos) && '-'==*(state->cur_pos+1)) { | 
 
|  | 18 | 0 | if (state->cur_posnext_to_end-2 && '-'==*(state->cur_pos) && '-'==*(state->cur_pos+1)) { | 
 
|  | 18 | 0 | if (state->cur_posnext_to_end-2 && '-'==*(state->cur_pos) && '-'==*(state->cur_pos+1)) { | 
 
| 334 | 2597 | 798 | if (!is_tag_closed && '/'==*(state->cur_pos)) state->cur_pos++; | 
 
|  | 4 | 2593 | if (!is_tag_closed && '/'==*(state->cur_pos)) state->cur_pos++; | 
 
| 336 | 3392 | 3 | if ('>'==*(state->cur_pos)) { | 
 
| 344 | 2486 | 909 | if (state->is_visible) { | 
 
| 348 | 798 | 2597 | if (is_tag_closed) { | 
 
| 373 | 3 | 519 | if (debuglevel) tmpl_log(TMPL_LOG_DEBUG,"process_state:initiated at scope stack depth = %d\n", | 
 
| 376 | 5985 | 344 | while (state->cur_pos < last_safe_pos) { | 
 
| 378 | 55056 | 5807 | while ('<'!=*(cur_pos++)) { | 
 
| 379 | 178 | 54878 | if (cur_pos >= last_safe_pos) { | 
 
| 387 | 33 | 5774 | if (('!'==*(cur_pos)) && ('-'==*(cur_pos+1)) && ('-'==*(cur_pos+2))) { | 
 
|  | 28 | 5 | if (('!'==*(cur_pos)) && ('-'==*(cur_pos+1)) && ('-'==*(cur_pos+2))) { | 
 
|  | 28 | 0 | if (('!'==*(cur_pos)) && ('-'==*(cur_pos+1)) && ('-'==*(cur_pos+2))) { | 
 
| 392 | 1921 | 3886 | if ('/'==*(state->cur_pos)) { | 
 
| 396 | 3395 | 2412 | if (is_string(state,metatag,METATAG)) { | 
 
| 409 | 3 | 519 | if (debuglevel) tmpl_log(TMPL_LOG_DEBUG,"process_state:finished\n"); | 
 
| 440 | 0 | 310 | if (NULL==filepath) return ERR_PRO_FILE_NOT_FOUND; | 
 
| 443 | 0 | 310 | if (NULL==filepath) return ERR_PRO_NOT_ENOUGH_MEMORY; | 
 
| 446 | 9 | 301 | if (param->filters) memarea=(param->LoadFileFuncPtr)(param->ext_filter_state,filepath); | 
 
| 448 | 0 | 310 | if (memarea.begin == NULL) { | 
 
| 454 | 306 | 4 | if (memarea.begin < memarea.endnext) { | 
 
| 457 | 2 | 304 | if (debuglevel) log_state(&state,TMPL_LOG_DEBUG, "exec_tmpl: loading %s\n",filename); | 
 
| 461 | 9 | 301 | if (param->filters) mmapstatus=(param->UnloadFileFuncPtr)(param->ext_filter_state,memarea); | 
 
| 463 | 4 | 306 | if (mmapstatus && debuglevel) log_state(&state,TMPL_LOG_DEBUG, "exec_tmpl: unloading %s caused munmap error\n",filename); | 
 
|  | 0 | 4 | if (mmapstatus && debuglevel) log_state(&state,TMPL_LOG_DEBUG, "exec_tmpl: unloading %s caused munmap error\n",filename); | 
 
| 465 | 310 | 0 | if (filepath!=NULL) free((void*) filepath); | 
 
| 479 | 216 | 0 | if (memarea.begin != memarea.endnext) { | 
 
| 498 | 449 | 0 | if (param->GetAbstractValFuncPtr==NULL || | 
 
|  | 449 | 0 | if (param->GetAbstractValFuncPtr==NULL || | 
 
| 499 | 449 | 0 | param->AbstractVal2pstringFuncPtr==NULL || | 
 
| 500 | 449 | 0 | param->AbstractVal2abstractArrayFuncPtr==NULL || | 
 
| 502 | 449 | 0 | param->GetAbstractMapFuncPtr==NULL || | 
 
| 503 | 449 | 0 | (param->IsExprUserfncFuncPtr!=NULL && param->IsExprUserfncFuncPtr != stub_is_expr_userfnc_func && | 
 
|  | 449 | 0 | (param->IsExprUserfncFuncPtr!=NULL && param->IsExprUserfncFuncPtr != stub_is_expr_userfnc_func && | 
 
| 504 | 449 | 0 | (param->InitExprArglistFuncPtr==NULL || | 
 
| 505 | 449 | 0 | param->PushExprArglistFuncPtr==NULL || | 
 
| 506 | 0 | 449 | param->FreeExprArglistFuncPtr==NULL || | 
 
| 511 | 0 | 0 | if (param->GetAbstractValFuncPtr==NULL) tmpl_log(TMPL_LOG_ERROR," GetAbstractValFuncPtr"); | 
 
| 512 | 0 | 0 | if (param->AbstractVal2pstringFuncPtr==NULL) tmpl_log(TMPL_LOG_ERROR," AbstractVal2pstringFuncPtr"); | 
 
| 513 | 0 | 0 | if (param->AbstractVal2abstractArrayFuncPtr==NULL) tmpl_log(TMPL_LOG_ERROR," AbstractVal2abstractArrayFuncPtr"); | 
 
| 514 | 0 | 0 | if (param->GetAbstractMapFuncPtr==NULL) tmpl_log(TMPL_LOG_ERROR," GetAbstractMapFuncPtr"); | 
 
| 515 | 0 | 0 | if ((param->IsExprUserfncFuncPtr!=NULL && | 
 
|  | 0 | 0 | if ((param->IsExprUserfncFuncPtr!=NULL && | 
 
| 516 | 0 | 0 | (param->InitExprArglistFuncPtr==NULL || | 
 
| 517 | 0 | 0 | param->PushExprArglistFuncPtr==NULL || | 
 
| 518 | 0 | 0 | param->FreeExprArglistFuncPtr==NULL || | 
 
| 524 | 5 | 444 | if (param->filters && | 
 
|  | 5 | 0 | if (param->filters && | 
 
| 525 | 0 | 5 | (param->LoadFileFuncPtr==NULL || | 
 
| 530 | 0 | 449 | if (NULL==param->WriterFuncPtr) param->WriterFuncPtr = stub_write_chars_to_stdout; | 
 
| 531 | 0 | 449 | if (NULL==param->ext_findfile_state) param->ext_findfile_state = param; | 
 
| 532 | 449 | 0 | if (NULL==param->FindFileFuncPtr) { | 
 
| 537 | 0 | 449 | if (NULL==param->IsExprUserfncFuncPtr) param->IsExprUserfncFuncPtr = stub_is_expr_userfnc_func; | 
 
| 538 | 0 | 449 | if (NULL==param->LoadFileFuncPtr) param->LoadFileFuncPtr = stub_load_file_func; | 
 
| 539 | 0 | 449 | if (NULL==param->UnloadFileFuncPtr) param->UnloadFileFuncPtr = stub_unload_file_func; | 
 
| 540 | 0 | 449 | if (NULL==param->GetAbstractArrayLengthFuncPtr) param->GetAbstractArrayLengthFuncPtr = stub_get_ABSTRACT_ARRAY_length_func; | 
 
| 553 | 216 | 233 | if (param->scalarref.begin) exitcode = tmplpro_exec_tmpl_scalarref(param, param->scalarref); | 
 
| 554 | 233 | 0 | else if (param->filename) exitcode = tmplpro_exec_tmpl_filename(param, param->filename); | 
 
| 559 | 0 | 449 | if (param->strict && param->found_syntax_error && 0==exitcode) exitcode = ERR_PRO_TEMPLATE_SYNTAX_ERROR; | 
 
|  | 0 | 0 | if (param->strict && param->found_syntax_error && 0==exitcode) exitcode = ERR_PRO_TEMPLATE_SYNTAX_ERROR; | 
 
|  | 0 | 0 | if (param->strict && param->found_syntax_error && 0==exitcode) exitcode = ERR_PRO_TEMPLATE_SYNTAX_ERROR; | 
 
| 582 | 0 | 0 | if (NULL!=retvalptr) *retvalptr=exitcode; | 
 
| 637 | 0 | 449 | if (param==NULL) return param; | 
 
| 697 | 0 | 0 | if (NULL==logfilename) { | 
 
| 698 | 0 | 0 | if (tmpl_log_stream!=NULL) { | 
 
| 706 | 0 | 0 | if (!file_p) { | 
 
| 710 | 0 | 0 | if (tmpl_log_stream!=NULL) fclose(tmpl_log_stream); |