summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/ctangleboot.cin
diff options
context:
space:
mode:
authorAndreas Scherer <andreas_tex@freenet.de>2021-06-06 10:49:47 +0000
committerAndreas Scherer <andreas_tex@freenet.de>2021-06-06 10:49:47 +0000
commit79a47698484a9289c56dbfbc4a5e0e4aef4fc582 (patch)
tree04d420e09e88367eb73b39a8dc64003e607d43fc /Build/source/texk/web2c/ctangleboot.cin
parentb2780b22e932ae593af40473c7780fe784062fe5 (diff)
[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
Diffstat (limited to 'Build/source/texk/web2c/ctangleboot.cin')
-rw-r--r--Build/source/texk/web2c/ctangleboot.cin557
1 files changed, 276 insertions, 281 deletions
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 <libintl.h>
#else
-#define gettext(A) A
+#define gettext(a) a
#endif
#include <ctype.h>
@@ -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(j<k){
+for(j= (cur_val+name_dir)->byte_start,k= (cur_val+name_dir+1)->byte_start;
+j<k;j++)
if((eight_bits)(*j)<0200)C_putc(*j);
else C_printf("%s",translit[(eight_bits)(*j)-0200]);
-j++;
-}
out_state= num_or_id;break;
/*:59*/
-#line 648 "cwebdir/ctangle.w"
+#line 653 "cwebdir/ctangle.w"
/*60:*/
-#line 718 "cwebdir/ctangle.w"
+#line 720 "cwebdir/ctangle.w"
case section_number:
if(cur_val> 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<k;j++){
if(*j=='\\'||*j=='"')C_putc('\\');
@@ -1084,10 +1089,10 @@ C_putc('"');C_putc('\n');
break;
/*:60*/
-#line 649 "cwebdir/ctangle.w"
+#line 654 "cwebdir/ctangle.w"
/*56:*/
-#line 667 "cwebdir/ctangle.w"
+#line 672 "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;
@@ -1108,7 +1113,7 @@ case minus_gt_ast:C_putc('-');C_putc('>');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<limit)try_loc++;
if(*try_loc=='+'&&try_loc<limit)try_loc++;
while(*try_loc==' '&&try_loc<limit)try_loc++;
-#line 273 "cwebdir/ctang-w2c.ch"
+#line 281 "cwebdir/ctang-w2c.ch"
if(*try_loc=='=')err_print(_("! Missing `@ ' before a named section"));
-#line 1275 "cwebdir/ctangle.w"
+#line 1276 "cwebdir/ctangle.w"
}
/*:87*/
-#line 1242 "cwebdir/ctangle.w"
+#line 1243 "cwebdir/ctangle.w"
a= cur_section_name-name_dir;
app_repl((a/0400)+0250);
app_repl(a%0400);
/*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;
@@ -1608,17 +1609,16 @@ 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 1246 "cwebdir/ctangle.w"
+#line 1247 "cwebdir/ctangle.w"
break;
}
-#line 261 "cwebdir/ctang-w2c.ch"
+#line 269 "cwebdir/ctang-w2c.ch"
case output_defs_code:if(t!=section_name)err_print(_("! Misplaced @h"));
-#line 1249 "cwebdir/ctangle.w"
+#line 1250 "cwebdir/ctangle.w"
else{
output_defs_seen= true;
@@ -1626,9 +1626,10 @@ a= output_defs_flag;
app_repl((a/0400)+0200);
app_repl(a%0400);
/*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;
@@ -1638,26 +1639,25 @@ 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 1255 "cwebdir/ctangle.w"
+#line 1256 "cwebdir/ctangle.w"
}
break;
case constant:case string:
/*88:*/
-#line 1286 "cwebdir/ctangle.w"
+#line 1287 "cwebdir/ctangle.w"
app_repl(a);
while(id_first<id_loc){
if(*id_first=='@'){
if(*(id_first+1)=='@')id_first++;
-#line 279 "cwebdir/ctang-w2c.ch"
+#line 287 "cwebdir/ctang-w2c.ch"
else err_print(_("! Double @ should be used in string"));
-#line 1292 "cwebdir/ctangle.w"
+#line 1293 "cwebdir/ctangle.w"
}
else if(a==constant&&*id_first=='\''&&!keep_digit_separators)
@@ -1667,11 +1667,11 @@ app_repl(*id_first++);
app_repl(a);break;
/*:88*/
-#line 1259 "cwebdir/ctangle.w"
+#line 1260 "cwebdir/ctangle.w"
case ord:
/*89:*/
-#line 1304 "cwebdir/ctangle.w"
+#line 1305 "cwebdir/ctangle.w"
{
int c= (eight_bits)*id_first;
if(c=='\\'){
@@ -1708,9 +1708,9 @@ break;
case'\\':c= '\\';break;
case'\'':c= '\'';break;
case'\"':c= '\"';break;
-#line 285 "cwebdir/ctang-w2c.ch"
+#line 293 "cwebdir/ctang-w2c.ch"
default:err_print(_("! Unrecognized escape sequence"));
-#line 1341 "cwebdir/ctangle.w"
+#line 1342 "cwebdir/ctangle.w"
}
}
@@ -1724,19 +1724,19 @@ app_repl(constant);
break;
/*:89*/
-#line 1261 "cwebdir/ctangle.w"
+#line 1262 "cwebdir/ctangle.w"
case definition:case format_code:case begin_C:if(t!=section_name)goto done;
else{
-#line 267 "cwebdir/ctang-w2c.ch"
+#line 275 "cwebdir/ctang-w2c.ch"
err_print(_("! @d, @f and @c are ignored in C text"));continue;
-#line 1265 "cwebdir/ctangle.w"
+#line 1266 "cwebdir/ctangle.w"
}
case new_section:goto done;
/*:86*/
-#line 1204 "cwebdir/ctangle.w"
+#line 1203 "cwebdir/ctangle.w"
case')':app_repl(a);
if(t==macro)app_repl(' ');
@@ -1744,14 +1744,14 @@ break;
default:app_repl(a);
}
done:next_control= (eight_bits)a;
-#line 255 "cwebdir/ctang-w2c.ch"
+#line 263 "cwebdir/ctang-w2c.ch"
if(text_ptr> 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_control<definition)
@@ -1775,32 +1775,29 @@ loc-= 2;next_control= get_next();
}
/*:92*/
-#line 1377 "cwebdir/ctangle.w"
+#line 1378 "cwebdir/ctangle.w"
if(next_control==definition){
/*93:*/
-#line 1411 "cwebdir/ctangle.w"
-{
+#line 1412 "cwebdir/ctangle.w"
+
while((next_control= get_next())=='\n');
if(next_control!=identifier){
-#line 291 "cwebdir/ctang-w2c.ch"
+#line 299 "cwebdir/ctang-w2c.ch"
err_print(_("! Definition flushed, must start with identifier"));
-#line 1415 "cwebdir/ctangle.w"
+#line 1416 "cwebdir/ctangle.w"
continue;
}
-app_repl(((a= id_lookup(id_first,id_loc,0)-name_dir)/0400)+0200);
-
-app_repl(a%0400);
+store_id(a);
if(*loc!='('){
app_repl(string);app_repl(' ');app_repl(string);
}
scan_repl(macro);
cur_text->text_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)loc++;
loc+= 3;
if(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<limit)loc++;
beg= loc;
while(loc<limit&&(xisalpha(*loc)||xisdigit(*loc)||*loc=='_'))loc++;
if(loc-beg>=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*/