diff options
author | Norbert Preining <norbert@preining.info> | 2023-12-04 03:01:04 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-12-04 03:01:04 +0000 |
commit | db0fe20663f1bcb3fcf87c3fb05a727420edd203 (patch) | |
tree | e5abdee7535ece54123168f0fa9a21fa0a627464 /web/c_cpp/cweb/ctangle.c | |
parent | de2c50ca7889fda13da11c1ccf6bdbd199ba8c2b (diff) |
CTAN sync 202312040301
Diffstat (limited to 'web/c_cpp/cweb/ctangle.c')
-rw-r--r-- | web/c_cpp/cweb/ctangle.c | 297 |
1 files changed, 155 insertions, 142 deletions
diff --git a/web/c_cpp/cweb/ctangle.c b/web/c_cpp/cweb/ctangle.c index 2c31732e22..58e37b27b4 100644 --- a/web/c_cpp/cweb/ctangle.c +++ b/web/c_cpp/cweb/ctangle.c @@ -15,7 +15,7 @@ /*:5*/ #line 67 "ctangle.w" -#define banner "This is CTANGLE (Version 4.10)" \ +#define banner "This is CTANGLE (Version 4.11)" \ #define ctangle false #define cweave true \ @@ -230,7 +230,7 @@ extern name_pointer name_dir_end; extern name_pointer name_ptr; extern name_pointer hash[]; extern hash_pointer hash_end; -extern hash_pointer h; +extern hash_pointer hash_ptr; /*:11*//*13:*/ #line 193 "common.h" @@ -305,53 +305,53 @@ static output_state stack[stack_size+2]; static stack_pointer stack_end= stack+stack_size; static stack_pointer stack_ptr; -/*:32*//*37:*/ -#line 357 "ctangle.w" +/*:32*//*38:*/ +#line 367 "ctangle.w" static int cur_val; -/*:37*//*42:*/ -#line 449 "ctangle.w" +/*:38*//*42:*/ +#line 457 "ctangle.w" static eight_bits out_state; static boolean protect; /*:42*//*45:*/ -#line 480 "ctangle.w" +#line 488 "ctangle.w" static name_pointer output_files[max_files]; static name_pointer*cur_out_file,*end_output_files,*an_output_file; static char cur_section_name_char; static char output_file_name[longest_name+1]; -/*:45*//*52:*/ -#line 573 "ctangle.w" +/*:45*//*53:*/ +#line 584 "ctangle.w" static boolean output_defs_seen= false; -/*:52*//*57:*/ -#line 687 "ctangle.w" +/*:53*//*57:*/ +#line 694 "ctangle.w" static char translit[0200][translit_length]; /*:57*//*62:*/ -#line 763 "ctangle.w" +#line 770 "ctangle.w" -static eight_bits ccode[256]; +static eight_bits ccode[256]= {ignore}; /*:62*//*66:*/ -#line 823 "ctangle.w" +#line 827 "ctangle.w" static boolean comment_continues= false; /*:66*//*68:*/ -#line 860 "ctangle.w" +#line 864 "ctangle.w" static name_pointer cur_section_name; static boolean no_where; /*:68*//*82:*/ -#line 1177 "ctangle.w" +#line 1182 "ctangle.w" static text_pointer cur_text; static eight_bits next_control; @@ -399,54 +399,48 @@ extern void print_stats(void); #line 242 "ctangle.w" static void store_two_bytes(sixteen_bits); -/*:30*//*35:*/ -#line 321 "ctangle.w" +/*:30*//*37:*/ +#line 347 "ctangle.w" static void push_level(name_pointer); static void pop_level(boolean); - -/*:35*//*39:*/ -#line 394 "ctangle.w" static void get_output(void); -/*:39*//*44:*/ -#line 470 "ctangle.w" +/*:37*//*44:*/ +#line 478 "ctangle.w" static void flush_buffer(void); /*:44*//*49:*/ -#line 541 "ctangle.w" -static void phase_two(void); - -/*:49*//*53:*/ -#line 576 "ctangle.w" +#line 547 "ctangle.w" +static void phase_two(void); static void output_defs(void); static void out_char(eight_bits); -/*:53*//*65:*/ -#line 803 "ctangle.w" +/*:49*//*65:*/ +#line 807 "ctangle.w" static eight_bits skip_ahead(void); static boolean skip_comment(boolean); /*:65*//*70:*/ -#line 910 "ctangle.w" +#line 915 "ctangle.w" static eight_bits get_next(void); /*:70*//*84:*/ -#line 1203 "ctangle.w" +#line 1208 "ctangle.w" static void scan_repl(eight_bits); /*:84*//*91:*/ -#line 1395 "ctangle.w" +#line 1399 "ctangle.w" static void scan_section(void); /*:91*//*99:*/ -#line 1472 "ctangle.w" +#line 1476 "ctangle.w" static void phase_one(void); /*:99*//*101:*/ -#line 1505 "ctangle.w" +#line 1509 "ctangle.w" static void skip_limbo(void); /*:101*/ @@ -479,12 +473,12 @@ init_node(name_dir); last_unnamed= text_info;text_info->text_link= macro; /*:27*//*46:*/ -#line 490 "ctangle.w" +#line 498 "ctangle.w" cur_out_file= end_output_files= output_files+max_files; /*:46*//*58:*/ -#line 690 "ctangle.w" +#line 697 "ctangle.w" {int i; for(i= 0;i<0200;i++) @@ -492,11 +486,8 @@ snprintf(translit[i],translit_length,"X%02X",(unsigned int)(0200+i)); } /*:58*//*63:*/ -#line 766 "ctangle.w" -{ -int c; -for(c= 0;c<256;c++)ccode[c]= ignore; -} +#line 773 "ctangle.w" + ccode[' ']= ccode['\t']= ccode['\n']= ccode['\v']= ccode['\r']= ccode['\f'] = ccode['*']= new_section; ccode['@']= (eight_bits)'@';ccode['=']= string; @@ -512,7 +503,7 @@ ccode['<']= ccode['(']= section_name; ccode['\'']= ord; /*:63*//*78:*/ -#line 1098 "ctangle.w" +#line 1103 "ctangle.w" section_text[0]= ' '; /*:78*/ @@ -559,8 +550,8 @@ if(tok_ptr+2> tok_mem_end)overflow("token"); *tok_ptr++= x&0377; } -/*:29*//*34:*/ -#line 307 "ctangle.w" +/*:29*//*35:*/ +#line 315 "ctangle.w" static void push_level( @@ -575,8 +566,9 @@ cur_byte= cur_repl->tok_start;cur_section= 0; } } -/*:34*//*36:*/ -#line 329 "ctangle.w" + +/*:35*//*36:*/ +#line 334 "ctangle.w" static void pop_level( @@ -590,8 +582,8 @@ stack_ptr--; if(stack_ptr> stack)cur_state= *stack_ptr; } -/*:36*//*38:*/ -#line 364 "ctangle.w" +/*:36*//*39:*/ +#line 374 "ctangle.w" static void get_output(void) @@ -614,13 +606,13 @@ switch(a/024000){ case 0:cur_val= (int)a;out_char(identifier);break; case 1:if(a==output_defs_flag)output_defs(); else/*40:*/ -#line 399 "ctangle.w" +#line 407 "ctangle.w" { a-= 024000; if((a+name_dir)->equiv!=(void*)text_info)push_level(a+name_dir); else if(a!=0){ -fputs("\n! Not present: <",stdout); +printf("%s","\n! Not present: <"); print_section_name(a+name_dir);err_print(">"); } @@ -628,7 +620,7 @@ goto restart; } /*:40*/ -#line 385 "ctangle.w" +#line 395 "ctangle.w" break; default:cur_val= (int)a-050000; @@ -638,8 +630,8 @@ out_char(section_number); } } -/*:38*//*43:*/ -#line 457 "ctangle.w" +/*:39*//*43:*/ +#line 465 "ctangle.w" static void flush_buffer(void) @@ -654,7 +646,7 @@ cur_line++; } /*:43*//*48:*/ -#line 509 "ctangle.w" +#line 517 "ctangle.w" static void phase_two(void){ @@ -664,23 +656,24 @@ cur_line= 1; /*33:*/ #line 296 "ctangle.w" -stack_ptr= stack+1;cur_name= name_dir;cur_repl= text_info->text_link+text_info; +stack_ptr= stack+1;cur_name= name_dir; +cur_repl= text_info->text_link+text_info; cur_byte= cur_repl->tok_start;cur_section= 0; /*:33*/ -#line 515 "ctangle.w" +#line 523 "ctangle.w" -/*51:*/ -#line 569 "ctangle.w" +/*52:*/ +#line 580 "ctangle.w" if(!output_defs_seen) output_defs(); -/*:51*/ -#line 516 "ctangle.w" +/*:52*/ +#line 524 "ctangle.w" if(text_info->text_link==macro&&cur_out_file==end_output_files){ -fputs("\n! No program text was specified.",stdout);mark_harmless(); +printf("%s","\n! No program text was specified.");mark_harmless(); } else{ @@ -691,12 +684,20 @@ printf(cur_out_file==end_output_files? update_terminal(); } -if(text_info->text_link!=macro){ +if(text_info->text_link!=macro) +/*51:*/ +#line 570 "ctangle.w" + +{ while(stack_ptr> stack)get_output(); flush_buffer(); } + +/*:51*/ +#line 538 "ctangle.w" + /*50:*/ -#line 547 "ctangle.w" +#line 556 "ctangle.w" for(an_output_file= end_output_files;an_output_file> cur_out_file;){ an_output_file--; @@ -707,26 +708,41 @@ fatal("! Cannot open output file ",output_file_name); if(show_progress){printf("\n(%s)",output_file_name);update_terminal();} cur_line= 1; -stack_ptr= stack+1; -cur_name= *an_output_file; +/*34:*/ +#line 303 "ctangle.w" + +stack_ptr= stack+1;cur_name= *an_output_file; cur_repl= (text_pointer)cur_name->equiv; cur_byte= cur_repl->tok_start; + +/*:34*/ +#line 566 "ctangle.w" + +/*51:*/ +#line 570 "ctangle.w" + +{ while(stack_ptr> stack)get_output(); flush_buffer(); } +/*:51*/ +#line 567 "ctangle.w" + +} + /*:50*/ -#line 533 "ctangle.w" +#line 539 "ctangle.w" if(show_happiness){ if(show_progress)new_line(); -fputs("Done.",stdout); +printf("%s","Done."); } } } /*:48*//*54:*/ -#line 585 "ctangle.w" +#line 592 "ctangle.w" static void output_defs(void) @@ -766,7 +782,7 @@ pop_level(false); } /*:54*//*55:*/ -#line 628 "ctangle.w" +#line 635 "ctangle.w" static void out_char( @@ -779,7 +795,7 @@ case'\n':if(protect&&out_state!=verbatim)C_putc(' '); if(protect||out_state==verbatim)C_putc('\\'); flush_buffer();if(out_state!=verbatim)out_state= normal;break; /*59:*/ -#line 696 "ctangle.w" +#line 703 "ctangle.w" case identifier: if(out_state==num_or_id)C_putc(' '); @@ -791,10 +807,10 @@ else C_printf("%s",translit[(eight_bits)(*j)-0200]); out_state= num_or_id;break; /*:59*/ -#line 639 "ctangle.w" +#line 646 "ctangle.w" /*60:*/ -#line 706 "ctangle.w" +#line 713 "ctangle.w" case section_number: if(cur_val> 0)C_printf("/*%d:*/",cur_val); @@ -821,10 +837,10 @@ C_putc('"');C_putc('\n'); break; /*:60*/ -#line 640 "ctangle.w" +#line 647 "ctangle.w" /*56:*/ -#line 658 "ctangle.w" +#line 665 "ctangle.w" case plus_plus:C_putc('+');C_putc('+');out_state= normal;break; case minus_minus:C_putc('-');C_putc('-');out_state= normal;break; @@ -845,7 +861,7 @@ case minus_gt_ast:C_putc('-');C_putc('>');C_putc('*');out_state= normal; break; /*:56*/ -#line 641 "ctangle.w" +#line 648 "ctangle.w" case'=':case'>':C_putc(cur_char);C_putc(' '); out_state= normal;break; @@ -864,7 +880,7 @@ default:C_putc(cur_char);out_state= normal;break; } /*:55*//*64:*/ -#line 787 "ctangle.w" +#line 791 "ctangle.w" static eight_bits skip_ahead(void) @@ -882,7 +898,7 @@ if(c!=ignore||*(loc-1)=='>')return c; } /*:64*//*67:*/ -#line 826 "ctangle.w" +#line 830 "ctangle.w" static boolean skip_comment( boolean is_long_comment) @@ -916,7 +932,7 @@ else loc++; } /*:67*//*69:*/ -#line 867 "ctangle.w" +#line 871 "ctangle.w" static eight_bits get_next(void) @@ -928,12 +944,12 @@ if(loc> limit){ if(preprocessing&&*(limit-1)!='\\')preprocessing= false; if(get_line()==false)return new_section; else if(print_where&&!no_where){ +sixteen_bits a; print_where= false; /*85:*/ -#line 1213 "ctangle.w" +#line 1218 "ctangle.w" { -eight_bits a; store_two_bytes(0150000); if(changing&&include_depth==change_depth){ id_first= change_file_name; @@ -947,7 +963,7 @@ store_id(a); } /*:85*/ -#line 879 "ctangle.w" +#line 884 "ctangle.w" } else return(eight_bits)'\n'; @@ -960,7 +976,7 @@ else continue; } loc++; if(xisdigit(c)||c=='.')/*73:*/ -#line 951 "ctangle.w" +#line 956 "ctangle.w" { boolean hex_flag= false; id_first= loc-1; @@ -994,13 +1010,13 @@ return constant; } /*:73*/ -#line 890 "ctangle.w" +#line 895 "ctangle.w" else if(c=='\''||c=='"' ||((c=='L'||c=='u'||c=='U')&&(*loc=='\''||*loc=='"')) ||((c=='u'&&*loc=='8')&&(*(loc+1)=='\''||*(loc+1)=='"'))) /*74:*/ -#line 988 "ctangle.w" +#line 993 "ctangle.w" { char delim= (char)c; id_first= section_text+1; @@ -1034,7 +1050,7 @@ c= (eight_bits)*loc++; if(++id_loc<=section_text_end)*id_loc= (char)c; } if(id_loc>=section_text_end){ -fputs("\n! String too long: ",stdout); +printf("%s","\n! String too long: "); term_write(section_text+1,25); err_print("..."); @@ -1044,11 +1060,11 @@ return string; } /*:74*/ -#line 894 "ctangle.w" +#line 899 "ctangle.w" else if(isalpha((int)c)||isxalpha(c)||ishigh(c)) /*72:*/ -#line 942 "ctangle.w" +#line 947 "ctangle.w" { id_first= --loc; do @@ -1059,10 +1075,10 @@ id_loc= loc;return identifier; } /*:72*/ -#line 896 "ctangle.w" +#line 901 "ctangle.w" else if(c=='@')/*75:*/ -#line 1033 "ctangle.w" +#line 1038 "ctangle.w" switch(c= ccode[(eight_bits)*loc++]){ case ignore:continue; @@ -1077,11 +1093,11 @@ continue; case section_name: cur_section_name_char= *(loc-1); /*77:*/ -#line 1078 "ctangle.w" +#line 1083 "ctangle.w" { char*k= section_text; /*79:*/ -#line 1100 "ctangle.w" +#line 1105 "ctangle.w" while(true){ if(loc> limit&&get_line()==false){ @@ -1091,7 +1107,7 @@ loc= buffer+1;break; } c= (eight_bits)*loc; /*80:*/ -#line 1123 "ctangle.w" +#line 1128 "ctangle.w" if(c=='@'){ c= (eight_bits)*(loc+1); @@ -1110,7 +1126,7 @@ err_print("! Nesting of section names not allowed");break; } /*:80*/ -#line 1108 "ctangle.w" +#line 1113 "ctangle.w" loc++;if(k<section_text_end)k++; if(xisspace(c)){ @@ -1119,7 +1135,7 @@ c= (eight_bits)' ';if(*(k-1)==' ')k--; *k= (char)c; } if(k>=section_text_end){ -fputs("\n! Section name too long: ",stdout); +printf("%s","\n! Section name too long: "); term_write(section_text+1,25); printf("...");mark_harmless(); @@ -1127,7 +1143,7 @@ printf("...");mark_harmless(); if(*k==' '&&k> section_text)k--; /*:79*/ -#line 1080 "ctangle.w" +#line 1085 "ctangle.w" if(k-section_text> 3&&strncmp(k-2,"...",3)==0) cur_section_name= section_lookup(section_text+1,k-3,true); @@ -1136,7 +1152,7 @@ else cur_section_name= section_lookup(section_text+1,k,false); if(cur_section_name_char=='(') /*47:*/ -#line 494 "ctangle.w" +#line 502 "ctangle.w" { for(an_output_file= cur_out_file; @@ -1150,16 +1166,16 @@ else overflow("output files"); } /*:47*/ -#line 1088 "ctangle.w" +#line 1093 "ctangle.w" return section_name; } /*:77*/ -#line 1046 "ctangle.w" +#line 1051 "ctangle.w" case string:/*81:*/ -#line 1145 "ctangle.w" +#line 1150 "ctangle.w" id_first= loc++;*(limit+1)= '@';*(limit+2)= '>'; while(*loc!='@'||*(loc+1)!='>')loc++; @@ -1169,10 +1185,10 @@ id_loc= loc;loc+= 2; return string; /*:81*/ -#line 1047 "ctangle.w" +#line 1052 "ctangle.w" case ord:/*76:*/ -#line 1058 "ctangle.w" +#line 1063 "ctangle.w" id_first= loc; if(*loc=='\\') @@ -1194,13 +1210,13 @@ loc++; return ord; /*:76*/ -#line 1048 "ctangle.w" +#line 1053 "ctangle.w" default:return c; } /*:75*/ -#line 897 "ctangle.w" +#line 902 "ctangle.w" else if(xisspace(c)){ if(!preprocessing||loc> limit)continue; @@ -1210,7 +1226,7 @@ else return(eight_bits)' '; } else if(c=='#'&&loc==buffer+1)preprocessing= true; mistake:/*71:*/ -#line 919 "ctangle.w" +#line 924 "ctangle.w" switch(c){ case'+':if(*loc=='+')compress(plus_plus);break; @@ -1235,14 +1251,14 @@ case'!':if(*loc=='=')compress(non_eq);break; } /*:71*/ -#line 905 "ctangle.w" +#line 910 "ctangle.w" return c; } } /*:69*//*83:*/ -#line 1181 "ctangle.w" +#line 1186 "ctangle.w" static void scan_repl( @@ -1250,10 +1266,9 @@ eight_bits t) { sixteen_bits a; if(t==section_name)/*85:*/ -#line 1213 "ctangle.w" +#line 1218 "ctangle.w" { -eight_bits a; store_two_bytes(0150000); if(changing&&include_depth==change_depth){ id_first= change_file_name; @@ -1267,11 +1282,11 @@ store_id(a); } /*:85*/ -#line 1187 "ctangle.w" +#line 1192 "ctangle.w" while(true)switch(a= get_next()){ /*86:*/ -#line 1228 "ctangle.w" +#line 1232 "ctangle.w" case identifier:store_id(a); if(*buffer=='#'&&( @@ -1284,7 +1299,7 @@ break; case section_name:if(t!=section_name)goto done; else{ /*87:*/ -#line 1269 "ctangle.w" +#line 1273 "ctangle.w" { char*try_loc= loc; while(*try_loc==' '&&try_loc<limit)try_loc++; @@ -1297,16 +1312,15 @@ if(*try_loc=='=')err_print("! Missing `@ ' before a named section"); } /*:87*/ -#line 1239 "ctangle.w" +#line 1243 "ctangle.w" a= cur_section_name-name_dir; app_repl((a/0400)+0250); app_repl(a%0400); /*85:*/ -#line 1213 "ctangle.w" +#line 1218 "ctangle.w" { -eight_bits a; store_two_bytes(0150000); if(changing&&include_depth==change_depth){ id_first= change_file_name; @@ -1320,7 +1334,7 @@ store_id(a); } /*:85*/ -#line 1243 "ctangle.w" +#line 1247 "ctangle.w" } break; @@ -1332,10 +1346,9 @@ a= output_defs_flag; app_repl((a/0400)+0200); app_repl(a%0400); /*85:*/ -#line 1213 "ctangle.w" +#line 1218 "ctangle.w" { -eight_bits a; store_two_bytes(0150000); if(changing&&include_depth==change_depth){ id_first= change_file_name; @@ -1349,13 +1362,13 @@ store_id(a); } /*:85*/ -#line 1253 "ctangle.w" +#line 1257 "ctangle.w" } break; case constant:case string: /*88:*/ -#line 1286 "ctangle.w" +#line 1290 "ctangle.w" app_repl(a); while(id_first<id_loc){ @@ -1371,12 +1384,12 @@ app_repl(*id_first++); app_repl(a); /*:88*/ -#line 1257 "ctangle.w" +#line 1261 "ctangle.w" break; case ord: /*89:*/ -#line 1304 "ctangle.w" +#line 1308 "ctangle.w" { int c= (int)((eight_bits)*id_first); if(c=='\\'){ @@ -1426,7 +1439,7 @@ app_repl(constant); } /*:89*/ -#line 1260 "ctangle.w" +#line 1264 "ctangle.w" break; case definition:case format_code:case begin_C:if(t!=section_name)goto done; @@ -1437,7 +1450,7 @@ err_print("! @d, @f and @c are ignored in C text");continue; case new_section:goto done; /*:86*/ -#line 1192 "ctangle.w" +#line 1197 "ctangle.w" case')':app_repl(a); if(t==macro)app_repl(' '); @@ -1450,7 +1463,7 @@ cur_text= text_ptr;(++text_ptr)->tok_start= tok_ptr; } /*:83*//*90:*/ -#line 1362 "ctangle.w" +#line 1366 "ctangle.w" static void scan_section(void) @@ -1465,7 +1478,7 @@ printf("*%d",(int)section_count);update_terminal(); next_control= ignore; while(true){ /*92:*/ -#line 1403 "ctangle.w" +#line 1407 "ctangle.w" while(next_control<definition) @@ -1474,11 +1487,11 @@ loc-= 2;next_control= get_next(); } /*:92*/ -#line 1376 "ctangle.w" +#line 1380 "ctangle.w" if(next_control==definition){ /*93:*/ -#line 1410 "ctangle.w" +#line 1414 "ctangle.w" while((next_control= get_next())=='\n'); if(next_control!=identifier){ @@ -1494,7 +1507,7 @@ scan_repl(macro); cur_text->text_link= macro; /*:93*/ -#line 1378 "ctangle.w" +#line 1382 "ctangle.w" continue; } @@ -1504,14 +1517,14 @@ p= name_dir;break; if(next_control==section_name){ p= cur_section_name; /*94:*/ -#line 1432 "ctangle.w" +#line 1436 "ctangle.w" while((next_control= get_next())=='+'); if(next_control!='='&&next_control!=eq_eq) continue; /*:94*/ -#line 1386 "ctangle.w" +#line 1390 "ctangle.w" break; } @@ -1519,20 +1532,20 @@ return; } no_where= print_where= false; /*95:*/ -#line 1437 "ctangle.w" +#line 1441 "ctangle.w" /*96:*/ -#line 1442 "ctangle.w" +#line 1446 "ctangle.w" store_two_bytes((sixteen_bits)(0150000+section_count)); /*:96*/ -#line 1438 "ctangle.w" +#line 1442 "ctangle.w" scan_repl(section_name); /*97:*/ -#line 1446 "ctangle.w" +#line 1450 "ctangle.w" if(p==name_dir||p==NULL){ last_unnamed->text_link= cur_text-text_info;last_unnamed= cur_text; @@ -1549,16 +1562,16 @@ cur_text->text_link= section_flag; /*:97*/ -#line 1440 "ctangle.w" +#line 1444 "ctangle.w" /*:95*/ -#line 1392 "ctangle.w" +#line 1396 "ctangle.w" } /*:90*//*98:*/ -#line 1461 "ctangle.w" +#line 1465 "ctangle.w" static void phase_one(void){ @@ -1571,7 +1584,7 @@ check_complete(); } /*:98*//*100:*/ -#line 1477 "ctangle.w" +#line 1481 "ctangle.w" static void skip_limbo(void) @@ -1585,7 +1598,7 @@ char c= *loc++; switch(ccode[(eight_bits)c]){ case new_section:return; case translit_code:/*102:*/ -#line 1507 "ctangle.w" +#line 1511 "ctangle.w" while(xisspace(*loc)&&loc<limit)loc++; loc+= 3; @@ -1610,7 +1623,7 @@ translit[i-0200][loc-beg]= '\0'; } /*:102*/ -#line 1489 "ctangle.w" +#line 1493 "ctangle.w" break; case format_code:case'@':break; case control_text:if(c=='q'||c=='Q'){ @@ -1628,7 +1641,7 @@ default:err_print("! Double @ should be used in limbo"); } /*:100*//*103:*/ -#line 1533 "ctangle.w" +#line 1537 "ctangle.w" void print_stats(void){ |