void tex::pop_cond () { ptr p; p = cond_ptr; if_line = if_line_field(p); cur_if = subtype(p); if_limit = type(p); cond_ptr = link(p); free_node(p, sizeof(if_t)); }
void tex::push_cond () { ptr p; p = new_node(sizeof(if_t)); link(p) = cond_ptr; type(p) = if_limit; subtype(p) = cur_if; if_line_field(p) = if_line; cond_ptr = p; cur_if = cur_chr; if_limit = IF_CODE; if_line = line; }
void file_warning(void) { halfword p= save_ptr; int l= cur_level; int c= cur_group; int i; save_ptr= cur_boundary; while(grp_stack[in_open]!=save_ptr){ decr(cur_level); tprint_nl("Warning: end of file when "); print_group(true); tprint(" is incomplete"); cur_group= save_level(save_ptr); save_ptr= save_value(save_ptr); } save_ptr= p; cur_level= (quarterword)l; cur_group= (group_code)c; p= cond_ptr; l= if_limit; c= cur_if; i= if_line; while(if_stack[in_open]!=cond_ptr){ tprint_nl("Warning: end of file when "); print_cmd_chr(if_test_cmd,cur_if); if(if_limit==fi_code) tprint_esc("else"); print_if_line(if_line); tprint(" is incomplete"); if_line= if_line_field(cond_ptr); cur_if= if_limit_subtype(cond_ptr); if_limit= if_limit_type(cond_ptr); cond_ptr= vlink(cond_ptr); } cond_ptr= p; if_limit= l; cur_if= c; if_line= i; print_ln(); if(tracing_nesting_par> 1) show_context(); if(history==spotless) history= warning_issued; }
void tex::final_cleanup() { while(open_parens > 0) { print(" )"); decr(open_parens); } if(cur_level > LEVEL_ONE) { std::cerr << "(\\end occurred inside a group at level " << cur_level - LEVEL_ONE << ")" << std::endl; } while(cond_ptr != null) { std::cerr << "(\\end occurred when "; print_cmd_chr(IF_TEST, cur_if); if (if_line != 0) { print(" on line "); print_int(if_line); } print(" was incomplete)"); if_line = if_line_field(cond_ptr); cur_if = subtype(cond_ptr); cond_ptr = link(cond_ptr); } close_files(); }