texlive[68358] Build/source/texk/web2c: [CWEB] Avoid shadow

commits+ascherer at tug.org commits+ascherer at tug.org
Sun Sep 24 21:54:25 CEST 2023


Revision: 68358
          https://tug.org/svn/texlive?view=revision&revision=68358
Author:   ascherer
Date:     2023-09-24 21:54:24 +0200 (Sun, 24 Sep 2023)
Log Message:
-----------
[CWEB] Avoid shadow variables.

There are far too many single-character variables around. Sigh!

(See also
https://github.com/ascherer/mmix/commit/ed0c894d09df3b35479fdd18c8f5564f0b8bf691
for a similar situation in MMIX, where such global (sic!) variables
weren't even put in the index across module borders.)

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/ChangeLog
    trunk/Build/source/texk/web2c/ctangleboot.cin
    trunk/Build/source/texk/web2c/cwebboot.cin
    trunk/Build/source/texk/web2c/cwebdir/ChangeLog
    trunk/Build/source/texk/web2c/cwebdir/comm-w2c.h
    trunk/Build/source/texk/web2c/cwebdir/common.c
    trunk/Build/source/texk/web2c/cwebdir/common.h
    trunk/Build/source/texk/web2c/cwebdir/common.w
    trunk/Build/source/texk/web2c/cwebdir/ctang-bs.ch
    trunk/Build/source/texk/web2c/cwebdir/ctangle.c
    trunk/Build/source/texk/web2c/cwebdir/ctangle.w
    trunk/Build/source/texk/web2c/cwebdir/ctwill.bux
    trunk/Build/source/texk/web2c/cwebdir/cweav-bs.ch
    trunk/Build/source/texk/web2c/cwebdir/cweave.w

Modified: trunk/Build/source/texk/web2c/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/ChangeLog	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/ChangeLog	2023-09-24 19:54:24 UTC (rev 68358)
@@ -1,3 +1,8 @@
+2023-09-24  Andreas Scherer  <https://ascherer.github.io>
+
+	* ctangleboot.cin,
+	* cwebboot.cin: Avoid shadow variables.
+
 2023-09-17  TANAKA Takuji  <ttk at t-lab.opal.ne.jp>
 
 	* {mftraptest,triptest,twill}.test:

Modified: trunk/Build/source/texk/web2c/ctangleboot.cin
===================================================================
--- trunk/Build/source/texk/web2c/ctangleboot.cin	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/ctangleboot.cin	2023-09-24 19:54:24 UTC (rev 68358)
@@ -251,7 +251,7 @@
 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 213 "cwebdir/comm-w2c.h"
@@ -282,7 +282,7 @@
 extern FILE*check_file;
 
 /*:16*//*116:*/
-#line 549 "cwebdir/ctang-w2c.ch"
+#line 541 "cwebdir/ctang-w2c.ch"
 
 extern char cb_banner[];
 
@@ -335,19 +335,19 @@
 static stack_pointer stack_end= stack+stack_size;
 static stack_pointer stack_ptr;
 
-/*:32*//*37:*/
-#line 357 "cwebdir/ctangle.w"
+/*:32*//*38:*/
+#line 367 "cwebdir/ctangle.w"
 
 static int cur_val;
 
-/*:37*//*42:*/
-#line 449 "cwebdir/ctangle.w"
+/*:38*//*42:*/
+#line 457 "cwebdir/ctangle.w"
 
 static eight_bits out_state;
 static boolean protect;
 
 /*:42*//*45:*/
-#line 480 "cwebdir/ctangle.w"
+#line 488 "cwebdir/ctangle.w"
 
 static name_pointer output_files[max_files];
 static name_pointer*cur_out_file,*end_output_files,*an_output_file;
@@ -354,34 +354,34 @@
 static char cur_section_name_char;
 static char output_file_name[longest_name+1];
 
-/*:45*//*52:*/
-#line 573 "cwebdir/ctangle.w"
+/*:45*//*53:*/
+#line 584 "cwebdir/ctangle.w"
 
 static boolean output_defs_seen= false;
 
-/*:52*//*57:*/
-#line 687 "cwebdir/ctangle.w"
+/*:53*//*57:*/
+#line 694 "cwebdir/ctangle.w"
 
 static char translit[0200][translit_length];
 
 /*:57*//*62:*/
-#line 763 "cwebdir/ctangle.w"
+#line 770 "cwebdir/ctangle.w"
 
 static eight_bits ccode[256];
 
 /*:62*//*66:*/
-#line 823 "cwebdir/ctangle.w"
+#line 830 "cwebdir/ctangle.w"
 
 static boolean comment_continues= false;
 
 /*:66*//*68:*/
-#line 860 "cwebdir/ctangle.w"
+#line 867 "cwebdir/ctangle.w"
 
 static name_pointer cur_section_name;
 static boolean no_where;
 
 /*:68*//*82:*/
-#line 1177 "cwebdir/ctangle.w"
+#line 1185 "cwebdir/ctangle.w"
 
 static text_pointer cur_text;
 static eight_bits next_control;
@@ -431,54 +431,48 @@
 #line 242 "cwebdir/ctangle.w"
 static void store_two_bytes(sixteen_bits);
 
-/*:30*//*35:*/
-#line 321 "cwebdir/ctangle.w"
+/*:30*//*37:*/
+#line 347 "cwebdir/ctangle.w"
 
 static void push_level(name_pointer);
 static void pop_level(boolean);
-
-/*:35*//*39:*/
-#line 394 "cwebdir/ctangle.w"
 static void get_output(void);
 
-/*:39*//*44:*/
-#line 470 "cwebdir/ctangle.w"
+/*:37*//*44:*/
+#line 478 "cwebdir/ctangle.w"
 static void flush_buffer(void);
 
 /*:44*//*49:*/
-#line 541 "cwebdir/ctangle.w"
+#line 547 "cwebdir/ctangle.w"
+
 static void phase_two(void);
-
-/*:49*//*53:*/
-#line 576 "cwebdir/ctangle.w"
-
 static void output_defs(void);
 static void out_char(eight_bits);
 
-/*:53*//*65:*/
-#line 803 "cwebdir/ctangle.w"
+/*:49*//*65:*/
+#line 810 "cwebdir/ctangle.w"
 
 static eight_bits skip_ahead(void);
 static boolean skip_comment(boolean);
 
 /*:65*//*70:*/
-#line 910 "cwebdir/ctangle.w"
+#line 918 "cwebdir/ctangle.w"
 static eight_bits get_next(void);
 
 /*:70*//*84:*/
-#line 1203 "cwebdir/ctangle.w"
+#line 1211 "cwebdir/ctangle.w"
 static void scan_repl(eight_bits);
 
 /*:84*//*91:*/
-#line 1395 "cwebdir/ctangle.w"
+#line 1402 "cwebdir/ctangle.w"
 static void scan_section(void);
 
 /*:91*//*99:*/
-#line 1472 "cwebdir/ctangle.w"
+#line 1479 "cwebdir/ctangle.w"
 static void phase_one(void);
 
 /*:99*//*101:*/
-#line 1505 "cwebdir/ctangle.w"
+#line 1512 "cwebdir/ctangle.w"
 static void skip_limbo(void);
 
 /*:101*/
@@ -511,12 +505,12 @@
 last_unnamed= text_info;text_info->text_link= macro;
 
 /*:27*//*46:*/
-#line 490 "cwebdir/ctangle.w"
+#line 498 "cwebdir/ctangle.w"
 
 cur_out_file= end_output_files= output_files+max_files;
 
 /*:46*//*58:*/
-#line 690 "cwebdir/ctangle.w"
+#line 697 "cwebdir/ctangle.w"
 
 {int i;
 for(i= 0;i<0200;i++)
@@ -523,9 +517,9 @@
 snprintf(translit[i],translit_length,"X%02X",(unsigned int)(0200+i));
 }
 
-#line 174 "cwebdir/ctang-w2c.ch"
+#line 166 "cwebdir/ctang-w2c.ch"
 /*:58*//*63:*/
-#line 766 "cwebdir/ctangle.w"
+#line 773 "cwebdir/ctangle.w"
 {
 int c;
 for(c= 0;c<256;c++)ccode[c]= ignore;
@@ -545,11 +539,11 @@
 ccode['\'']= ord;
 
 /*:63*//*78:*/
-#line 1098 "cwebdir/ctangle.w"
+#line 1106 "cwebdir/ctangle.w"
 section_text[0]= ' ';
 
 /*:78*//*117:*/
-#line 552 "cwebdir/ctang-w2c.ch"
+#line 544 "cwebdir/ctang-w2c.ch"
 
 strncpy(cb_banner,banner,max_banner-1);
 
@@ -601,8 +595,8 @@
 *tok_ptr++= x&0377;
 }
 
-/*:29*//*34:*/
-#line 307 "cwebdir/ctangle.w"
+/*:29*//*35:*/
+#line 315 "cwebdir/ctangle.w"
 
 static void
 push_level(
@@ -610,7 +604,7 @@
 {
 #line 79 "cwebdir/ctang-w2c.ch"
 if(stack_ptr==stack_end)overflow(_("stack"));
-#line 313 "cwebdir/ctangle.w"
+#line 321 "cwebdir/ctangle.w"
 *stack_ptr= cur_state;
 stack_ptr++;
 if(p!=NULL){
@@ -619,9 +613,10 @@
 }
 }
 
-/*:34*//*36:*/
-#line 329 "cwebdir/ctangle.w"
 
+/*:35*//*36:*/
+#line 334 "cwebdir/ctangle.w"
+
 static void
 pop_level(
 boolean flag)
@@ -634,8 +629,8 @@
 if(stack_ptr> stack)cur_state= *stack_ptr;
 }
 
-/*:36*//*38:*/
-#line 364 "cwebdir/ctangle.w"
+/*:36*//*39:*/
+#line 374 "cwebdir/ctangle.w"
 
 static void
 get_output(void)
@@ -658,7 +653,7 @@
 case 0:cur_val= (int)a;out_char(identifier);break;
 case 1:if(a==output_defs_flag)output_defs();
 else/*40:*/
-#line 399 "cwebdir/ctangle.w"
+#line 407 "cwebdir/ctangle.w"
 
 {
 a-= 024000;
@@ -666,7 +661,7 @@
 else if(a!=0){
 #line 85 "cwebdir/ctang-w2c.ch"
 printf("%s",_("\n! Not present: <"));
-#line 405 "cwebdir/ctangle.w"
+#line 413 "cwebdir/ctangle.w"
 print_section_name(a+name_dir);err_print(">");
 
 }
@@ -674,7 +669,7 @@
 }
 
 /*:40*/
-#line 385 "cwebdir/ctangle.w"
+#line 395 "cwebdir/ctangle.w"
 
 break;
 default:cur_val= (int)a-050000;
@@ -684,8 +679,8 @@
 }
 }
 
-/*:38*//*43:*/
-#line 457 "cwebdir/ctangle.w"
+/*:39*//*43:*/
+#line 465 "cwebdir/ctangle.w"
 
 static void
 flush_buffer(void)
@@ -700,7 +695,7 @@
 }
 
 /*:43*//*48:*/
-#line 509 "cwebdir/ctangle.w"
+#line 517 "cwebdir/ctangle.w"
 
 static void
 phase_two(void){
@@ -710,25 +705,26 @@
 /*33:*/
 #line 296 "cwebdir/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 "cwebdir/ctangle.w"
+#line 523 "cwebdir/ctangle.w"
 
-/*51:*/
-#line 569 "cwebdir/ctangle.w"
+/*52:*/
+#line 580 "cwebdir/ctangle.w"
 
 if(!output_defs_seen)
 output_defs();
 
-/*:51*/
-#line 516 "cwebdir/ctangle.w"
+/*:52*/
+#line 524 "cwebdir/ctangle.w"
 
 if(text_info->text_link==macro&&cur_out_file==end_output_files){
 #line 97 "cwebdir/ctang-w2c.ch"
 printf("%s",_("\n! No program text was specified."));mark_harmless();
-#line 519 "cwebdir/ctangle.w"
+#line 527 "cwebdir/ctangle.w"
 
 }
 else{
@@ -737,25 +733,33 @@
 #line 104 "cwebdir/ctang-w2c.ch"
 _("\nWriting the output file (%s):"):
 _("\nWriting the output files: (%s)"),C_file_name);
-#line 526 "cwebdir/ctangle.w"
+#line 534 "cwebdir/ctangle.w"
 
 update_terminal();
 }
-if(text_info->text_link!=macro){
+if(text_info->text_link!=macro)
+/*51:*/
+#line 570 "cwebdir/ctangle.w"
+
+{
 while(stack_ptr> stack)get_output();
 flush_buffer();
 }
+
+/*:51*/
+#line 538 "cwebdir/ctangle.w"
+
 /*50:*/
-#line 133 "cwebdir/ctang-w2c.ch"
+#line 129 "cwebdir/ctang-w2c.ch"
 
 if(check_for_change){
 fclose(C_file);C_file= NULL;
 /*106:*/
-#line 432 "cwebdir/ctang-w2c.ch"
+#line 424 "cwebdir/ctang-w2c.ch"
 
 if((C_file= fopen(C_file_name,"r"))!=NULL){
 /*107:*/
-#line 439 "cwebdir/ctang-w2c.ch"
+#line 431 "cwebdir/ctang-w2c.ch"
 
 boolean comparison= false;
 
@@ -764,7 +768,7 @@
 
 
 /*108:*/
-#line 453 "cwebdir/ctang-w2c.ch"
+#line 445 "cwebdir/ctang-w2c.ch"
 
 do{
 char x[BUFSIZ],y[BUFSIZ];
@@ -774,7 +778,7 @@
 }while(comparison&&!feof(C_file)&&!feof(check_file));
 
 /*:108*/
-#line 446 "cwebdir/ctang-w2c.ch"
+#line 438 "cwebdir/ctang-w2c.ch"
 
 
 fclose(C_file);C_file= NULL;
@@ -781,10 +785,10 @@
 fclose(check_file);check_file= NULL;
 
 /*:107*/
-#line 434 "cwebdir/ctang-w2c.ch"
+#line 426 "cwebdir/ctang-w2c.ch"
 
 /*109:*/
-#line 464 "cwebdir/ctang-w2c.ch"
+#line 456 "cwebdir/ctang-w2c.ch"
 
 if(comparison)
 remove(check_file_name);
@@ -794,13 +798,13 @@
 }
 
 /*:109*/
-#line 435 "cwebdir/ctang-w2c.ch"
+#line 427 "cwebdir/ctang-w2c.ch"
 
 }else
 rename(check_file_name,C_file_name);
 
 /*:106*/
-#line 136 "cwebdir/ctang-w2c.ch"
+#line 132 "cwebdir/ctang-w2c.ch"
 
 }
 for(an_output_file= end_output_files;an_output_file> cur_out_file;){
@@ -807,7 +811,7 @@
 an_output_file--;
 sprint_section_name(output_file_name,*an_output_file);
 if(check_for_change)/*105:*/
-#line 423 "cwebdir/ctang-w2c.ch"
+#line 415 "cwebdir/ctang-w2c.ch"
 {
 if((C_file= fopen(output_file_name,"a"))==NULL)
 fatal(_("! Cannot open output file "),output_file_name);
@@ -818,7 +822,7 @@
 }
 
 /*:105*/
-#line 141 "cwebdir/ctang-w2c.ch"
+#line 137 "cwebdir/ctang-w2c.ch"
 
 else{
 fclose(C_file);
@@ -828,23 +832,38 @@
 }
 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 "cwebdir/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 146 "cwebdir/ctang-w2c.ch"
+
+/*51:*/
+#line 570 "cwebdir/ctangle.w"
+
+{
 while(stack_ptr> stack)get_output();
 flush_buffer();
+}
+
+/*:51*/
+#line 147 "cwebdir/ctang-w2c.ch"
+
 if(check_for_change){
 fclose(C_file);C_file= NULL;
 /*110:*/
-#line 477 "cwebdir/ctang-w2c.ch"
+#line 469 "cwebdir/ctang-w2c.ch"
 
 if(0==strcmp("/dev/stdout",output_file_name))
 /*112:*/
-#line 504 "cwebdir/ctang-w2c.ch"
+#line 496 "cwebdir/ctang-w2c.ch"
 {
 /*115:*/
-#line 535 "cwebdir/ctang-w2c.ch"
+#line 527 "cwebdir/ctang-w2c.ch"
 
 char in_buf[BUFSIZ+1];
 int in_size;
@@ -854,7 +873,7 @@
 
 
 /*:115*/
-#line 505 "cwebdir/ctang-w2c.ch"
+#line 497 "cwebdir/ctang-w2c.ch"
 
 do{
 in_size= fread(in_buf,sizeof(char),BUFSIZ,check_file);
@@ -863,7 +882,7 @@
 }while(!feof(check_file));
 fclose(check_file);check_file= NULL;
 /*111:*/
-#line 494 "cwebdir/ctang-w2c.ch"
+#line 486 "cwebdir/ctang-w2c.ch"
 
 if(comparison)
 remove(check_file_name);
@@ -873,19 +892,19 @@
 }
 
 /*:111*/
-#line 512 "cwebdir/ctang-w2c.ch"
+#line 504 "cwebdir/ctang-w2c.ch"
 
 }
 
 /*:112*/
-#line 479 "cwebdir/ctang-w2c.ch"
+#line 471 "cwebdir/ctang-w2c.ch"
 
 else if(0==strcmp("/dev/stderr",output_file_name))
 /*113:*/
-#line 517 "cwebdir/ctang-w2c.ch"
+#line 509 "cwebdir/ctang-w2c.ch"
 {
 /*115:*/
-#line 535 "cwebdir/ctang-w2c.ch"
+#line 527 "cwebdir/ctang-w2c.ch"
 
 char in_buf[BUFSIZ+1];
 int in_size;
@@ -895,7 +914,7 @@
 
 
 /*:115*/
-#line 518 "cwebdir/ctang-w2c.ch"
+#line 510 "cwebdir/ctang-w2c.ch"
 
 do{
 in_size= fread(in_buf,sizeof(char),BUFSIZ,check_file);
@@ -904,7 +923,7 @@
 }while(!feof(check_file));
 fclose(check_file);check_file= NULL;
 /*111:*/
-#line 494 "cwebdir/ctang-w2c.ch"
+#line 486 "cwebdir/ctang-w2c.ch"
 
 if(comparison)
 remove(check_file_name);
@@ -914,20 +933,20 @@
 }
 
 /*:111*/
-#line 525 "cwebdir/ctang-w2c.ch"
+#line 517 "cwebdir/ctang-w2c.ch"
 
 }
 
 /*:113*/
-#line 481 "cwebdir/ctang-w2c.ch"
+#line 473 "cwebdir/ctang-w2c.ch"
 
 else if(0==strcmp("/dev/null",output_file_name))
 /*114:*/
-#line 530 "cwebdir/ctang-w2c.ch"
+#line 522 "cwebdir/ctang-w2c.ch"
 {
 boolean comparison= true;
 /*111:*/
-#line 494 "cwebdir/ctang-w2c.ch"
+#line 486 "cwebdir/ctang-w2c.ch"
 
 if(comparison)
 remove(check_file_name);
@@ -937,17 +956,17 @@
 }
 
 /*:111*/
-#line 532 "cwebdir/ctang-w2c.ch"
+#line 524 "cwebdir/ctang-w2c.ch"
 
 }
 
 /*:114*/
-#line 483 "cwebdir/ctang-w2c.ch"
+#line 475 "cwebdir/ctang-w2c.ch"
 
 else{
 if((C_file= fopen(output_file_name,"r"))!=NULL){
 /*107:*/
-#line 439 "cwebdir/ctang-w2c.ch"
+#line 431 "cwebdir/ctang-w2c.ch"
 
 boolean comparison= false;
 
@@ -956,7 +975,7 @@
 
 
 /*108:*/
-#line 453 "cwebdir/ctang-w2c.ch"
+#line 445 "cwebdir/ctang-w2c.ch"
 
 do{
 char x[BUFSIZ],y[BUFSIZ];
@@ -966,7 +985,7 @@
 }while(comparison&&!feof(C_file)&&!feof(check_file));
 
 /*:108*/
-#line 446 "cwebdir/ctang-w2c.ch"
+#line 438 "cwebdir/ctang-w2c.ch"
 
 
 fclose(C_file);C_file= NULL;
@@ -973,10 +992,10 @@
 fclose(check_file);check_file= NULL;
 
 /*:107*/
-#line 486 "cwebdir/ctang-w2c.ch"
+#line 478 "cwebdir/ctang-w2c.ch"
 
 /*111:*/
-#line 494 "cwebdir/ctang-w2c.ch"
+#line 486 "cwebdir/ctang-w2c.ch"
 
 if(comparison)
 remove(check_file_name);
@@ -986,7 +1005,7 @@
 }
 
 /*:111*/
-#line 487 "cwebdir/ctang-w2c.ch"
+#line 479 "cwebdir/ctang-w2c.ch"
 
 }else
 rename(check_file_name,output_file_name);
@@ -993,28 +1012,28 @@
 }
 
 /*:110*/
-#line 158 "cwebdir/ctang-w2c.ch"
+#line 150 "cwebdir/ctang-w2c.ch"
 
 }
 }
 if(check_for_change)
 strcpy(check_file_name,"");
-#line 564 "cwebdir/ctangle.w"
+#line 569 "cwebdir/ctangle.w"
 
 /*:50*/
-#line 533 "cwebdir/ctangle.w"
+#line 539 "cwebdir/ctangle.w"
 
 if(show_happiness){
 if(show_progress)new_line();
 #line 111 "cwebdir/ctang-w2c.ch"
 printf("%s",_("Done."));
-#line 537 "cwebdir/ctangle.w"
+#line 543 "cwebdir/ctangle.w"
 }
 }
 }
 
 /*:48*//*54:*/
-#line 585 "cwebdir/ctangle.w"
+#line 592 "cwebdir/ctangle.w"
 
 static void
 output_defs(void)
@@ -1039,9 +1058,9 @@
 if(a<024000){
 cur_val= (int)a;out_char(identifier);
 }
-#line 168 "cwebdir/ctang-w2c.ch"
+#line 160 "cwebdir/ctang-w2c.ch"
 else if(a<050000)confusion(_("macro defs have strange char"));
-#line 610 "cwebdir/ctangle.w"
+#line 617 "cwebdir/ctangle.w"
 else{
 cur_val= (int)a-050000;cur_section= (sixteen_bits)cur_val;
 out_char(section_number);
@@ -1056,7 +1075,7 @@
 }
 
 /*:54*//*55:*/
-#line 628 "cwebdir/ctangle.w"
+#line 635 "cwebdir/ctangle.w"
 
 static void
 out_char(
@@ -1069,14 +1088,14 @@
 if(protect||out_state==verbatim)C_putc('\\');
 flush_buffer();if(out_state!=verbatim)out_state= normal;break;
 /*59:*/
-#line 200 "cwebdir/ctang-w2c.ch"
+#line 192 "cwebdir/ctang-w2c.ch"
 
-#line 697 "cwebdir/ctangle.w"
+#line 704 "cwebdir/ctangle.w"
 case identifier:
 if(out_state==num_or_id)C_putc(' ');
 for(j= (cur_val+name_dir)->byte_start;
 j<(cur_val+name_dir+1)->byte_start;j++)
-#line 208 "cwebdir/ctang-w2c.ch"
+#line 200 "cwebdir/ctang-w2c.ch"
 if(ishigh(*j)){
 
 if(transliterate_utf_eight){
@@ -1087,14 +1106,14 @@
 C_printf("%s",translit[(eight_bits)(*j)-0200]);
 }
 else C_putc(*j);
-#line 704 "cwebdir/ctangle.w"
+#line 711 "cwebdir/ctangle.w"
 out_state= num_or_id;break;
 
 /*:59*/
-#line 639 "cwebdir/ctangle.w"
+#line 646 "cwebdir/ctangle.w"
 
 /*60:*/
-#line 706 "cwebdir/ctangle.w"
+#line 713 "cwebdir/ctangle.w"
 
 case section_number:
 if(cur_val> 0)C_printf("/*%d:*/",cur_val);
@@ -1121,10 +1140,10 @@
 break;
 
 /*:60*/
-#line 640 "cwebdir/ctangle.w"
+#line 647 "cwebdir/ctangle.w"
 
 /*56:*/
-#line 658 "cwebdir/ctangle.w"
+#line 665 "cwebdir/ctangle.w"
 
 case plus_plus:C_putc('+');C_putc('+');out_state= normal;break;
 case minus_minus:C_putc('-');C_putc('-');out_state= normal;break;
@@ -1145,7 +1164,7 @@
 break;
 
 /*:56*/
-#line 641 "cwebdir/ctangle.w"
+#line 648 "cwebdir/ctangle.w"
 
 case'=':case'>':C_putc(cur_char);C_putc(' ');
 out_state= normal;break;
@@ -1164,7 +1183,7 @@
 }
 
 /*:55*//*64:*/
-#line 787 "cwebdir/ctangle.w"
+#line 794 "cwebdir/ctangle.w"
 
 static eight_bits
 skip_ahead(void)
@@ -1182,7 +1201,7 @@
 }
 
 /*:64*//*67:*/
-#line 826 "cwebdir/ctangle.w"
+#line 833 "cwebdir/ctangle.w"
 
 static boolean skip_comment(
 boolean is_long_comment)
@@ -1193,9 +1212,9 @@
 if(is_long_comment){
 if(get_line())return comment_continues= true;
 else{
-#line 223 "cwebdir/ctang-w2c.ch"
+#line 215 "cwebdir/ctang-w2c.ch"
 err_print(_("! Input ended in mid-comment"));
-#line 837 "cwebdir/ctangle.w"
+#line 844 "cwebdir/ctangle.w"
 
 return comment_continues= false;
 }
@@ -1208,9 +1227,9 @@
 }
 if(c=='@'){
 if(ccode[(eight_bits)*loc]==new_section){
-#line 229 "cwebdir/ctang-w2c.ch"
+#line 221 "cwebdir/ctang-w2c.ch"
 err_print(_("! Section name ended in mid-comment"));loc--;
-#line 850 "cwebdir/ctangle.w"
+#line 857 "cwebdir/ctangle.w"
 
 return comment_continues= false;
 }
@@ -1220,7 +1239,7 @@
 }
 
 /*:67*//*69:*/
-#line 867 "cwebdir/ctangle.w"
+#line 874 "cwebdir/ctangle.w"
 
 static eight_bits
 get_next(void)
@@ -1232,12 +1251,12 @@
 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 "cwebdir/ctangle.w"
+#line 1221 "cwebdir/ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -1251,7 +1270,7 @@
 }
 
 /*:85*/
-#line 879 "cwebdir/ctangle.w"
+#line 887 "cwebdir/ctangle.w"
 
 }
 else return(eight_bits)'\n';
@@ -1264,7 +1283,7 @@
 }
 loc++;
 if(xisdigit(c)||c=='.')/*73:*/
-#line 951 "cwebdir/ctangle.w"
+#line 959 "cwebdir/ctangle.w"
 {
 boolean hex_flag= false;
 id_first= loc-1;
@@ -1298,13 +1317,13 @@
 }
 
 /*:73*/
-#line 890 "cwebdir/ctangle.w"
+#line 898 "cwebdir/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 "cwebdir/ctangle.w"
+#line 996 "cwebdir/ctangle.w"
 {
 char delim= (char)c;
 id_first= section_text+1;
@@ -1316,15 +1335,15 @@
 while(true){
 if(loc>=limit){
 if(*(limit-1)!='\\'){
-#line 235 "cwebdir/ctang-w2c.ch"
+#line 227 "cwebdir/ctang-w2c.ch"
 err_print(_("! String didn't end"));loc= limit;break;
-#line 1000 "cwebdir/ctangle.w"
+#line 1008 "cwebdir/ctangle.w"
 
 }
 if(get_line()==false){
-#line 241 "cwebdir/ctang-w2c.ch"
+#line 233 "cwebdir/ctang-w2c.ch"
 err_print(_("! Input ended in middle of string"));loc= buffer;break;
-#line 1004 "cwebdir/ctangle.w"
+#line 1012 "cwebdir/ctangle.w"
 
 }
 else if(++id_loc<=section_text_end)*id_loc= '\n';
@@ -1342,9 +1361,9 @@
 if(++id_loc<=section_text_end)*id_loc= (char)c;
 }
 if(id_loc>=section_text_end){
-#line 247 "cwebdir/ctang-w2c.ch"
+#line 239 "cwebdir/ctang-w2c.ch"
 printf("%s",_("\n! String too long: "));
-#line 1022 "cwebdir/ctangle.w"
+#line 1030 "cwebdir/ctangle.w"
 
 term_write(section_text+1,25);
 err_print("...");
@@ -1354,11 +1373,11 @@
 }
 
 /*:74*/
-#line 894 "cwebdir/ctangle.w"
+#line 902 "cwebdir/ctangle.w"
 
 else if(isalpha((int)c)||isxalpha(c)||ishigh(c))
 /*72:*/
-#line 942 "cwebdir/ctangle.w"
+#line 950 "cwebdir/ctangle.w"
 {
 id_first= --loc;
 do
@@ -1369,45 +1388,45 @@
 }
 
 /*:72*/
-#line 896 "cwebdir/ctangle.w"
+#line 904 "cwebdir/ctangle.w"
 
 else if(c=='@')/*75:*/
-#line 1033 "cwebdir/ctangle.w"
+#line 1041 "cwebdir/ctangle.w"
 
 switch(c= ccode[(eight_bits)*loc++]){
 case ignore:continue;
-#line 253 "cwebdir/ctang-w2c.ch"
+#line 245 "cwebdir/ctang-w2c.ch"
 case translit_code:err_print(_("! Use @l in limbo only"));continue;
-#line 1037 "cwebdir/ctangle.w"
+#line 1045 "cwebdir/ctangle.w"
 
 case control_text:while((c= skip_ahead())=='@');
 
 if(*(loc-1)!='>')
-#line 259 "cwebdir/ctang-w2c.ch"
+#line 251 "cwebdir/ctang-w2c.ch"
 err_print(_("! Double @ should be used in control text"));
-#line 1042 "cwebdir/ctangle.w"
+#line 1050 "cwebdir/ctangle.w"
 
 continue;
 case section_name:
 cur_section_name_char= *(loc-1);
 /*77:*/
-#line 1078 "cwebdir/ctangle.w"
+#line 1086 "cwebdir/ctangle.w"
 {
 char*k= section_text;
 /*79:*/
-#line 1100 "cwebdir/ctangle.w"
+#line 1108 "cwebdir/ctangle.w"
 
 while(true){
 if(loc> limit&&get_line()==false){
-#line 277 "cwebdir/ctang-w2c.ch"
+#line 269 "cwebdir/ctang-w2c.ch"
 err_print(_("! Input ended in section name"));
-#line 1104 "cwebdir/ctangle.w"
+#line 1112 "cwebdir/ctangle.w"
 
 loc= buffer+1;break;
 }
 c= (eight_bits)*loc;
 /*80:*/
-#line 1123 "cwebdir/ctangle.w"
+#line 1131 "cwebdir/ctangle.w"
 
 if(c=='@'){
 c= (eight_bits)*(loc+1);
@@ -1415,15 +1434,15 @@
 loc+= 2;break;
 }
 if(ccode[(eight_bits)c]==new_section){
-#line 289 "cwebdir/ctang-w2c.ch"
+#line 281 "cwebdir/ctang-w2c.ch"
 err_print(_("! Section name didn't end"));break;
-#line 1131 "cwebdir/ctangle.w"
+#line 1139 "cwebdir/ctangle.w"
 
 }
 if(ccode[(eight_bits)c]==section_name){
-#line 295 "cwebdir/ctang-w2c.ch"
+#line 287 "cwebdir/ctang-w2c.ch"
 err_print(_("! Nesting of section names not allowed"));break;
-#line 1135 "cwebdir/ctangle.w"
+#line 1143 "cwebdir/ctangle.w"
 
 }
 *(++k)= '@';loc++;
@@ -1430,7 +1449,7 @@
 }
 
 /*:80*/
-#line 1108 "cwebdir/ctangle.w"
+#line 1116 "cwebdir/ctangle.w"
 
 loc++;if(k<section_text_end)k++;
 if(xisspace(c)){
@@ -1439,9 +1458,9 @@
 *k= (char)c;
 }
 if(k>=section_text_end){
-#line 283 "cwebdir/ctang-w2c.ch"
+#line 275 "cwebdir/ctang-w2c.ch"
 printf("%s",_("\n! Section name too long: "));
-#line 1117 "cwebdir/ctangle.w"
+#line 1125 "cwebdir/ctangle.w"
 
 term_write(section_text+1,25);
 printf("...");mark_harmless();
@@ -1449,7 +1468,7 @@
 if(*k==' '&&k> section_text)k--;
 
 /*:79*/
-#line 1080 "cwebdir/ctangle.w"
+#line 1088 "cwebdir/ctangle.w"
 
 if(k-section_text> 3&&strncmp(k-2,"...",3)==0)
 cur_section_name= section_lookup(section_text+1,k-3,true);
@@ -1458,7 +1477,7 @@
 
 if(cur_section_name_char=='(')
 /*47:*/
-#line 494 "cwebdir/ctangle.w"
+#line 502 "cwebdir/ctangle.w"
 
 {
 for(an_output_file= cur_out_file;
@@ -1469,36 +1488,36 @@
 *--cur_out_file= cur_section_name;
 #line 91 "cwebdir/ctang-w2c.ch"
 else overflow(_("output files"));
-#line 503 "cwebdir/ctangle.w"
+#line 511 "cwebdir/ctangle.w"
 }
 }
 
 /*:47*/
-#line 1088 "cwebdir/ctangle.w"
+#line 1096 "cwebdir/ctangle.w"
 
 return section_name;
 }
 
 /*:77*/
-#line 1046 "cwebdir/ctangle.w"
+#line 1054 "cwebdir/ctangle.w"
 
 case string:/*81:*/
-#line 1145 "cwebdir/ctangle.w"
+#line 1153 "cwebdir/ctangle.w"
 
 id_first= loc++;*(limit+1)= '@';*(limit+2)= '>';
 while(*loc!='@'||*(loc+1)!='>')loc++;
-#line 301 "cwebdir/ctang-w2c.ch"
+#line 293 "cwebdir/ctang-w2c.ch"
 if(loc>=limit)err_print(_("! Verbatim string didn't end"));
-#line 1149 "cwebdir/ctangle.w"
+#line 1157 "cwebdir/ctangle.w"
 
 id_loc= loc;loc+= 2;
 return string;
 
 /*:81*/
-#line 1047 "cwebdir/ctangle.w"
+#line 1055 "cwebdir/ctangle.w"
 
 case ord:/*76:*/
-#line 1058 "cwebdir/ctangle.w"
+#line 1066 "cwebdir/ctangle.w"
 
 id_first= loc;
 if(*loc=='\\')
@@ -1506,17 +1525,17 @@
 while(*loc!='\''){
 if(*loc=='@'){
 if(*(loc+1)!='@')
-#line 265 "cwebdir/ctang-w2c.ch"
+#line 257 "cwebdir/ctang-w2c.ch"
 err_print(_("! Double @ should be used in ASCII constant"));
-#line 1066 "cwebdir/ctangle.w"
+#line 1074 "cwebdir/ctangle.w"
 
 else loc++;
 }
 loc++;
 if(loc> limit){
-#line 271 "cwebdir/ctang-w2c.ch"
+#line 263 "cwebdir/ctang-w2c.ch"
 err_print(_("! String didn't end"));loc= limit-1;break;
-#line 1072 "cwebdir/ctangle.w"
+#line 1080 "cwebdir/ctangle.w"
 
 }
 }
@@ -1524,13 +1543,13 @@
 return ord;
 
 /*:76*/
-#line 1048 "cwebdir/ctangle.w"
+#line 1056 "cwebdir/ctangle.w"
 
 default:return c;
 }
 
 /*:75*/
-#line 897 "cwebdir/ctangle.w"
+#line 905 "cwebdir/ctangle.w"
 
 else if(xisspace(c)){
 if(!preprocessing||loc> limit)continue;
@@ -1540,7 +1559,7 @@
 }
 else if(c=='#'&&loc==buffer+1)preprocessing= true;
 mistake:/*71:*/
-#line 919 "cwebdir/ctangle.w"
+#line 927 "cwebdir/ctangle.w"
 
 switch(c){
 case'+':if(*loc=='+')compress(plus_plus);break;
@@ -1565,7 +1584,7 @@
 }
 
 /*:71*/
-#line 905 "cwebdir/ctangle.w"
+#line 913 "cwebdir/ctangle.w"
 
 return c;
 }
@@ -1572,7 +1591,7 @@
 }
 
 /*:69*//*83:*/
-#line 1181 "cwebdir/ctangle.w"
+#line 1189 "cwebdir/ctangle.w"
 
 static void
 scan_repl(
@@ -1580,10 +1599,9 @@
 {
 sixteen_bits a;
 if(t==section_name)/*85:*/
-#line 1213 "cwebdir/ctangle.w"
+#line 1221 "cwebdir/ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -1597,11 +1615,11 @@
 }
 
 /*:85*/
-#line 1187 "cwebdir/ctangle.w"
+#line 1195 "cwebdir/ctangle.w"
 
 while(true)switch(a= get_next()){
 /*86:*/
-#line 1228 "cwebdir/ctangle.w"
+#line 1235 "cwebdir/ctangle.w"
 
 case identifier:store_id(a);
 if(*buffer=='#'&&(
@@ -1614,15 +1632,15 @@
 case section_name:if(t!=section_name)goto done;
 else{
 /*87:*/
-#line 1269 "cwebdir/ctangle.w"
+#line 1276 "cwebdir/ctangle.w"
 {
 char*try_loc= loc;
 while(*try_loc==' '&&try_loc<limit)try_loc++;
 if(*try_loc=='+'&&try_loc<limit)try_loc++;
 while(*try_loc==' '&&try_loc<limit)try_loc++;
-#line 337 "cwebdir/ctang-w2c.ch"
+#line 329 "cwebdir/ctang-w2c.ch"
 if(*try_loc=='=')err_print(_("! Missing `@ ' before a named section"));
-#line 1275 "cwebdir/ctangle.w"
+#line 1282 "cwebdir/ctangle.w"
 
 
 
@@ -1629,16 +1647,15 @@
 }
 
 /*:87*/
-#line 1239 "cwebdir/ctangle.w"
+#line 1246 "cwebdir/ctangle.w"
 
 a= cur_section_name-name_dir;
 app_repl((a/0400)+0250);
 app_repl(a%0400);
 /*85:*/
-#line 1213 "cwebdir/ctangle.w"
+#line 1221 "cwebdir/ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -1652,13 +1669,13 @@
 }
 
 /*:85*/
-#line 1243 "cwebdir/ctangle.w"
+#line 1250 "cwebdir/ctangle.w"
 
 }
 break;
-#line 325 "cwebdir/ctang-w2c.ch"
+#line 317 "cwebdir/ctang-w2c.ch"
 case output_defs_code:if(t!=section_name)err_print(_("! Misplaced @h"));
-#line 1247 "cwebdir/ctangle.w"
+#line 1254 "cwebdir/ctangle.w"
 
 else{
 output_defs_seen= true;
@@ -1666,10 +1683,9 @@
 app_repl((a/0400)+0200);
 app_repl(a%0400);
 /*85:*/
-#line 1213 "cwebdir/ctangle.w"
+#line 1221 "cwebdir/ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -1683,21 +1699,21 @@
 }
 
 /*:85*/
-#line 1253 "cwebdir/ctangle.w"
+#line 1260 "cwebdir/ctangle.w"
 
 }
 break;
 case constant:case string:
 /*88:*/
-#line 1286 "cwebdir/ctangle.w"
+#line 1293 "cwebdir/ctangle.w"
 
 app_repl(a);
 while(id_first<id_loc){
 if(*id_first=='@'){
 if(*(id_first+1)=='@')id_first++;
-#line 343 "cwebdir/ctang-w2c.ch"
+#line 335 "cwebdir/ctang-w2c.ch"
 else err_print(_("! Double @ should be used in string"));
-#line 1292 "cwebdir/ctangle.w"
+#line 1299 "cwebdir/ctangle.w"
 
 }
 else if(a==constant&&*id_first=='\''&&!keep_digit_separators)
@@ -1707,12 +1723,12 @@
 app_repl(a);
 
 /*:88*/
-#line 1257 "cwebdir/ctangle.w"
+#line 1264 "cwebdir/ctangle.w"
 
 break;
 case ord:
 /*89:*/
-#line 1304 "cwebdir/ctangle.w"
+#line 1311 "cwebdir/ctangle.w"
 {
 int c= (int)((eight_bits)*id_first);
 if(c=='\\'){
@@ -1749,9 +1765,9 @@
 case'\\':c= '\\';break;
 case'\'':c= '\'';break;
 case'\"':c= '\"';break;
-#line 349 "cwebdir/ctang-w2c.ch"
+#line 341 "cwebdir/ctang-w2c.ch"
 default:err_print(_("! Unrecognized escape sequence"));
-#line 1341 "cwebdir/ctangle.w"
+#line 1348 "cwebdir/ctangle.w"
 
 }
 }
@@ -1764,20 +1780,20 @@
 }
 
 /*:89*/
-#line 1260 "cwebdir/ctangle.w"
+#line 1267 "cwebdir/ctangle.w"
 
 break;
 case definition:case format_code:case begin_C:if(t!=section_name)goto done;
 else{
-#line 331 "cwebdir/ctang-w2c.ch"
+#line 323 "cwebdir/ctang-w2c.ch"
 err_print(_("! @d, @f and @c are ignored in C text"));continue;
-#line 1265 "cwebdir/ctangle.w"
+#line 1272 "cwebdir/ctangle.w"
 
 }
 case new_section:goto done;
 
 /*:86*/
-#line 1192 "cwebdir/ctangle.w"
+#line 1200 "cwebdir/ctangle.w"
 
 case')':app_repl(a);
 if(t==macro)app_repl(' ');
@@ -1785,14 +1801,14 @@
 default:app_repl(a);
 }
 done:next_control= (eight_bits)a;
-#line 319 "cwebdir/ctang-w2c.ch"
+#line 311 "cwebdir/ctang-w2c.ch"
 if(text_ptr> text_info_end)overflow(_("text"));
-#line 1200 "cwebdir/ctangle.w"
+#line 1208 "cwebdir/ctangle.w"
 cur_text= text_ptr;(++text_ptr)->tok_start= tok_ptr;
 }
 
 /*:83*//*90:*/
-#line 1362 "cwebdir/ctangle.w"
+#line 1369 "cwebdir/ctangle.w"
 
 static void
 scan_section(void)
@@ -1807,7 +1823,7 @@
 next_control= ignore;
 while(true){
 /*92:*/
-#line 1403 "cwebdir/ctangle.w"
+#line 1410 "cwebdir/ctangle.w"
 
 while(next_control<definition)
 
@@ -1816,17 +1832,17 @@
 }
 
 /*:92*/
-#line 1376 "cwebdir/ctangle.w"
+#line 1383 "cwebdir/ctangle.w"
 
 if(next_control==definition){
 /*93:*/
-#line 1410 "cwebdir/ctangle.w"
+#line 1417 "cwebdir/ctangle.w"
 
 while((next_control= get_next())=='\n');
 if(next_control!=identifier){
-#line 355 "cwebdir/ctang-w2c.ch"
+#line 347 "cwebdir/ctang-w2c.ch"
 err_print(_("! Definition flushed, must start with identifier"));
-#line 1414 "cwebdir/ctangle.w"
+#line 1421 "cwebdir/ctangle.w"
 
 continue;
 }
@@ -1838,7 +1854,7 @@
 cur_text->text_link= macro;
 
 /*:93*/
-#line 1378 "cwebdir/ctangle.w"
+#line 1385 "cwebdir/ctangle.w"
 
 continue;
 }
@@ -1848,7 +1864,7 @@
 if(next_control==section_name){
 p= cur_section_name;
 /*94:*/
-#line 1432 "cwebdir/ctangle.w"
+#line 1439 "cwebdir/ctangle.w"
 
 while((next_control= get_next())=='+');
 if(next_control!='='&&next_control!=eq_eq)
@@ -1855,7 +1871,7 @@
 continue;
 
 /*:94*/
-#line 1386 "cwebdir/ctangle.w"
+#line 1393 "cwebdir/ctangle.w"
 
 break;
 }
@@ -1863,20 +1879,20 @@
 }
 no_where= print_where= false;
 /*95:*/
-#line 1437 "cwebdir/ctangle.w"
+#line 1444 "cwebdir/ctangle.w"
 
 /*96:*/
-#line 1442 "cwebdir/ctangle.w"
+#line 1449 "cwebdir/ctangle.w"
 
 store_two_bytes((sixteen_bits)(0150000+section_count));
 
 
 /*:96*/
-#line 1438 "cwebdir/ctangle.w"
+#line 1445 "cwebdir/ctangle.w"
 
 scan_repl(section_name);
 /*97:*/
-#line 1446 "cwebdir/ctangle.w"
+#line 1453 "cwebdir/ctangle.w"
 
 if(p==name_dir||p==NULL){
 last_unnamed->text_link= cur_text-text_info;last_unnamed= cur_text;
@@ -1893,16 +1909,16 @@
 
 
 /*:97*/
-#line 1440 "cwebdir/ctangle.w"
+#line 1447 "cwebdir/ctangle.w"
 
 
 /*:95*/
-#line 1392 "cwebdir/ctangle.w"
+#line 1399 "cwebdir/ctangle.w"
 
 }
 
 /*:90*//*98:*/
-#line 1461 "cwebdir/ctangle.w"
+#line 1468 "cwebdir/ctangle.w"
 
 static void
 phase_one(void){
@@ -1915,7 +1931,7 @@
 }
 
 /*:98*//*100:*/
-#line 1477 "cwebdir/ctangle.w"
+#line 1484 "cwebdir/ctangle.w"
 
 static void
 skip_limbo(void)
@@ -1929,15 +1945,15 @@
 switch(ccode[(eight_bits)c]){
 case new_section:return;
 case translit_code:/*102:*/
-#line 1507 "cwebdir/ctangle.w"
+#line 1514 "cwebdir/ctangle.w"
 
 while(xisspace(*loc)&&loc<limit)loc++;
 loc+= 3;
 if(loc> limit||!xisxdigit(*(loc-3))||!xisxdigit(*(loc-2))
 ||(*(loc-3)>='0'&&*(loc-3)<='7')||!xisspace(*(loc-1)))
-#line 375 "cwebdir/ctang-w2c.ch"
+#line 367 "cwebdir/ctang-w2c.ch"
 err_print(_("! Improper hex number following @l"));
-#line 1513 "cwebdir/ctangle.w"
+#line 1520 "cwebdir/ctangle.w"
 
 else{
 unsigned int i;
@@ -1947,9 +1963,9 @@
 beg= loc;
 while(loc<limit&&(xisalpha(*loc)||xisdigit(*loc)||isxalpha(*loc)))loc++;
 if(loc-beg>=translit_length)
-#line 381 "cwebdir/ctang-w2c.ch"
+#line 373 "cwebdir/ctang-w2c.ch"
 err_print(_("! Replacement string in @l too long"));
-#line 1523 "cwebdir/ctangle.w"
+#line 1530 "cwebdir/ctangle.w"
 
 else{
 strncpy(translit[i-0200],beg,(size_t)(loc-beg));
@@ -1958,21 +1974,21 @@
 }
 
 /*:102*/
-#line 1489 "cwebdir/ctangle.w"
+#line 1496 "cwebdir/ctangle.w"
 break;
 case format_code:case'@':break;
 case control_text:if(c=='q'||c=='Q'){
 while((c= (char)skip_ahead())=='@');
 if(*(loc-1)!='>')
-#line 361 "cwebdir/ctang-w2c.ch"
+#line 353 "cwebdir/ctang-w2c.ch"
 err_print(_("! Double @ should be used in control text"));
-#line 1495 "cwebdir/ctangle.w"
+#line 1502 "cwebdir/ctangle.w"
 
 break;
-#line 368 "cwebdir/ctang-w2c.ch"
+#line 360 "cwebdir/ctang-w2c.ch"
 }/* otherwise fall through */
 default:err_print(_("! Double @ should be used in limbo"));
-#line 1499 "cwebdir/ctangle.w"
+#line 1506 "cwebdir/ctangle.w"
 
 }
 }
@@ -1980,11 +1996,11 @@
 }
 
 /*:100*//*103:*/
-#line 1533 "cwebdir/ctangle.w"
+#line 1540 "cwebdir/ctangle.w"
 
 void
 print_stats(void){
-#line 394 "cwebdir/ctang-w2c.ch"
+#line 386 "cwebdir/ctang-w2c.ch"
 puts(_("\nMemory usage statistics:"));
 printf(_("%td names (out of %ld)\n"),
 (ptrdiff_t)(name_ptr-name_dir),(long)max_names);
@@ -1993,9 +2009,9 @@
 printf(_("%td bytes (out of %ld)\n"),
 (ptrdiff_t)(byte_ptr-byte_mem),(long)max_bytes);
 printf(_("%td tokens (out of %ld)\n"),
-#line 1544 "cwebdir/ctangle.w"
+#line 1551 "cwebdir/ctangle.w"
 (ptrdiff_t)(tok_ptr-tok_mem),(long)max_toks);
 }
 
-#line 407 "cwebdir/ctang-w2c.ch"
+#line 399 "cwebdir/ctang-w2c.ch"
 /*:103*/

Modified: trunk/Build/source/texk/web2c/cwebboot.cin
===================================================================
--- trunk/Build/source/texk/web2c/cwebboot.cin	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebboot.cin	2023-09-24 19:54:24 UTC (rev 68358)
@@ -253,7 +253,7 @@
 extern name_pointer name_ptr;
 extern name_pointer hash[];
 extern hash_pointer hash_end;
-extern hash_pointer h;
+extern hash_pointer hash_ptr;
 
 /*:10*//*12:*/
 #line 213 "cwebdir/comm-w2c.h"
@@ -367,7 +367,7 @@
 
 name_pointer hash[hash_size];
 hash_pointer hash_end= hash+hash_size-1;
-hash_pointer h;
+hash_pointer hash_ptr;
 
 /*:46*//*65:*/
 #line 1002 "cwebdir/common.w"
@@ -515,7 +515,7 @@
 /*:45*//*47:*/
 #line 628 "cwebdir/common.w"
 
-for(h= hash;h<=hash_end;*h++= NULL);
+for(hash_ptr= hash;hash_ptr<=hash_end;*hash_ptr++= NULL);
 
 /*:47*/
 #line 78 "cwebdir/comm-w2c.ch"

Modified: trunk/Build/source/texk/web2c/cwebdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ChangeLog	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/ChangeLog	2023-09-24 19:54:24 UTC (rev 68358)
@@ -1,5 +1,18 @@
 2023-09-24  Andreas Scherer  <https://ascherer.github.io>
 
+	* comm-w2c.h,
+	* common.c,
+	* common.h,
+	* common.w,
+	* ctang-bs.ch,
+	* ctangle.c,
+	* ctangle.w,
+	* ctwill.bux,
+	* cweav-bs.ch,
+	* cweave.w: Avoid shadow variables.
+
+2023-09-24  Andreas Scherer  <https://ascherer.github.io>
+
 	* ctwill-{hint,mini}.ch,
 	* cweave.w: Disentangle 'reduce' and 'translate'.
 

Modified: trunk/Build/source/texk/web2c/cwebdir/comm-w2c.h
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/comm-w2c.h	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/comm-w2c.h	2023-09-24 19:54:24 UTC (rev 68358)
@@ -186,7 +186,7 @@
 extern name_pointer name_ptr; /* first unused position in |name_dir| */
 extern name_pointer hash[]; /* heads of hash lists */
 extern hash_pointer hash_end; /* end of |hash| */
-extern hash_pointer h; /* index into hash-head array */
+extern hash_pointer hash_ptr; /* index into hash-head array */
 
 @ @<Predecl...@>=
 extern name_pointer id_lookup(const char *,const char *,eight_bits);

Modified: trunk/Build/source/texk/web2c/cwebdir/common.c
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/common.c	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/common.c	2023-09-24 19:54:24 UTC (rev 68358)
@@ -197,7 +197,7 @@
 extern name_pointer name_ptr;
 extern name_pointer hash[];
 extern hash_pointer hash_end;
-extern hash_pointer h;
+extern hash_pointer hash_ptr;
 
 /*:10*//*12:*/
 #line 193 "common.h"
@@ -304,7 +304,7 @@
 
 name_pointer hash[hash_size];
 hash_pointer hash_end= hash+hash_size-1;
-hash_pointer h;
+hash_pointer hash_ptr;
 
 /*:46*//*65:*/
 #line 1002 "common.w"
@@ -418,7 +418,7 @@
 /*:45*//*47:*/
 #line 628 "common.w"
 
-for(h= hash;h<=hash_end;*h++= NULL);
+for(hash_ptr= hash;hash_ptr<=hash_end;*hash_ptr++= NULL);
 
 /*:47*/
 #line 99 "common.w"

Modified: trunk/Build/source/texk/web2c/cwebdir/common.h
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/common.h	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/common.h	2023-09-24 19:54:24 UTC (rev 68358)
@@ -166,7 +166,7 @@
 extern name_pointer name_ptr; /* first unused position in |name_dir| */
 extern name_pointer hash[]; /* heads of hash lists */
 extern hash_pointer hash_end; /* end of |hash| */
-extern hash_pointer h; /* index into hash-head array */
+extern hash_pointer hash_ptr; /* index into hash-head array */
 
 @ @<Predecl...@>=
 extern name_pointer id_lookup(const char *,const char *,eight_bits);

Modified: trunk/Build/source/texk/web2c/cwebdir/common.w
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/common.w	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/common.w	2023-09-24 19:54:24 UTC (rev 68358)
@@ -621,12 +621,12 @@
 @<Global var...@>=
 name_pointer hash[hash_size]; /* heads of hash lists */
 hash_pointer hash_end = hash+hash_size-1; /* end of |hash| */
-hash_pointer h; /* index into hash-head array */
+hash_pointer hash_ptr; /* index into hash-head array */
 
 @ Initially all the hash lists are empty.
 
 @<Init...@>=
-for (h=hash; h<=hash_end; *h++=NULL) ;
+for (hash_ptr=hash; hash_ptr<=hash_end; *hash_ptr++=NULL) ;
 
 @ Here is the main procedure for finding identifiers:
 
@@ -638,7 +638,7 @@
 eight_bits t) /* the |ilk|; used by \.{CWEAVE} only */
 {
   const char *i=first; /* position in |buffer| */
-  int h; /* hash code; shadows |hash_pointer h| */
+  int h; /* hash code */
   size_t l; /* length of the given identifier */
   name_pointer p; /* where the identifier is being sought */
   if (last==NULL) for (last=first; *last!='\0'; last++);

Modified: trunk/Build/source/texk/web2c/cwebdir/ctang-bs.ch
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctang-bs.ch	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/ctang-bs.ch	2023-09-24 19:54:24 UTC (rev 68358)
@@ -48,9 +48,6 @@
 extern name_info name_dir[]; /* information about names */
 extern name_pointer name_dir_end; /* end of |name_dir| */
 extern name_pointer name_ptr; /* first unused position in |name_dir| */
-extern name_pointer hash[]; /* heads of hash lists */
-extern hash_pointer hash_end; /* end of |hash| */
-extern hash_pointer h; /* index into hash-head array */
 @y
 @d ilk dummy.Ilk /* used by \.{CWEAVE} only */
 
@@ -78,9 +75,6 @@
 extern name_pointer name_dir_end; /* end of |name_dir| */
 extern name_pointer name_ptr; /* first unused position in |name_dir| */
 extern char huge* byte_ptr; /* first unused position in |byte_mem| */
-extern name_pointer hash[]; /* heads of hash lists */
-extern hash_pointer hash_end; /* end of |hash| */
-extern hash_pointer h; /* index into hash-head array */
 @z
 
 

Modified: trunk/Build/source/texk/web2c/cwebdir/ctangle.c
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctangle.c	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/ctangle.c	2023-09-24 19:54:24 UTC (rev 68358)
@@ -230,7 +230,7 @@
 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"
@@ -351,7 +351,7 @@
 static boolean no_where;
 
 /*:68*//*82:*/
-#line 1184 "ctangle.w"
+#line 1185 "ctangle.w"
 
 static text_pointer cur_text;
 static eight_bits next_control;
@@ -424,11 +424,11 @@
 static boolean skip_comment(boolean);
 
 /*:65*//*70:*/
-#line 917 "ctangle.w"
+#line 918 "ctangle.w"
 static eight_bits get_next(void);
 
 /*:70*//*84:*/
-#line 1210 "ctangle.w"
+#line 1211 "ctangle.w"
 static void scan_repl(eight_bits);
 
 /*:84*//*91:*/
@@ -506,7 +506,7 @@
 ccode['\'']= ord;
 
 /*:63*//*78:*/
-#line 1105 "ctangle.w"
+#line 1106 "ctangle.w"
 section_text[0]= ' ';
 
 /*:78*/
@@ -947,12 +947,12 @@
 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 1220 "ctangle.w"
+#line 1221 "ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -966,7 +966,7 @@
 }
 
 /*:85*/
-#line 886 "ctangle.w"
+#line 887 "ctangle.w"
 
 }
 else return(eight_bits)'\n';
@@ -979,7 +979,7 @@
 }
 loc++;
 if(xisdigit(c)||c=='.')/*73:*/
-#line 958 "ctangle.w"
+#line 959 "ctangle.w"
 {
 boolean hex_flag= false;
 id_first= loc-1;
@@ -1013,13 +1013,13 @@
 }
 
 /*:73*/
-#line 897 "ctangle.w"
+#line 898 "ctangle.w"
 
 else if(c=='\''||c=='"'
 ||((c=='L'||c=='u'||c=='U')&&(*loc=='\''||*loc=='"'))
 ||((c=='u'&&*loc=='8')&&(*(loc+1)=='\''||*(loc+1)=='"')))
 /*74:*/
-#line 995 "ctangle.w"
+#line 996 "ctangle.w"
 {
 char delim= (char)c;
 id_first= section_text+1;
@@ -1063,11 +1063,11 @@
 }
 
 /*:74*/
-#line 901 "ctangle.w"
+#line 902 "ctangle.w"
 
 else if(isalpha((int)c)||isxalpha(c)||ishigh(c))
 /*72:*/
-#line 949 "ctangle.w"
+#line 950 "ctangle.w"
 {
 id_first= --loc;
 do
@@ -1078,10 +1078,10 @@
 }
 
 /*:72*/
-#line 903 "ctangle.w"
+#line 904 "ctangle.w"
 
 else if(c=='@')/*75:*/
-#line 1040 "ctangle.w"
+#line 1041 "ctangle.w"
 
 switch(c= ccode[(eight_bits)*loc++]){
 case ignore:continue;
@@ -1096,11 +1096,11 @@
 case section_name:
 cur_section_name_char= *(loc-1);
 /*77:*/
-#line 1085 "ctangle.w"
+#line 1086 "ctangle.w"
 {
 char*k= section_text;
 /*79:*/
-#line 1107 "ctangle.w"
+#line 1108 "ctangle.w"
 
 while(true){
 if(loc> limit&&get_line()==false){
@@ -1110,7 +1110,7 @@
 }
 c= (eight_bits)*loc;
 /*80:*/
-#line 1130 "ctangle.w"
+#line 1131 "ctangle.w"
 
 if(c=='@'){
 c= (eight_bits)*(loc+1);
@@ -1129,7 +1129,7 @@
 }
 
 /*:80*/
-#line 1115 "ctangle.w"
+#line 1116 "ctangle.w"
 
 loc++;if(k<section_text_end)k++;
 if(xisspace(c)){
@@ -1146,7 +1146,7 @@
 if(*k==' '&&k> section_text)k--;
 
 /*:79*/
-#line 1087 "ctangle.w"
+#line 1088 "ctangle.w"
 
 if(k-section_text> 3&&strncmp(k-2,"...",3)==0)
 cur_section_name= section_lookup(section_text+1,k-3,true);
@@ -1169,16 +1169,16 @@
 }
 
 /*:47*/
-#line 1095 "ctangle.w"
+#line 1096 "ctangle.w"
 
 return section_name;
 }
 
 /*:77*/
-#line 1053 "ctangle.w"
+#line 1054 "ctangle.w"
 
 case string:/*81:*/
-#line 1152 "ctangle.w"
+#line 1153 "ctangle.w"
 
 id_first= loc++;*(limit+1)= '@';*(limit+2)= '>';
 while(*loc!='@'||*(loc+1)!='>')loc++;
@@ -1188,10 +1188,10 @@
 return string;
 
 /*:81*/
-#line 1054 "ctangle.w"
+#line 1055 "ctangle.w"
 
 case ord:/*76:*/
-#line 1065 "ctangle.w"
+#line 1066 "ctangle.w"
 
 id_first= loc;
 if(*loc=='\\')
@@ -1213,13 +1213,13 @@
 return ord;
 
 /*:76*/
-#line 1055 "ctangle.w"
+#line 1056 "ctangle.w"
 
 default:return c;
 }
 
 /*:75*/
-#line 904 "ctangle.w"
+#line 905 "ctangle.w"
 
 else if(xisspace(c)){
 if(!preprocessing||loc> limit)continue;
@@ -1229,7 +1229,7 @@
 }
 else if(c=='#'&&loc==buffer+1)preprocessing= true;
 mistake:/*71:*/
-#line 926 "ctangle.w"
+#line 927 "ctangle.w"
 
 switch(c){
 case'+':if(*loc=='+')compress(plus_plus);break;
@@ -1254,7 +1254,7 @@
 }
 
 /*:71*/
-#line 912 "ctangle.w"
+#line 913 "ctangle.w"
 
 return c;
 }
@@ -1261,7 +1261,7 @@
 }
 
 /*:69*//*83:*/
-#line 1188 "ctangle.w"
+#line 1189 "ctangle.w"
 
 static void
 scan_repl(
@@ -1269,10 +1269,9 @@
 {
 sixteen_bits a;
 if(t==section_name)/*85:*/
-#line 1220 "ctangle.w"
+#line 1221 "ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -1286,7 +1285,7 @@
 }
 
 /*:85*/
-#line 1194 "ctangle.w"
+#line 1195 "ctangle.w"
 
 while(true)switch(a= get_next()){
 /*86:*/
@@ -1322,10 +1321,9 @@
 app_repl((a/0400)+0250);
 app_repl(a%0400);
 /*85:*/
-#line 1220 "ctangle.w"
+#line 1221 "ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -1351,10 +1349,9 @@
 app_repl((a/0400)+0200);
 app_repl(a%0400);
 /*85:*/
-#line 1220 "ctangle.w"
+#line 1221 "ctangle.w"
 
 {
-eight_bits a;
 store_two_bytes(0150000);
 if(changing&&include_depth==change_depth){
 id_first= change_file_name;
@@ -1456,7 +1453,7 @@
 case new_section:goto done;
 
 /*:86*/
-#line 1199 "ctangle.w"
+#line 1200 "ctangle.w"
 
 case')':app_repl(a);
 if(t==macro)app_repl(' ');

Modified: trunk/Build/source/texk/web2c/cwebdir/ctangle.w
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctangle.w	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/ctangle.w	2023-09-24 19:54:24 UTC (rev 68358)
@@ -882,6 +882,7 @@
       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;
           @<Insert the line number into |tok_mem|@>@;
         }
@@ -1219,7 +1220,6 @@
 
 @<Insert the line...@>=
 {
-  eight_bits a; /* shadow variable |a| */
   store_two_bytes(0150000);
   if (changing && include_depth==change_depth) { /* correction made Feb 2017 */
     id_first=change_file_name;

Modified: trunk/Build/source/texk/web2c/cwebdir/ctwill.bux
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctwill.bux	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/ctwill.bux	2023-09-24 19:54:24 UTC (rev 68358)
@@ -44,7 +44,7 @@
 
 @$hash {COMMON.W}46 \&{name\_pointer} [\,]@>
 @$hash_end {COMMON.W}46 \&{hash\_pointer}@>
-@$h {COMMON.W}46 \&{hash\_pointer}@>
+@$hash_ptr {COMMON.W}46 \&{hash\_pointer}@>
 
 @$id_lookup {COMMON.W}48 \&{name\_pointer} (\,)@>
 

Modified: trunk/Build/source/texk/web2c/cwebdir/cweav-bs.ch
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/cweav-bs.ch	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/cweav-bs.ch	2023-09-24 19:54:24 UTC (rev 68358)
@@ -51,9 +51,6 @@
 extern name_info name_dir[]; /* information about names */
 extern name_pointer name_dir_end; /* end of |name_dir| */
 extern name_pointer name_ptr; /* first unused position in |name_dir| */
-extern name_pointer hash[]; /* heads of hash lists */
-extern hash_pointer hash_end; /* end of |hash| */
-extern hash_pointer h; /* index into hash-head array */
 @y
 @d ilk dummy.Ilk /* used by \.{CWEAVE} only */
 
@@ -81,9 +78,6 @@
 extern name_pointer name_dir_end; /* end of |name_dir| */
 extern name_pointer name_ptr; /* first unused position in |name_dir| */
 extern char huge* byte_ptr; /* first unused position in |byte_mem| */
-extern name_pointer hash[]; /* heads of hash lists */
-extern hash_pointer hash_end; /* end of |hash| */
-extern hash_pointer h; /* index into hash-head array */
 @z
 
 

Modified: trunk/Build/source/texk/web2c/cwebdir/cweave.w
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/cweave.w	2023-09-24 15:20:35 UTC (rev 68357)
+++ trunk/Build/source/texk/web2c/cwebdir/cweave.w	2023-09-24 19:54:24 UTC (rev 68358)
@@ -4612,8 +4612,8 @@
 @<Do the first pass...@>= {
 int c;
 for (c=0; c<256; c++) bucket[c]=NULL;
-for (h=hash; h<=hash_end; h++) {
-  next_name=*h;
+for (hash_ptr=hash; hash_ptr<=hash_end; hash_ptr++) {
+  next_name=*hash_ptr;
   while (next_name) {
     cur_name=next_name; next_name=cur_name->link;
     if (cur_name->xref!=(void *)xmem) {



More information about the tex-live-commits mailing list.