From 79a47698484a9289c56dbfbc4a5e0e4aef4fc582 Mon Sep 17 00:00:00 2001 From: Andreas Scherer Date: Sun, 6 Jun 2021 10:49:47 +0000 Subject: [CWEB] New release 4.4. This is yet another service release for CWEB 4.0. * Upstream CWEB 4.4 has been reset to the original buffer sizes of CWEB 3.64c. These are now also used in stand-alone CWEBbin. CWEB for TeX Live uses extended/maxed-out buffer settings. * A few minor typographical bugs were fixed. * Tons of minutiae were addressed in the 'fullmanual' documents. git-svn-id: svn://tug.org/texlive/trunk@59486 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/ctangleboot.cin | 557 ++++++++++++++++---------------- 1 file changed, 276 insertions(+), 281 deletions(-) (limited to 'Build/source/texk/web2c/ctangleboot.cin') diff --git a/Build/source/texk/web2c/ctangleboot.cin b/Build/source/texk/web2c/ctangleboot.cin index a0db9c59c00..02eef23e706 100644 --- a/Build/source/texk/web2c/ctangleboot.cin +++ b/Build/source/texk/web2c/ctangleboot.cin @@ -11,7 +11,7 @@ #if HAVE_GETTEXT #include #else -#define gettext(A) A +#define gettext(a) a #endif #include @@ -25,10 +25,10 @@ /*:4*/ #line 67 "cwebdir/ctangle.w" -#define banner "This is CTANGLE, Version 4.3" \ +#define banner "This is CTANGLE, Version 4.4" \ \ -#define _(S) gettext(S) \ +#define _(s) gettext(s) \ #define and_and 04 #define lt_lt 020 @@ -69,7 +69,7 @@ #define web_file_name file_name[0] \ #define length(c) (size_t) ((c+1) ->byte_start-(c) ->byte_start) -#define print_id(c) term_write((c) ->byte_start,length((c) ) ) +#define print_id(c) term_write((c) ->byte_start,length(c) ) #define llink link #define rlink dummy.Rlink #define root name_dir->rlink \ @@ -95,18 +95,18 @@ #define new_line putchar('\n') #define term_write(a,b) fflush(stdout) ,fwrite(a,sizeof(char) ,b,stdout) \ +#define buf_size 1000 +#define longest_name 10000 \ + +#define long_buf_size (buf_size+longest_name) #define max_bytes 1000000 \ -#define max_toks 1000000 #define max_names 10239 \ -#define max_sections 4000 -#define max_texts 10239 -#define longest_name 10000 -#define stack_size 500 -#define buf_size 1000 -#define long_buf_size (buf_size+longest_name) \ +#define max_sections 4000 \ +#define max_texts 10239 +#define max_toks 1000000 #define equiv equiv_or_xref \ #define macro 0 @@ -117,6 +117,7 @@ #define join 0177 #define output_defs_flag (2*024000-1) \ +#define stack_size 50 #define cur_end cur_state.end_field #define cur_byte cur_state.byte_field #define cur_name cur_state.name_field @@ -149,7 +150,11 @@ #define section_name 0311 #define new_section 0312 \ -#define app_repl(c) {if(tok_ptr==tok_mem_end) overflow(_("token") ) ;*tok_ptr++= c;} \ +#define app_repl(c) {if(tok_ptr==tok_mem_end) overflow(_("token") ) ;*(tok_ptr++) = c;} \ + +#define store_id(a) a= id_lookup(id_first,id_loc,0) -name_dir; \ +app_repl((a/0400) +0200) ; \ +app_repl(a%0400) ; \ #define keep_digit_separators flags['k'] \ @@ -264,7 +269,7 @@ extern FILE*active_file; extern FILE*check_file; /*:15*//*115:*/ -#line 473 "cwebdir/ctang-w2c.ch" +#line 481 "cwebdir/ctang-w2c.ch" extern char cb_banner[]; @@ -280,8 +285,9 @@ sixteen_bits text_link; }text; typedef text*text_pointer; +#line 66 "cwebdir/ctang-w2c.ch" /*:19*//*31:*/ -#line 273 "cwebdir/ctangle.w" +#line 274 "cwebdir/ctangle.w" typedef struct{ eight_bits*end_field; @@ -296,7 +302,7 @@ typedef output_state*stack_pointer; #line 70 "cwebdir/ctangle.w" /*20:*/ -#line 129 "cwebdir/ctangle.w" +#line 131 "cwebdir/ctangle.w" static text text_info[max_texts]; static text_pointer text_info_end= text_info+max_texts-1; @@ -306,12 +312,12 @@ static eight_bits*tok_mem_end= tok_mem+max_toks-1; static eight_bits*tok_ptr; /*:20*//*26:*/ -#line 199 "cwebdir/ctangle.w" +#line 200 "cwebdir/ctangle.w" static text_pointer last_unnamed; /*:26*//*32:*/ -#line 289 "cwebdir/ctangle.w" +#line 291 "cwebdir/ctangle.w" static output_state cur_state; @@ -320,18 +326,18 @@ static stack_pointer stack_end= stack+stack_size; static stack_pointer stack_ptr; /*:32*//*37:*/ -#line 365 "cwebdir/ctangle.w" +#line 367 "cwebdir/ctangle.w" static int cur_val; /*:37*//*42:*/ -#line 456 "cwebdir/ctangle.w" +#line 458 "cwebdir/ctangle.w" static eight_bits out_state; static boolean protect; /*:42*//*45:*/ -#line 487 "cwebdir/ctangle.w" +#line 489 "cwebdir/ctangle.w" static name_pointer output_files[max_files]; static name_pointer*cur_out_file,*end_output_files,*an_output_file; @@ -339,33 +345,33 @@ static char cur_section_name_char; static char output_file_name[longest_name+1]; /*:45*//*52:*/ -#line 584 "cwebdir/ctangle.w" +#line 589 "cwebdir/ctangle.w" static boolean output_defs_seen= false; /*:52*//*57:*/ -#line 696 "cwebdir/ctangle.w" +#line 701 "cwebdir/ctangle.w" static char translit[128][translit_length]; /*:57*//*62:*/ -#line 775 "cwebdir/ctangle.w" +#line 777 "cwebdir/ctangle.w" static eight_bits ccode[256]; /*:62*//*66:*/ -#line 835 "cwebdir/ctangle.w" +#line 837 "cwebdir/ctangle.w" static boolean comment_continues= false; /*:66*//*68:*/ -#line 872 "cwebdir/ctangle.w" +#line 874 "cwebdir/ctangle.w" static name_pointer cur_section_name; static boolean no_where; /*:68*//*82:*/ -#line 1189 "cwebdir/ctangle.w" +#line 1188 "cwebdir/ctangle.w" static text_pointer cur_text; static eight_bits next_control; @@ -409,57 +415,57 @@ extern void print_stats(void); extern void cb_show_banner(void); /*:16*//*30:*/ -#line 245 "cwebdir/ctangle.w" +#line 246 "cwebdir/ctangle.w" static void store_two_bytes(sixteen_bits); /*:30*//*35:*/ -#line 328 "cwebdir/ctangle.w" +#line 330 "cwebdir/ctangle.w" static void push_level(name_pointer); static void pop_level(boolean); /*:35*//*39:*/ -#line 401 "cwebdir/ctangle.w" +#line 403 "cwebdir/ctangle.w" static void get_output(void); /*:39*//*44:*/ -#line 477 "cwebdir/ctangle.w" +#line 479 "cwebdir/ctangle.w" static void flush_buffer(void); /*:44*//*49:*/ -#line 551 "cwebdir/ctangle.w" +#line 556 "cwebdir/ctangle.w" static void phase_two(void); /*:49*//*53:*/ -#line 587 "cwebdir/ctangle.w" +#line 592 "cwebdir/ctangle.w" static void output_defs(void); static void out_char(eight_bits); /*:53*//*65:*/ -#line 815 "cwebdir/ctangle.w" +#line 817 "cwebdir/ctangle.w" static eight_bits skip_ahead(void); static boolean skip_comment(boolean); /*:65*//*70:*/ -#line 922 "cwebdir/ctangle.w" +#line 924 "cwebdir/ctangle.w" static eight_bits get_next(void); /*:70*//*84:*/ -#line 1215 "cwebdir/ctangle.w" +#line 1214 "cwebdir/ctangle.w" static void scan_repl(eight_bits); /*:84*//*91:*/ -#line 1396 "cwebdir/ctangle.w" +#line 1397 "cwebdir/ctangle.w" static void scan_section(void); /*:91*//*99:*/ -#line 1477 "cwebdir/ctangle.w" +#line 1474 "cwebdir/ctangle.w" static void phase_one(void); /*:99*//*101:*/ -#line 1511 "cwebdir/ctangle.w" +#line 1507 "cwebdir/ctangle.w" static void skip_limbo(void); /*:101*/ @@ -476,28 +482,28 @@ char**av) argc= ac;argv= av; program= ctangle; /*21:*/ -#line 137 "cwebdir/ctangle.w" +#line 139 "cwebdir/ctangle.w" text_info->tok_start= tok_ptr= tok_mem; text_ptr= text_info+1;text_ptr->tok_start= tok_mem; /*:21*//*23:*/ -#line 147 "cwebdir/ctangle.w" +#line 149 "cwebdir/ctangle.w" init_node(name_dir); /*:23*//*27:*/ -#line 202 "cwebdir/ctangle.w" +#line 203 "cwebdir/ctangle.w" last_unnamed= text_info;text_info->text_link= macro; /*:27*//*46:*/ -#line 497 "cwebdir/ctangle.w" +#line 499 "cwebdir/ctangle.w" cur_out_file= end_output_files= output_files+max_files; /*:46*//*58:*/ -#line 699 "cwebdir/ctangle.w" +#line 704 "cwebdir/ctangle.w" { int i; @@ -505,7 +511,7 @@ for(i= 0;i<128;i++)sprintf(translit[i],"X%02X",(unsigned int)(128+i)); } /*:58*//*63:*/ -#line 778 "cwebdir/ctangle.w" +#line 780 "cwebdir/ctangle.w" { int c; for(c= 0;c<256;c++)ccode[c]= ignore; @@ -525,11 +531,11 @@ ccode['<']= ccode['(']= section_name; ccode['\'']= ord; /*:63*//*78:*/ -#line 1111 "cwebdir/ctangle.w" +#line 1112 "cwebdir/ctangle.w" section_text[0]= ' '; /*:78*//*116:*/ -#line 476 "cwebdir/ctang-w2c.ch" +#line 484 "cwebdir/ctang-w2c.ch" strncpy(cb_banner,banner,max_banner-1); @@ -546,7 +552,7 @@ return wrap_up(); } /*:2*//*24:*/ -#line 153 "cwebdir/ctangle.w" +#line 155 "cwebdir/ctangle.w" boolean names_match( name_pointer p, @@ -554,12 +560,11 @@ const char*first, size_t l, eight_bits t) {(void)t; -if(length(p)!=l)return false; -return!strncmp(first,p->byte_start,l); +return length(p)==l&&strncmp(first,p->byte_start,l)==0; } /*:24*//*25:*/ -#line 169 "cwebdir/ctangle.w" +#line 170 "cwebdir/ctangle.w" void init_node( @@ -571,29 +576,29 @@ void init_p(name_pointer p,eight_bits t){(void)p;(void)t;} /*:25*//*29:*/ -#line 235 "cwebdir/ctangle.w" +#line 236 "cwebdir/ctangle.w" static void store_two_bytes( sixteen_bits x) { -#line 65 "cwebdir/ctang-w2c.ch" +#line 73 "cwebdir/ctang-w2c.ch" if(tok_ptr+2> tok_mem_end)overflow(_("token")); -#line 241 "cwebdir/ctangle.w" +#line 242 "cwebdir/ctangle.w" *tok_ptr++= x>>8; *tok_ptr++= x&0377; } /*:29*//*34:*/ -#line 313 "cwebdir/ctangle.w" +#line 315 "cwebdir/ctangle.w" static void push_level( name_pointer p) { -#line 71 "cwebdir/ctang-w2c.ch" +#line 79 "cwebdir/ctang-w2c.ch" if(stack_ptr==stack_end)overflow(_("stack")); -#line 319 "cwebdir/ctangle.w" +#line 321 "cwebdir/ctangle.w" *stack_ptr= cur_state; stack_ptr++; if(p!=NULL){ @@ -604,7 +609,7 @@ cur_section= 0; } /*:34*//*36:*/ -#line 336 "cwebdir/ctangle.w" +#line 338 "cwebdir/ctangle.w" static void pop_level( @@ -620,7 +625,7 @@ if(stack_ptr> stack)cur_state= *stack_ptr; } /*:36*//*38:*/ -#line 372 "cwebdir/ctangle.w" +#line 374 "cwebdir/ctangle.w" static void get_output(void) @@ -643,15 +648,15 @@ switch(a/024000){ case 0:cur_val= a;out_char(identifier);break; case 1:if(a==output_defs_flag)output_defs(); else/*40:*/ -#line 406 "cwebdir/ctangle.w" +#line 408 "cwebdir/ctangle.w" { a-= 024000; if((a+name_dir)->equiv!=(void*)text_info)push_level(a+name_dir); else if(a!=0){ -#line 77 "cwebdir/ctang-w2c.ch" +#line 85 "cwebdir/ctang-w2c.ch" fputs(_("\n! Not present: <"),stdout); -#line 412 "cwebdir/ctangle.w" +#line 414 "cwebdir/ctangle.w" print_section_name(a+name_dir);err_print(">"); } @@ -659,7 +664,7 @@ goto restart; } /*:40*/ -#line 393 "cwebdir/ctangle.w" +#line 395 "cwebdir/ctangle.w" break; default:cur_val= a-050000;if(cur_val> 0)cur_section= cur_val; @@ -669,7 +674,7 @@ out_char(section_number); } /*:38*//*43:*/ -#line 464 "cwebdir/ctangle.w" +#line 466 "cwebdir/ctangle.w" static void flush_buffer(void) @@ -684,48 +689,51 @@ cur_line++; } /*:43*//*48:*/ -#line 516 "cwebdir/ctangle.w" +#line 518 "cwebdir/ctangle.w" static void phase_two(void){ +phase= 2; web_file_open= false; cur_line= 1; /*33:*/ -#line 302 "cwebdir/ctangle.w" +#line 304 "cwebdir/ctangle.w" stack_ptr= stack+1;cur_name= name_dir;cur_repl= text_info->text_link+text_info; cur_byte= cur_repl->tok_start;cur_end= (cur_repl+1)->tok_start;cur_section= 0; /*:33*/ -#line 521 "cwebdir/ctangle.w" +#line 524 "cwebdir/ctangle.w" /*51:*/ -#line 580 "cwebdir/ctangle.w" +#line 585 "cwebdir/ctangle.w" if(!output_defs_seen) output_defs(); /*:51*/ -#line 522 "cwebdir/ctangle.w" +#line 525 "cwebdir/ctangle.w" if(text_info->text_link==macro&&cur_out_file==end_output_files){ -#line 89 "cwebdir/ctang-w2c.ch" +#line 97 "cwebdir/ctang-w2c.ch" fputs(_("\n! No program text was specified."),stdout);mark_harmless; -#line 525 "cwebdir/ctangle.w" +#line 528 "cwebdir/ctangle.w" } else{ if(cur_out_file==end_output_files){ -if(show_progress) -#line 95 "cwebdir/ctang-w2c.ch" +if(show_progress){ +#line 103 "cwebdir/ctang-w2c.ch" printf(_("\nWriting the output file (%s):"),C_file_name); -#line 531 "cwebdir/ctangle.w" +#line 534 "cwebdir/ctangle.w" +update_terminal; +} } else{ if(show_progress){ -#line 101 "cwebdir/ctang-w2c.ch" +#line 109 "cwebdir/ctang-w2c.ch" fputs(_("\nWriting the output files:"),stdout); -#line 535 "cwebdir/ctangle.w" +#line 540 "cwebdir/ctangle.w" printf(" (%s)",C_file_name); update_terminal; @@ -735,45 +743,44 @@ if(text_info->text_link==macro)goto writeloop; while(stack_ptr> stack)get_output(); flush_buffer(); writeloop:/*50:*/ -#line 130 "cwebdir/ctang-w2c.ch" +#line 138 "cwebdir/ctang-w2c.ch" fclose(C_file);C_file= NULL; /*105:*/ -#line 356 "cwebdir/ctang-w2c.ch" +#line 364 "cwebdir/ctang-w2c.ch" if((C_file= fopen(C_file_name,"r"))!=NULL){ /*106:*/ -#line 363 "cwebdir/ctang-w2c.ch" +#line 371 "cwebdir/ctang-w2c.ch" -char x[BUFSIZ],y[BUFSIZ]; -int x_size,y_size,comparison= false; +boolean comparison= false; if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); if(check_for_change)/*107:*/ -#line 378 "cwebdir/ctang-w2c.ch" +#line 385 "cwebdir/ctang-w2c.ch" do{ -x_size= fread(x,1,BUFSIZ,C_file); -y_size= fread(y,1,BUFSIZ,check_file); -comparison= (x_size==y_size); -if(comparison)comparison= !memcmp(x,y,x_size); +char x[BUFSIZ],y[BUFSIZ]; +int x_size= fread(x,sizeof(char),BUFSIZ,C_file); +int y_size= fread(y,sizeof(char),BUFSIZ,check_file); +comparison= (x_size==y_size)&&!memcmp(x,y,x_size); }while(comparison&&!feof(C_file)&&!feof(check_file)); /*:107*/ -#line 371 "cwebdir/ctang-w2c.ch" +#line 378 "cwebdir/ctang-w2c.ch" fclose(C_file);C_file= NULL; fclose(check_file);check_file= NULL; /*:106*/ -#line 358 "cwebdir/ctang-w2c.ch" +#line 366 "cwebdir/ctang-w2c.ch" /*108:*/ -#line 389 "cwebdir/ctang-w2c.ch" +#line 396 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -783,13 +790,13 @@ rename(check_file_name,C_file_name); } /*:108*/ -#line 359 "cwebdir/ctang-w2c.ch" +#line 367 "cwebdir/ctang-w2c.ch" }else rename(check_file_name,C_file_name); /*:105*/ -#line 132 "cwebdir/ctang-w2c.ch" +#line 140 "cwebdir/ctang-w2c.ch" for(an_output_file= end_output_files;an_output_file> cur_out_file;){ an_output_file--; @@ -803,39 +810,40 @@ fatal(_("! Cannot open output file "),check_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); +cur_name= *an_output_file; cur_repl= (text_pointer)cur_name->equiv; cur_byte= cur_repl->tok_start; cur_end= (cur_repl+1)->tok_start; while(stack_ptr> stack)get_output(); flush_buffer();fclose(C_file);C_file= NULL; /*109:*/ -#line 402 "cwebdir/ctang-w2c.ch" +#line 409 "cwebdir/ctang-w2c.ch" if(0==strcmp("/dev/stdout",output_file_name)) /*111:*/ -#line 429 "cwebdir/ctang-w2c.ch" +#line 436 "cwebdir/ctang-w2c.ch" { /*114:*/ -#line 460 "cwebdir/ctang-w2c.ch" +#line 467 "cwebdir/ctang-w2c.ch" char in_buf[BUFSIZ+1]; -int in_size,comparison= true; +int in_size; +boolean comparison= true; if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); /*:114*/ -#line 430 "cwebdir/ctang-w2c.ch" +#line 437 "cwebdir/ctang-w2c.ch" do{ -in_size= fread(in_buf,1,BUFSIZ,check_file); +in_size= fread(in_buf,sizeof(char),BUFSIZ,check_file); in_buf[in_size]= '\0'; fprintf(stdout,"%s",in_buf); }while(!feof(check_file)); fclose(check_file);check_file= NULL; /*110:*/ -#line 419 "cwebdir/ctang-w2c.ch" +#line 426 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -845,37 +853,38 @@ rename(check_file_name,output_file_name); } /*:110*/ -#line 437 "cwebdir/ctang-w2c.ch" +#line 444 "cwebdir/ctang-w2c.ch" } /*:111*/ -#line 404 "cwebdir/ctang-w2c.ch" +#line 411 "cwebdir/ctang-w2c.ch" else if(0==strcmp("/dev/stderr",output_file_name)) /*112:*/ -#line 442 "cwebdir/ctang-w2c.ch" +#line 449 "cwebdir/ctang-w2c.ch" { /*114:*/ -#line 460 "cwebdir/ctang-w2c.ch" +#line 467 "cwebdir/ctang-w2c.ch" char in_buf[BUFSIZ+1]; -int in_size,comparison= true; +int in_size; +boolean comparison= true; if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); /*:114*/ -#line 443 "cwebdir/ctang-w2c.ch" +#line 450 "cwebdir/ctang-w2c.ch" do{ -in_size= fread(in_buf,1,BUFSIZ,check_file); +in_size= fread(in_buf,sizeof(char),BUFSIZ,check_file); in_buf[in_size]= '\0'; fprintf(stderr,"%s",in_buf); }while(!feof(check_file)); fclose(check_file);check_file= NULL; /*110:*/ -#line 419 "cwebdir/ctang-w2c.ch" +#line 426 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -885,20 +894,20 @@ rename(check_file_name,output_file_name); } /*:110*/ -#line 450 "cwebdir/ctang-w2c.ch" +#line 457 "cwebdir/ctang-w2c.ch" } /*:112*/ -#line 406 "cwebdir/ctang-w2c.ch" +#line 413 "cwebdir/ctang-w2c.ch" else if(0==strcmp("/dev/null",output_file_name)) /*113:*/ -#line 455 "cwebdir/ctang-w2c.ch" +#line 462 "cwebdir/ctang-w2c.ch" { -int comparison= true; +boolean comparison= true; /*110:*/ -#line 419 "cwebdir/ctang-w2c.ch" +#line 426 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -908,47 +917,46 @@ rename(check_file_name,output_file_name); } /*:110*/ -#line 457 "cwebdir/ctang-w2c.ch" +#line 464 "cwebdir/ctang-w2c.ch" } /*:113*/ -#line 408 "cwebdir/ctang-w2c.ch" +#line 415 "cwebdir/ctang-w2c.ch" else{ if((C_file= fopen(output_file_name,"r"))!=NULL){ /*106:*/ -#line 363 "cwebdir/ctang-w2c.ch" +#line 371 "cwebdir/ctang-w2c.ch" -char x[BUFSIZ],y[BUFSIZ]; -int x_size,y_size,comparison= false; +boolean comparison= false; if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); if(check_for_change)/*107:*/ -#line 378 "cwebdir/ctang-w2c.ch" +#line 385 "cwebdir/ctang-w2c.ch" do{ -x_size= fread(x,1,BUFSIZ,C_file); -y_size= fread(y,1,BUFSIZ,check_file); -comparison= (x_size==y_size); -if(comparison)comparison= !memcmp(x,y,x_size); +char x[BUFSIZ],y[BUFSIZ]; +int x_size= fread(x,sizeof(char),BUFSIZ,C_file); +int y_size= fread(y,sizeof(char),BUFSIZ,check_file); +comparison= (x_size==y_size)&&!memcmp(x,y,x_size); }while(comparison&&!feof(C_file)&&!feof(check_file)); /*:107*/ -#line 371 "cwebdir/ctang-w2c.ch" +#line 378 "cwebdir/ctang-w2c.ch" fclose(C_file);C_file= NULL; fclose(check_file);check_file= NULL; /*:106*/ -#line 411 "cwebdir/ctang-w2c.ch" +#line 418 "cwebdir/ctang-w2c.ch" /*110:*/ -#line 419 "cwebdir/ctang-w2c.ch" +#line 426 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -958,33 +966,33 @@ rename(check_file_name,output_file_name); } /*:110*/ -#line 412 "cwebdir/ctang-w2c.ch" +#line 419 "cwebdir/ctang-w2c.ch" }else rename(check_file_name,output_file_name); } /*:109*/ -#line 151 "cwebdir/ctang-w2c.ch" +#line 159 "cwebdir/ctang-w2c.ch" } strcpy(check_file_name,""); -#line 575 "cwebdir/ctangle.w" +#line 580 "cwebdir/ctangle.w" /*:50*/ -#line 543 "cwebdir/ctangle.w" +#line 548 "cwebdir/ctangle.w" if(show_happiness){ if(show_progress)new_line; -#line 107 "cwebdir/ctang-w2c.ch" +#line 115 "cwebdir/ctang-w2c.ch" fputs(_("Done."),stdout); -#line 547 "cwebdir/ctangle.w" +#line 552 "cwebdir/ctangle.w" } } } /*:48*//*54:*/ -#line 594 "cwebdir/ctangle.w" +#line 599 "cwebdir/ctangle.w" static void output_defs(void) @@ -1010,9 +1018,9 @@ a= (a-0200)*0400+*cur_byte++; if(a<024000){ cur_val= a;out_char(identifier); } -#line 159 "cwebdir/ctang-w2c.ch" +#line 167 "cwebdir/ctang-w2c.ch" else if(a<050000)confusion(_("macro defs have strange char")); -#line 620 "cwebdir/ctangle.w" +#line 625 "cwebdir/ctangle.w" else{ cur_val= a-050000;cur_section= cur_val;out_char(section_number); } @@ -1026,7 +1034,7 @@ pop_level(false); } /*:54*//*55:*/ -#line 637 "cwebdir/ctangle.w" +#line 642 "cwebdir/ctangle.w" static void out_char( @@ -1039,25 +1047,22 @@ 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 705 "cwebdir/ctangle.w" +#line 710 "cwebdir/ctangle.w" case identifier: if(out_state==num_or_id)C_putc(' '); -j= (cur_val+name_dir)->byte_start; -k= (cur_val+name_dir+1)->byte_start; -while(jbyte_start,k= (cur_val+name_dir+1)->byte_start; +j 0)C_printf("/*%d:*/",cur_val); @@ -1068,12 +1073,12 @@ cur_char= '\n'; goto restart; }else{ sixteen_bits a; -a= 0400**cur_byte++; +a= *cur_byte++*0400; a+= *cur_byte++; C_printf("\n#line %d \"",a); -cur_val= *cur_byte++; -cur_val= 0400*(cur_val-0200)+*cur_byte++; +cur_val= (*cur_byte++-0200)*0400; +cur_val+= *cur_byte++; for(j= (cur_val+name_dir)->byte_start,k= (cur_val+name_dir+1)->byte_start; j');C_putc('*');out_state= normal; break; /*:56*/ -#line 650 "cwebdir/ctangle.w" +#line 655 "cwebdir/ctangle.w" case'=':case'>':C_putc(cur_char);C_putc(' '); out_state= normal;break; @@ -1127,7 +1132,7 @@ default:C_putc(cur_char);out_state= normal;break; } /*:55*//*64:*/ -#line 799 "cwebdir/ctangle.w" +#line 801 "cwebdir/ctangle.w" static eight_bits skip_ahead(void) @@ -1145,7 +1150,7 @@ if(c!=ignore||*(loc-1)=='>')return c; } /*:64*//*67:*/ -#line 838 "cwebdir/ctangle.w" +#line 840 "cwebdir/ctangle.w" static boolean skip_comment( boolean is_long_comment) @@ -1156,9 +1161,9 @@ if(loc> limit){ if(is_long_comment){ if(get_line())return comment_continues= true; else{ -#line 165 "cwebdir/ctang-w2c.ch" +#line 173 "cwebdir/ctang-w2c.ch" err_print(_("! Input ended in mid-comment")); -#line 849 "cwebdir/ctangle.w" +#line 851 "cwebdir/ctangle.w" return comment_continues= false; } @@ -1171,9 +1176,9 @@ loc++;return comment_continues= false; } if(c=='@'){ if(ccode[(eight_bits)*loc]==new_section){ -#line 171 "cwebdir/ctang-w2c.ch" +#line 179 "cwebdir/ctang-w2c.ch" err_print(_("! Section name ended in mid-comment"));loc--; -#line 862 "cwebdir/ctangle.w" +#line 864 "cwebdir/ctangle.w" return comment_continues= false; } @@ -1183,7 +1188,7 @@ else loc++; } /*:67*//*69:*/ -#line 879 "cwebdir/ctangle.w" +#line 881 "cwebdir/ctangle.w" static eight_bits get_next(void) @@ -1197,9 +1202,10 @@ if(get_line()==false)return new_section; else if(print_where&&!no_where){ print_where= false; /*85:*/ -#line 1221 "cwebdir/ctangle.w" +#line 1224 "cwebdir/ctangle.w" { +eight_bits a; store_two_bytes(0150000); if(changing&&include_depth==change_depth){ id_first= change_file_name; @@ -1209,12 +1215,11 @@ id_first= cur_file_name; store_two_bytes((sixteen_bits)cur_line); } id_loc= id_first+strlen(id_first); -{int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); -app_repl(a_l%0400);} +store_id(a); } /*:85*/ -#line 891 "cwebdir/ctangle.w" +#line 893 "cwebdir/ctangle.w" } else return'\n'; @@ -1228,7 +1233,7 @@ else continue; } loc++; if(xisdigit(c)||c=='.')/*73:*/ -#line 963 "cwebdir/ctangle.w" +#line 965 "cwebdir/ctangle.w" { boolean hex_flag= false; id_first= loc-1; @@ -1262,13 +1267,13 @@ return constant; } /*:73*/ -#line 903 "cwebdir/ctangle.w" +#line 905 "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 1000 "cwebdir/ctangle.w" +#line 1002 "cwebdir/ctangle.w" { char delim= c; id_first= section_text+1; @@ -1280,15 +1285,15 @@ delim= *loc++;*++id_loc= delim; while(true){ if(loc>=limit){ if(*(limit-1)!='\\'){ -#line 177 "cwebdir/ctang-w2c.ch" +#line 185 "cwebdir/ctang-w2c.ch" err_print(_("! String didn't end"));loc= limit;break; -#line 1012 "cwebdir/ctangle.w" +#line 1014 "cwebdir/ctangle.w" } if(get_line()==false){ -#line 183 "cwebdir/ctang-w2c.ch" +#line 191 "cwebdir/ctang-w2c.ch" err_print(_("! Input ended in middle of string"));loc= buffer;break; -#line 1016 "cwebdir/ctangle.w" +#line 1018 "cwebdir/ctangle.w" } else if(++id_loc<=section_text_end)*id_loc= '\n'; @@ -1306,9 +1311,9 @@ c= *loc++; if(++id_loc<=section_text_end)*id_loc= c; } if(id_loc>=section_text_end){ -#line 189 "cwebdir/ctang-w2c.ch" +#line 197 "cwebdir/ctang-w2c.ch" fputs(_("\n! String too long: "),stdout); -#line 1034 "cwebdir/ctangle.w" +#line 1036 "cwebdir/ctangle.w" term_write(section_text+1,25); err_print("..."); @@ -1318,11 +1323,11 @@ return string; } /*:74*/ -#line 907 "cwebdir/ctangle.w" +#line 909 "cwebdir/ctangle.w" else if(isalpha(c)||isxalpha(c)||ishigh(c)) /*72:*/ -#line 954 "cwebdir/ctangle.w" +#line 956 "cwebdir/ctangle.w" { id_first= --loc; do @@ -1333,38 +1338,37 @@ id_loc= loc;return identifier; } /*:72*/ -#line 909 "cwebdir/ctangle.w" +#line 911 "cwebdir/ctangle.w" else if(c=='@')/*75:*/ -#line 1045 "cwebdir/ctangle.w" -{ +#line 1047 "cwebdir/ctangle.w" + switch(c= ccode[(eight_bits)*loc++]){ case ignore:continue; -#line 195 "cwebdir/ctang-w2c.ch" +#line 203 "cwebdir/ctang-w2c.ch" case translit_code:err_print(_("! Use @l in limbo only"));continue; -#line 1049 "cwebdir/ctangle.w" +#line 1051 "cwebdir/ctangle.w" case control_text:while((c= skip_ahead())=='@'); if(*(loc-1)!='>') -#line 201 "cwebdir/ctang-w2c.ch" +#line 209 "cwebdir/ctang-w2c.ch" err_print(_("! Double @ should be used in control text")); -#line 1054 "cwebdir/ctangle.w" +#line 1056 "cwebdir/ctangle.w" continue; case section_name: cur_section_name_char= *(loc-1); /*77:*/ -#line 1091 "cwebdir/ctangle.w" +#line 1092 "cwebdir/ctangle.w" { -char*k; +char*k= section_text; /*79:*/ -#line 1113 "cwebdir/ctangle.w" +#line 1114 "cwebdir/ctangle.w" -k= section_text; while(true){ if(loc> limit&&get_line()==false){ -#line 219 "cwebdir/ctang-w2c.ch" +#line 227 "cwebdir/ctang-w2c.ch" err_print(_("! Input ended in section name")); #line 1118 "cwebdir/ctangle.w" @@ -1380,13 +1384,13 @@ if(c=='>'){ loc+= 2;break; } if(ccode[(eight_bits)c]==new_section){ -#line 231 "cwebdir/ctang-w2c.ch" +#line 239 "cwebdir/ctang-w2c.ch" err_print(_("! Section name didn't end"));break; #line 1145 "cwebdir/ctangle.w" } if(ccode[(eight_bits)c]==section_name){ -#line 237 "cwebdir/ctang-w2c.ch" +#line 245 "cwebdir/ctang-w2c.ch" err_print(_("! Nesting of section names not allowed"));break; #line 1149 "cwebdir/ctangle.w" @@ -1404,7 +1408,7 @@ c= ' ';if(*(k-1)==' ')k--; *k= c; } if(k>=section_text_end){ -#line 225 "cwebdir/ctang-w2c.ch" +#line 233 "cwebdir/ctang-w2c.ch" fputs(_("\n! Section name too long: "),stdout); #line 1131 "cwebdir/ctangle.w" @@ -1414,7 +1418,7 @@ printf("...");mark_harmless; if(*k==' '&&k> section_text)k--; /*:79*/ -#line 1093 "cwebdir/ctangle.w" +#line 1094 "cwebdir/ctangle.w" if(k-section_text> 3&&strncmp(k-2,"...",3)==0) cur_section_name= section_lookup(section_text+1,k-3,true); @@ -1423,7 +1427,7 @@ else cur_section_name= section_lookup(section_text+1,k,false); if(cur_section_name_char=='(') /*47:*/ -#line 501 "cwebdir/ctangle.w" +#line 503 "cwebdir/ctangle.w" { for(an_output_file= cur_out_file; @@ -1432,39 +1436,38 @@ if(*an_output_file==cur_section_name)break; if(an_output_file==end_output_files){ if(cur_out_file> output_files) *--cur_out_file= cur_section_name; -#line 83 "cwebdir/ctang-w2c.ch" +#line 91 "cwebdir/ctang-w2c.ch" else overflow(_("output files")); -#line 510 "cwebdir/ctangle.w" +#line 512 "cwebdir/ctangle.w" } } /*:47*/ -#line 1101 "cwebdir/ctangle.w" +#line 1102 "cwebdir/ctangle.w" return section_name; } /*:77*/ -#line 1058 "cwebdir/ctangle.w" +#line 1060 "cwebdir/ctangle.w" case string:/*81:*/ #line 1159 "cwebdir/ctangle.w" -{ + id_first= loc++;*(limit+1)= '@';*(limit+2)= '>'; while(*loc!='@'||*(loc+1)!='>')loc++; -#line 243 "cwebdir/ctang-w2c.ch" +#line 251 "cwebdir/ctang-w2c.ch" if(loc>=limit)err_print(_("! Verbatim string didn't end")); #line 1163 "cwebdir/ctangle.w" id_loc= loc;loc+= 2; return string; -} /*:81*/ -#line 1059 "cwebdir/ctangle.w" +#line 1061 "cwebdir/ctangle.w" case ord:/*76:*/ -#line 1071 "cwebdir/ctangle.w" +#line 1072 "cwebdir/ctangle.w" id_first= loc; if(*loc=='\\') @@ -1472,17 +1475,17 @@ if(*++loc=='\'')loc++; while(*loc!='\''){ if(*loc=='@'){ if(*(loc+1)!='@') -#line 207 "cwebdir/ctang-w2c.ch" +#line 215 "cwebdir/ctang-w2c.ch" err_print(_("! Double @ should be used in ASCII constant")); -#line 1079 "cwebdir/ctangle.w" +#line 1080 "cwebdir/ctangle.w" else loc++; } loc++; if(loc> limit){ -#line 213 "cwebdir/ctang-w2c.ch" +#line 221 "cwebdir/ctang-w2c.ch" err_print(_("! String didn't end"));loc= limit-1;break; -#line 1085 "cwebdir/ctangle.w" +#line 1086 "cwebdir/ctangle.w" } } @@ -1490,14 +1493,13 @@ loc++; return ord; /*:76*/ -#line 1060 "cwebdir/ctangle.w" +#line 1062 "cwebdir/ctangle.w" default:return c; } -} /*:75*/ -#line 910 "cwebdir/ctangle.w" +#line 912 "cwebdir/ctangle.w" else if(xisspace(c)){ if(!preprocessing||loc> limit)continue; @@ -1506,7 +1508,7 @@ else return' '; } else if(c=='#'&&loc==buffer+1)preprocessing= true; mistake:/*71:*/ -#line 931 "cwebdir/ctangle.w" +#line 933 "cwebdir/ctangle.w" switch(c){ case'+':if(*loc=='+')compress(plus_plus);break; @@ -1531,14 +1533,14 @@ case'!':if(*loc=='=')compress(non_eq);break; } /*:71*/ -#line 917 "cwebdir/ctangle.w" +#line 919 "cwebdir/ctangle.w" return c; } } /*:69*//*83:*/ -#line 1193 "cwebdir/ctangle.w" +#line 1192 "cwebdir/ctangle.w" static void scan_repl( @@ -1546,9 +1548,10 @@ eight_bits t) { sixteen_bits a; if(t==section_name)/*85:*/ -#line 1221 "cwebdir/ctangle.w" +#line 1224 "cwebdir/ctangle.w" { +eight_bits a; store_two_bytes(0150000); if(changing&&include_depth==change_depth){ id_first= change_file_name; @@ -1558,47 +1561,45 @@ id_first= cur_file_name; store_two_bytes((sixteen_bits)cur_line); } id_loc= id_first+strlen(id_first); -{int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); -app_repl(a_l%0400);} +store_id(a); } /*:85*/ -#line 1199 "cwebdir/ctangle.w" +#line 1198 "cwebdir/ctangle.w" while(true)switch(a= get_next()){ /*86:*/ -#line 1236 "cwebdir/ctangle.w" +#line 1239 "cwebdir/ctangle.w" -case identifier:a= id_lookup(id_first,id_loc,0)-name_dir; -app_repl((a/0400)+0200); -app_repl(a%0400);break; +case identifier:store_id(a);break; case section_name:if(t!=section_name)goto done; else{ /*87:*/ -#line 1269 "cwebdir/ctangle.w" +#line 1270 "cwebdir/ctangle.w" { char*try_loc= loc; while(*try_loc==' '&&try_loc text_info_end)overflow(_("text")); -#line 1212 "cwebdir/ctangle.w" +#line 1211 "cwebdir/ctangle.w" cur_text= text_ptr;(++text_ptr)->tok_start= tok_ptr; } /*:83*//*90:*/ -#line 1363 "cwebdir/ctangle.w" +#line 1364 "cwebdir/ctangle.w" static void scan_section(void) @@ -1766,7 +1766,7 @@ printf("*%d",section_count);update_terminal; next_control= ignore; while(true){ /*92:*/ -#line 1404 "cwebdir/ctangle.w" +#line 1405 "cwebdir/ctangle.w" while(next_controltext_link= macro; -} /*:93*/ -#line 1379 "cwebdir/ctangle.w" +#line 1380 "cwebdir/ctangle.w" continue; } @@ -1810,14 +1807,14 @@ p= name_dir;break; if(next_control==section_name){ p= cur_section_name; /*94:*/ -#line 1436 "cwebdir/ctangle.w" +#line 1434 "cwebdir/ctangle.w" while((next_control= get_next())=='+'); if(next_control!='='&&next_control!=eq_eq) continue; /*:94*/ -#line 1387 "cwebdir/ctangle.w" +#line 1388 "cwebdir/ctangle.w" break; } @@ -1825,23 +1822,23 @@ return; } no_where= print_where= false; /*95:*/ -#line 1441 "cwebdir/ctangle.w" +#line 1439 "cwebdir/ctangle.w" /*96:*/ -#line 1446 "cwebdir/ctangle.w" +#line 1444 "cwebdir/ctangle.w" store_two_bytes((sixteen_bits)(0150000+section_count)); /*:96*/ -#line 1442 "cwebdir/ctangle.w" +#line 1440 "cwebdir/ctangle.w" scan_repl(section_name); /*97:*/ -#line 1450 "cwebdir/ctangle.w" +#line 1448 "cwebdir/ctangle.w" if(p==name_dir||p==NULL){ -(last_unnamed)->text_link= cur_text-text_info;last_unnamed= cur_text; +last_unnamed->text_link= cur_text-text_info;last_unnamed= cur_text; } else if(p->equiv==(void*)text_info)p->equiv= (void*)cur_text; @@ -1855,16 +1852,16 @@ cur_text->text_link= section_flag; /*:97*/ -#line 1444 "cwebdir/ctangle.w" +#line 1442 "cwebdir/ctangle.w" /*:95*/ -#line 1393 "cwebdir/ctangle.w" +#line 1394 "cwebdir/ctangle.w" } /*:90*//*98:*/ -#line 1465 "cwebdir/ctangle.w" +#line 1463 "cwebdir/ctangle.w" static void phase_one(void){ @@ -1874,34 +1871,32 @@ reset_input(); skip_limbo(); while(!input_has_ended)scan_section(); check_complete(); -phase= 2; } /*:98*//*100:*/ -#line 1482 "cwebdir/ctangle.w" +#line 1479 "cwebdir/ctangle.w" static void skip_limbo(void) { -char c; while(true){ if(loc> limit&&get_line()==false)return; *(limit+1)= '@'; while(*loc!='@')loc++; if(loc++<=limit){ -c= *loc++; +char c= *loc++; if(ccode[(eight_bits)c]==new_section)break; switch(ccode[(eight_bits)c]){ case translit_code:/*102:*/ -#line 1513 "cwebdir/ctangle.w" +#line 1509 "cwebdir/ctangle.w" while(xisspace(*loc)&&loc limit||!xisxdigit(*(loc-3))||!xisxdigit(*(loc-2)) ||(*(loc-3)>='0'&&*(loc-3)<='7')||!xisspace(*(loc-1))) -#line 309 "cwebdir/ctang-w2c.ch" +#line 317 "cwebdir/ctang-w2c.ch" err_print(_("! Improper hex number following @l")); -#line 1519 "cwebdir/ctangle.w" +#line 1515 "cwebdir/ctangle.w" else{ unsigned int i; @@ -1911,9 +1906,9 @@ while(xisspace(*loc)&&loc=translit_length) -#line 315 "cwebdir/ctang-w2c.ch" +#line 323 "cwebdir/ctang-w2c.ch" err_print(_("! Replacement string in @l too long")); -#line 1529 "cwebdir/ctangle.w" +#line 1525 "cwebdir/ctangle.w" else{ strncpy(translit[i-0200],beg,(size_t)(loc-beg)); @@ -1922,21 +1917,21 @@ translit[i-0200][loc-beg]= '\0'; } /*:102*/ -#line 1495 "cwebdir/ctangle.w" +#line 1491 "cwebdir/ctangle.w" break; case format_code:case'@':break; case control_text:if(c=='q'||c=='Q'){ while((c= skip_ahead())=='@'); if(*(loc-1)!='>') -#line 297 "cwebdir/ctang-w2c.ch" +#line 305 "cwebdir/ctang-w2c.ch" err_print(_("! Double @ should be used in control text")); -#line 1501 "cwebdir/ctangle.w" +#line 1497 "cwebdir/ctangle.w" break; } -#line 303 "cwebdir/ctang-w2c.ch" +#line 311 "cwebdir/ctang-w2c.ch" default:err_print(_("! Double @ should be used in limbo")); -#line 1505 "cwebdir/ctangle.w" +#line 1501 "cwebdir/ctangle.w" } } @@ -1944,11 +1939,11 @@ default:err_print(_("! Double @ should be used in limbo")); } /*:100*//*103:*/ -#line 1539 "cwebdir/ctangle.w" +#line 1535 "cwebdir/ctangle.w" void print_stats(void){ -#line 328 "cwebdir/ctang-w2c.ch" +#line 336 "cwebdir/ctang-w2c.ch" puts(_("\nMemory usage statistics:")); printf(_("%ld names (out of %ld)\n"), (ptrdiff_t)(name_ptr-name_dir),(long)max_names); @@ -1957,9 +1952,9 @@ printf(_("%ld replacement texts (out of %ld)\n"), printf(_("%ld bytes (out of %ld)\n"), (ptrdiff_t)(byte_ptr-byte_mem),(long)max_bytes); printf(_("%ld tokens (out of %ld)\n"), -#line 1550 "cwebdir/ctangle.w" +#line 1546 "cwebdir/ctangle.w" (ptrdiff_t)(tok_ptr-tok_mem),(long)max_toks); } -#line 341 "cwebdir/ctang-w2c.ch" +#line 349 "cwebdir/ctang-w2c.ch" /*:103*/ -- cgit v1.2.3