int Next_Text_Token_Obtained(void) { if (!Next_Stream_Token_Obtained()) return 0; if (Token_EQ(lex_token, End_Of_Line)) { store_newline(); last_tk_cnt = lex_tk_cnt; } return 1; }
void Close_Text(enum Pass pass, struct text *txt) { switch (pass) { case First: if (nl_buff) { if (last_tk_cnt != lex_tk_cnt) { /* there were tokens after the last newline */ store_newline(); } txt->tx_nl_limit = nl_free; } break; case Second: break; } Close_Stream(); }
int Next_Text_Token_Obtained(enum Pass pass) { int ok = 0; /* gcc does not understand enum Pass */ switch (pass) { case First: ok = Next_Stream_Token_Obtained(); if (Token_EQ(lex_token, End_Of_Line)) { store_newline(); last_tk_cnt = lex_tk_cnt; } break; case Second: /* get newline info from the buffer or from the file itself */ if (nl_buff) { if (nl_next == nl_limit) { ok = 0; } else { struct newline *nl = &nl_buff[nl_next++]; lex_nl_cnt = ++last_nl_cnt; lex_tk_cnt = (last_tk_cnt += nl->nl_tk_diff); lex_token = End_Of_Line; ok = 1; } } else { while ( (ok = Next_Stream_Token_Obtained()) && !Token_EQ(lex_token, End_Of_Line) ) { /* skip */ } } break; } return ok; }