void print_cs(int p) { str_number t= cs_text(p); if(p<hash_base){ if(p==null_cs){ tprint_esc("csname"); tprint_esc("endcsname"); print_char(' '); }else{ tprint_esc("IMPOSSIBLE."); } }else if((p>=undefined_control_sequence)&& ((p<=eqtb_size)||p> eqtb_size+hash_extra)){ tprint_esc("IMPOSSIBLE."); }else if(t>=str_ptr){ tprint_esc("NONEXISTENT."); }else{ if(is_active_cs(t)){ print(active_cs_value(t)); }else{ print_esc(t); if(single_letter(t)){ if(get_cat_code(cat_code_table_par,pool_to_unichar(str_string(t)))==letter_cmd) print_char(' '); }else{ print_char(' '); } } } }
static const char *getfilename(void) { int t = 0; int level = in_open; while ((level > 0)) { t = input_stack[level--].name_field; if (t >= STRING_OFFSET) return (const char *) str_string(t); } return ""; }
void print(int s) { if(s>=str_ptr){ normal_warning("print","bad string pointer"); return; }else if(s<STRING_OFFSET){ if(s<0){ normal_warning("print","bad string offset"); }else{ if((false)&&(selector> pseudo)){ print_char(s); return; } if(s==new_line_char_par){ if(selector<pseudo){ print_ln(); return; } } if(s<=0x7F){ print_char(s); }else if(s<=0x7FF){ print_char(0xC0+(s/0x40)); print_char(0x80+(s%0x40)); }else if(s<=0xFFFF){ print_char(0xE0+(s/0x1000)); print_char(0x80+((s%0x1000)/0x40)); print_char(0x80+((s%0x1000)%0x40)); }else if(s>=0x110000){ int c= s-0x110000; if(c>=256){ formatted_warning("print","bad raw byte to print (c=%d), skipped",c); }else{ print_char(c); } }else{ print_char(0xF0+(s/0x40000)); print_char(0x80+((s%0x40000)/0x1000)); print_char(0x80+(((s%0x40000)%0x1000)/0x40)); print_char(0x80+(((s%0x40000)%0x1000)%0x40)); } } return; } if(selector==new_string){ append_string(str_string(s),(unsigned)str_length(s)); return; } lprint(&str_lstring(s)); }
pointer prim_lookup(str_number s) { int h; pointer p; unsigned char*j; unsigned l; if(s<STRING_OFFSET){ p= s; if((p<0)||(get_prim_eq_type(p)==undefined_cs_cmd)){ p= undefined_primitive; } }else{ j= str_string(s); l= (unsigned)str_length(s); h= compute_hash((char*)j,l,prim_prime); p= h+prim_base; while(1){ if(prim_text(p)> 0) if(str_length(prim_text(p))==l) if(str_eq_str(prim_text(p),s)) goto FOUND; if(prim_next(p)==0){ if(no_new_control_sequence){ p= undefined_primitive; }else{ if(prim_text(p)> 0){ do{ if(prim_is_full) overflow("primitive size",prim_size); decr(prim_used); }while(prim_text(prim_used)!=0); prim_next(p)= prim_used; p= prim_used; } prim_text(p)= s; } goto FOUND; } p= prim_next(p); } } FOUND: return p; }
void print_csnames(int hstart,int hfinish) { int h; unsigned char*c,*l; fprintf(stderr,"fmtdebug:csnames from %d to %d:",(int)hstart,(int)hfinish); for(h= hstart;h<=hfinish;h++){ if(cs_text(h)> 0){ c= str_string(cs_text(h)); l= c+str_length(cs_text(h)); while(c<l){ fputc(*c++,stderr); } fprintf(stderr,"|"); } } }
static const char *getfilename(void) { const char * s; int level, t; level = in_open; while ((level > 0)) { s = full_source_filename_stack[level--]; if (s != NULL) { return s; } } /* old method */ level = in_open; while ((level > 0)) { t = input_stack[level--].name_field; if (t >= STRING_OFFSET) { return (const char *) str_string(t); } } return ""; }