summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/ctangleboot.cin
diff options
context:
space:
mode:
authorAndreas Scherer <andreas_tex@freenet.de>2021-05-03 13:03:46 +0000
committerAndreas Scherer <andreas_tex@freenet.de>2021-05-03 13:03:46 +0000
commit60712e2174bfaa66828692206c37af9b20d9fc9a (patch)
tree3e9284ecd37b56a42a67118bb5aa94482e07112b /Build/source/texk/web2c/ctangleboot.cin
parentd3de05fb9dda5d710a51f3ad2097d67d8452a166 (diff)
[CWEB] New release 4.3.1.
This release is almost the same as CWEB 4.3 of 2021-04-16, but * it fixes the indexing bug in CWEAVE/CTWILL that got retracted * it extracts and collects all additions made in CTWILL, so that the section numbers of CWEAVE are retained up to ยง272 and new material is described in the (first) appendix, including the CTWILL user manual * it provides fully revised and (hopefully) corrected mini-indexes for CTWILL, if it is processed by itself (to be published in package 'knuth-pdf' on CTAN) git-svn-id: svn://tug.org/texlive/trunk@59061 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/ctangleboot.cin')
-rw-r--r--Build/source/texk/web2c/ctangleboot.cin464
1 files changed, 242 insertions, 222 deletions
diff --git a/Build/source/texk/web2c/ctangleboot.cin b/Build/source/texk/web2c/ctangleboot.cin
index 4f5f78b7ee0..a0db9c59c00 100644
--- a/Build/source/texk/web2c/ctangleboot.cin
+++ b/Build/source/texk/web2c/ctangleboot.cin
@@ -2,7 +2,7 @@
#line 66 "cwebdir/ctangle.w"
/*4:*/
-#line 53 "cwebdir/comm-w2c.h"
+#line 51 "cwebdir/comm-w2c.h"
#ifndef HAVE_GETTEXT
#define HAVE_GETTEXT 0
@@ -25,7 +25,7 @@
/*:4*/
#line 67 "cwebdir/ctangle.w"
-#define banner "This is CTANGLE, Version 4.2" \
+#define banner "This is CTANGLE, Version 4.3" \
\
#define _(S) gettext(S) \
@@ -46,12 +46,18 @@
#define period_ast 026
#define minus_gt_ast 027 \
-#define xisalpha(c) (isalpha((eight_bits) c) &&((eight_bits) c<0200) )
-#define xisdigit(c) (isdigit((eight_bits) c) &&((eight_bits) c<0200) )
-#define xisspace(c) (isspace((eight_bits) c) &&((eight_bits) c<0200) )
-#define xislower(c) (islower((eight_bits) c) &&((eight_bits) c<0200) )
-#define xisupper(c) (isupper((eight_bits) c) &&((eight_bits) c<0200) )
-#define xisxdigit(c) (isxdigit((eight_bits) c) &&((eight_bits) c<0200) ) \
+#define compress(c) if(loc++<=limit) return c \
+
+#define xisalpha(c) (isalpha((eight_bits) (c) ) &&((eight_bits) (c) <0200) )
+#define xisdigit(c) (isdigit((eight_bits) (c) ) &&((eight_bits) (c) <0200) )
+#define xisspace(c) (isspace((eight_bits) (c) ) &&((eight_bits) (c) <0200) )
+#define xislower(c) (islower((eight_bits) (c) ) &&((eight_bits) (c) <0200) )
+#define xisupper(c) (isupper((eight_bits) (c) ) &&((eight_bits) (c) <0200) )
+#define xisxdigit(c) (isxdigit((eight_bits) (c) ) &&((eight_bits) (c) <0200) )
+#define isxalpha(c) ((c) =='_'||(c) =='$') \
+
+#define ishigh(c) ((eight_bits) (c) > 0177) \
+ \
#define max_include_depth 10 \
@@ -73,24 +79,21 @@
#define harmless_message 1
#define error_message 2
#define fatal_message 3
-#define mark_harmless {if(history==spotless) history= harmless_message;}
+#define mark_harmless if(history==spotless) history= harmless_message
#define mark_error history= error_message
#define confusion(s) fatal(_("! This can't happen: ") ,s) \
\
#define show_banner flags['b']
#define show_progress flags['p']
-#define show_stats flags['s']
#define show_happiness flags['h']
-#define temporary_output flags['t']
-#define make_xrefs flags['x'] \
+#define show_stats flags['s']
+#define make_xrefs flags['x']
+#define check_for_change flags['c'] \
#define update_terminal fflush(stdout)
#define new_line putchar('\n')
-#define putxchar putchar
-#define term_write(a,b) fflush(stdout) ,fwrite(a,sizeof(char) ,b,stdout)
-#define C_printf(c,a) fprintf(C_file,c,a)
-#define C_putc(c) putc(c,C_file) \
+#define term_write(a,b) fflush(stdout) ,fwrite(a,sizeof(char) ,b,stdout) \
#define max_bytes 1000000 \
@@ -106,9 +109,11 @@
#define equiv equiv_or_xref \
+#define macro 0
#define section_flag max_texts \
#define string 02
+#define constant 03
#define join 0177
#define output_defs_flag (2*024000-1) \
@@ -128,9 +133,12 @@
#define verbatim 4 \
#define max_files 256
+#define C_printf(c,a) fprintf(C_file,c,a)
+#define C_putc(c) putc(c,C_file) \
+
#define translit_length 10 \
-#define ignore 0
+#define ignore 00
#define ord 0302
#define control_text 0303
#define translit_code 0304
@@ -141,25 +149,17 @@
#define section_name 0311
#define new_section 0312 \
-#define constant 03 \
-
-#define isxalpha(c) ((c) =='_'||(c) =='$') \
-
-#define ishigh(c) ((eight_bits) (c) > 0177) \
- \
-
-#define compress(c) if(loc++<=limit) return c \
-
-#define macro 0
#define app_repl(c) {if(tok_ptr==tok_mem_end) overflow(_("token") ) ;*tok_ptr++= c;} \
+#define keep_digit_separators flags['k'] \
+
#define max_banner 50 \
#line 68 "cwebdir/ctangle.w"
/*3:*/
-#line 35 "cwebdir/comm-w2c.h"
+#line 33 "cwebdir/comm-w2c.h"
typedef bool boolean;
typedef uint8_t eight_bits;
@@ -179,7 +179,7 @@ extern char*id_first;
extern char*id_loc;
/*:5*//*6:*/
-#line 105 "cwebdir/comm-w2c.h"
+#line 109 "cwebdir/comm-w2c.h"
extern char buffer[];
extern char*buffer_end;
@@ -187,7 +187,7 @@ extern char*loc;
extern char*limit;
/*:6*//*7:*/
-#line 122 "cwebdir/comm-w2c.h"
+#line 126 "cwebdir/comm-w2c.h"
extern int include_depth;
extern FILE*file[];
@@ -204,7 +204,7 @@ extern boolean changing;
extern boolean web_file_open;
/*:7*//*9:*/
-#line 143 "cwebdir/comm-w2c.h"
+#line 147 "cwebdir/comm-w2c.h"
extern sixteen_bits section_count;
extern boolean changed_section[];
@@ -212,7 +212,7 @@ extern boolean change_pending;
extern boolean print_where;
/*:9*//*10:*/
-#line 157 "cwebdir/comm-w2c.h"
+#line 161 "cwebdir/comm-w2c.h"
typedef struct name_info{
char*byte_start;
@@ -237,12 +237,12 @@ extern hash_pointer hash_end;
extern hash_pointer h;
/*:10*//*12:*/
-#line 201 "cwebdir/comm-w2c.h"
+#line 205 "cwebdir/comm-w2c.h"
extern int history;
/*:12*//*14:*/
-#line 218 "cwebdir/comm-w2c.h"
+#line 222 "cwebdir/comm-w2c.h"
extern int argc;
extern char**argv;
@@ -254,7 +254,7 @@ extern boolean flags[];
extern const char*use_language;
/*:14*//*15:*/
-#line 235 "cwebdir/comm-w2c.h"
+#line 237 "cwebdir/comm-w2c.h"
extern FILE*C_file;
extern FILE*tex_file;
@@ -281,7 +281,7 @@ sixteen_bits text_link;
typedef text*text_pointer;
/*:19*//*31:*/
-#line 269 "cwebdir/ctangle.w"
+#line 273 "cwebdir/ctangle.w"
typedef struct{
eight_bits*end_field;
@@ -306,12 +306,12 @@ static eight_bits*tok_mem_end= tok_mem+max_toks-1;
static eight_bits*tok_ptr;
/*:20*//*26:*/
-#line 198 "cwebdir/ctangle.w"
+#line 199 "cwebdir/ctangle.w"
static text_pointer last_unnamed;
/*:26*//*32:*/
-#line 285 "cwebdir/ctangle.w"
+#line 289 "cwebdir/ctangle.w"
static output_state cur_state;
@@ -320,18 +320,18 @@ static stack_pointer stack_end= stack+stack_size;
static stack_pointer stack_ptr;
/*:32*//*37:*/
-#line 361 "cwebdir/ctangle.w"
+#line 365 "cwebdir/ctangle.w"
static int cur_val;
/*:37*//*42:*/
-#line 452 "cwebdir/ctangle.w"
+#line 456 "cwebdir/ctangle.w"
static eight_bits out_state;
static boolean protect;
/*:42*//*45:*/
-#line 483 "cwebdir/ctangle.w"
+#line 487 "cwebdir/ctangle.w"
static name_pointer output_files[max_files];
static name_pointer*cur_out_file,*end_output_files,*an_output_file;
@@ -339,33 +339,33 @@ static char cur_section_name_char;
static char output_file_name[longest_name+1];
/*:45*//*52:*/
-#line 582 "cwebdir/ctangle.w"
+#line 584 "cwebdir/ctangle.w"
static boolean output_defs_seen= false;
/*:52*//*57:*/
-#line 691 "cwebdir/ctangle.w"
+#line 696 "cwebdir/ctangle.w"
static char translit[128][translit_length];
/*:57*//*62:*/
-#line 770 "cwebdir/ctangle.w"
+#line 775 "cwebdir/ctangle.w"
static eight_bits ccode[256];
/*:62*//*66:*/
-#line 830 "cwebdir/ctangle.w"
+#line 835 "cwebdir/ctangle.w"
static boolean comment_continues= false;
/*:66*//*68:*/
-#line 869 "cwebdir/ctangle.w"
+#line 872 "cwebdir/ctangle.w"
static name_pointer cur_section_name;
static boolean no_where;
/*:68*//*82:*/
-#line 1182 "cwebdir/ctangle.w"
+#line 1189 "cwebdir/ctangle.w"
static text_pointer cur_text;
static eight_bits next_control;
@@ -374,19 +374,19 @@ static eight_bits next_control;
#line 71 "cwebdir/ctangle.w"
/*8:*/
-#line 137 "cwebdir/comm-w2c.h"
+#line 141 "cwebdir/comm-w2c.h"
extern boolean get_line(void);
extern void check_complete(void);
extern void reset_input(void);
/*:8*//*11:*/
-#line 180 "cwebdir/comm-w2c.h"
+#line 184 "cwebdir/comm-w2c.h"
extern boolean names_match(name_pointer,const char*,size_t,eight_bits);
extern name_pointer id_lookup(const char*,const char*,char);
-extern name_pointer section_lookup(char*,char*,int);
+extern name_pointer section_lookup(char*,char*,boolean);
extern void init_node(name_pointer);
extern void init_p(name_pointer,eight_bits);
extern void print_prefix_name(name_pointer);
@@ -394,7 +394,7 @@ extern void print_section_name(name_pointer);
extern void sprint_section_name(char*,name_pointer);
/*:11*//*13:*/
-#line 204 "cwebdir/comm-w2c.h"
+#line 208 "cwebdir/comm-w2c.h"
extern int wrap_up(void);
extern void err_print(const char*);
@@ -402,64 +402,64 @@ extern void fatal(const char*,const char*);
extern void overflow(const char*);
/*:13*//*16:*/
-#line 244 "cwebdir/comm-w2c.h"
+#line 246 "cwebdir/comm-w2c.h"
extern void common_init(void);
extern void print_stats(void);
extern void cb_show_banner(void);
/*:16*//*30:*/
-#line 241 "cwebdir/ctangle.w"
+#line 245 "cwebdir/ctangle.w"
static void store_two_bytes(sixteen_bits);
/*:30*//*35:*/
-#line 324 "cwebdir/ctangle.w"
+#line 328 "cwebdir/ctangle.w"
static void push_level(name_pointer);
static void pop_level(boolean);
/*:35*//*39:*/
-#line 397 "cwebdir/ctangle.w"
+#line 401 "cwebdir/ctangle.w"
static void get_output(void);
/*:39*//*44:*/
-#line 473 "cwebdir/ctangle.w"
+#line 477 "cwebdir/ctangle.w"
static void flush_buffer(void);
/*:44*//*49:*/
-#line 549 "cwebdir/ctangle.w"
+#line 551 "cwebdir/ctangle.w"
static void phase_two(void);
/*:49*//*53:*/
-#line 585 "cwebdir/ctangle.w"
+#line 587 "cwebdir/ctangle.w"
static void output_defs(void);
static void out_char(eight_bits);
/*:53*//*65:*/
-#line 810 "cwebdir/ctangle.w"
+#line 815 "cwebdir/ctangle.w"
static eight_bits skip_ahead(void);
static boolean skip_comment(boolean);
/*:65*//*70:*/
-#line 924 "cwebdir/ctangle.w"
+#line 922 "cwebdir/ctangle.w"
static eight_bits get_next(void);
/*:70*//*84:*/
-#line 1208 "cwebdir/ctangle.w"
+#line 1215 "cwebdir/ctangle.w"
static void scan_repl(eight_bits);
/*:84*//*91:*/
-#line 1379 "cwebdir/ctangle.w"
+#line 1396 "cwebdir/ctangle.w"
static void scan_section(void);
/*:91*//*99:*/
-#line 1460 "cwebdir/ctangle.w"
+#line 1477 "cwebdir/ctangle.w"
static void phase_one(void);
/*:99*//*101:*/
-#line 1494 "cwebdir/ctangle.w"
+#line 1511 "cwebdir/ctangle.w"
static void skip_limbo(void);
/*:101*/
@@ -488,16 +488,16 @@ text_ptr= text_info+1;text_ptr->tok_start= tok_mem;
init_node(name_dir);
/*:23*//*27:*/
-#line 201 "cwebdir/ctangle.w"
-last_unnamed= text_info;text_info->text_link= 0;
+#line 202 "cwebdir/ctangle.w"
+last_unnamed= text_info;text_info->text_link= macro;
/*:27*//*46:*/
-#line 493 "cwebdir/ctangle.w"
+#line 497 "cwebdir/ctangle.w"
cur_out_file= end_output_files= output_files+max_files;
/*:46*//*58:*/
-#line 694 "cwebdir/ctangle.w"
+#line 699 "cwebdir/ctangle.w"
{
int i;
@@ -505,10 +505,11 @@ for(i= 0;i<128;i++)sprintf(translit[i],"X%02X",(unsigned int)(128+i));
}
/*:58*//*63:*/
-#line 773 "cwebdir/ctangle.w"
+#line 778 "cwebdir/ctangle.w"
{
int c;
for(c= 0;c<256;c++)ccode[c]= ignore;
+}
ccode[' ']= ccode['\t']= ccode['\n']= ccode['\v']= ccode['\r']= ccode['\f']
= ccode['*']= new_section;
ccode['@']= '@';ccode['=']= string;
@@ -522,10 +523,9 @@ ccode['l']= ccode['L']= translit_code;
ccode['&']= join;
ccode['<']= ccode['(']= section_name;
ccode['\'']= ord;
-}
/*:63*//*78:*/
-#line 1103 "cwebdir/ctangle.w"
+#line 1111 "cwebdir/ctangle.w"
section_text[0]= ' ';
/*:78*//*116:*/
@@ -571,7 +571,7 @@ void
init_p(name_pointer p,eight_bits t){(void)p;(void)t;}
/*:25*//*29:*/
-#line 231 "cwebdir/ctangle.w"
+#line 235 "cwebdir/ctangle.w"
static void
store_two_bytes(
@@ -579,13 +579,13 @@ sixteen_bits x)
{
#line 65 "cwebdir/ctang-w2c.ch"
if(tok_ptr+2> tok_mem_end)overflow(_("token"));
-#line 237 "cwebdir/ctangle.w"
+#line 241 "cwebdir/ctangle.w"
*tok_ptr++= x>>8;
*tok_ptr++= x&0377;
}
/*:29*//*34:*/
-#line 309 "cwebdir/ctangle.w"
+#line 313 "cwebdir/ctangle.w"
static void
push_level(
@@ -593,7 +593,7 @@ name_pointer p)
{
#line 71 "cwebdir/ctang-w2c.ch"
if(stack_ptr==stack_end)overflow(_("stack"));
-#line 315 "cwebdir/ctangle.w"
+#line 319 "cwebdir/ctangle.w"
*stack_ptr= cur_state;
stack_ptr++;
if(p!=NULL){
@@ -604,7 +604,7 @@ cur_section= 0;
}
/*:34*//*36:*/
-#line 332 "cwebdir/ctangle.w"
+#line 336 "cwebdir/ctangle.w"
static void
pop_level(
@@ -620,7 +620,7 @@ if(stack_ptr> stack)cur_state= *stack_ptr;
}
/*:36*//*38:*/
-#line 368 "cwebdir/ctangle.w"
+#line 372 "cwebdir/ctangle.w"
static void
get_output(void)
@@ -643,7 +643,7 @@ switch(a/024000){
case 0:cur_val= a;out_char(identifier);break;
case 1:if(a==output_defs_flag)output_defs();
else/*40:*/
-#line 402 "cwebdir/ctangle.w"
+#line 406 "cwebdir/ctangle.w"
{
a-= 024000;
@@ -651,7 +651,7 @@ if((a+name_dir)->equiv!=(void*)text_info)push_level(a+name_dir);
else if(a!=0){
#line 77 "cwebdir/ctang-w2c.ch"
fputs(_("\n! Not present: <"),stdout);
-#line 408 "cwebdir/ctangle.w"
+#line 412 "cwebdir/ctangle.w"
print_section_name(a+name_dir);err_print(">");
}
@@ -659,7 +659,7 @@ goto restart;
}
/*:40*/
-#line 389 "cwebdir/ctangle.w"
+#line 393 "cwebdir/ctangle.w"
break;
default:cur_val= a-050000;if(cur_val> 0)cur_section= cur_val;
@@ -669,14 +669,14 @@ out_char(section_number);
}
/*:38*//*43:*/
-#line 460 "cwebdir/ctangle.w"
+#line 464 "cwebdir/ctangle.w"
static void
flush_buffer(void)
{
C_putc('\n');
if(cur_line%100==0&&show_progress){
-printf(".");
+putchar('.');
if(cur_line%500==0)printf("%d",cur_line);
update_terminal;
}
@@ -684,34 +684,34 @@ cur_line++;
}
/*:43*//*48:*/
-#line 514 "cwebdir/ctangle.w"
+#line 516 "cwebdir/ctangle.w"
static void
phase_two(void){
web_file_open= false;
cur_line= 1;
/*33:*/
-#line 298 "cwebdir/ctangle.w"
+#line 302 "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 519 "cwebdir/ctangle.w"
+#line 521 "cwebdir/ctangle.w"
/*51:*/
-#line 578 "cwebdir/ctangle.w"
+#line 580 "cwebdir/ctangle.w"
if(!output_defs_seen)
output_defs();
/*:51*/
-#line 520 "cwebdir/ctangle.w"
+#line 522 "cwebdir/ctangle.w"
-if(text_info->text_link==0&&cur_out_file==end_output_files){
+if(text_info->text_link==macro&&cur_out_file==end_output_files){
#line 89 "cwebdir/ctang-w2c.ch"
fputs(_("\n! No program text was specified."),stdout);mark_harmless;
-#line 523 "cwebdir/ctangle.w"
+#line 525 "cwebdir/ctangle.w"
}
else{
@@ -719,18 +719,18 @@ if(cur_out_file==end_output_files){
if(show_progress)
#line 95 "cwebdir/ctang-w2c.ch"
printf(_("\nWriting the output file (%s):"),C_file_name);
-#line 529 "cwebdir/ctangle.w"
+#line 531 "cwebdir/ctangle.w"
}
else{
if(show_progress){
#line 101 "cwebdir/ctang-w2c.ch"
fputs(_("\nWriting the output files:"),stdout);
-#line 533 "cwebdir/ctangle.w"
+#line 535 "cwebdir/ctangle.w"
printf(" (%s)",C_file_name);
update_terminal;
}
-if(text_info->text_link==0)goto writeloop;
+if(text_info->text_link==macro)goto writeloop;
}
while(stack_ptr> stack)get_output();
flush_buffer();
@@ -752,7 +752,7 @@ if((check_file= fopen(check_file_name,"r"))==NULL)
fatal(_("! Cannot open output file "),check_file_name);
-if(temporary_output)/*107:*/
+if(check_for_change)/*107:*/
#line 378 "cwebdir/ctang-w2c.ch"
do{
@@ -927,7 +927,7 @@ if((check_file= fopen(check_file_name,"r"))==NULL)
fatal(_("! Cannot open output file "),check_file_name);
-if(temporary_output)/*107:*/
+if(check_for_change)/*107:*/
#line 378 "cwebdir/ctang-w2c.ch"
do{
@@ -969,22 +969,22 @@ rename(check_file_name,output_file_name);
}
strcpy(check_file_name,"");
-#line 573 "cwebdir/ctangle.w"
+#line 575 "cwebdir/ctangle.w"
/*:50*/
-#line 541 "cwebdir/ctangle.w"
+#line 543 "cwebdir/ctangle.w"
if(show_happiness){
if(show_progress)new_line;
#line 107 "cwebdir/ctang-w2c.ch"
fputs(_("Done."),stdout);
-#line 545 "cwebdir/ctangle.w"
+#line 547 "cwebdir/ctangle.w"
}
}
}
/*:48*//*54:*/
-#line 589 "cwebdir/ctangle.w"
+#line 594 "cwebdir/ctangle.w"
static void
output_defs(void)
@@ -992,7 +992,7 @@ output_defs(void)
sixteen_bits a;
push_level(NULL);
for(cur_text= text_info+1;cur_text<text_ptr;cur_text++)
-if(cur_text->text_link==0){
+if(cur_text->text_link==macro){
cur_byte= cur_text->tok_start;
cur_end= (cur_text+1)->tok_start;
C_printf("%s","#define ");
@@ -1011,8 +1011,8 @@ if(a<024000){
cur_val= a;out_char(identifier);
}
#line 159 "cwebdir/ctang-w2c.ch"
-else if(a<050000){confusion(_("macro defs have strange char"));}
-#line 615 "cwebdir/ctangle.w"
+else if(a<050000)confusion(_("macro defs have strange char"));
+#line 620 "cwebdir/ctangle.w"
else{
cur_val= a-050000;cur_section= cur_val;out_char(section_number);
}
@@ -1026,7 +1026,7 @@ pop_level(false);
}
/*:54*//*55:*/
-#line 632 "cwebdir/ctangle.w"
+#line 637 "cwebdir/ctangle.w"
static void
out_char(
@@ -1039,7 +1039,7 @@ case'\n':if(protect&&out_state!=verbatim)C_putc(' ');
if(protect||out_state==verbatim)C_putc('\\');
flush_buffer();if(out_state!=verbatim)out_state= normal;break;
/*59:*/
-#line 700 "cwebdir/ctangle.w"
+#line 705 "cwebdir/ctangle.w"
case identifier:
if(out_state==num_or_id)C_putc(' ');
@@ -1054,10 +1054,10 @@ j++;
out_state= num_or_id;break;
/*:59*/
-#line 643 "cwebdir/ctangle.w"
+#line 648 "cwebdir/ctangle.w"
/*60:*/
-#line 713 "cwebdir/ctangle.w"
+#line 718 "cwebdir/ctangle.w"
case section_number:
if(cur_val> 0)C_printf("/*%d:*/",cur_val);
@@ -1079,15 +1079,15 @@ j<k;j++){
if(*j=='\\'||*j=='"')C_putc('\\');
C_putc(*j);
}
-C_printf("%s","\"\n");
+C_putc('"');C_putc('\n');
}
break;
/*:60*/
-#line 644 "cwebdir/ctangle.w"
+#line 649 "cwebdir/ctangle.w"
/*56:*/
-#line 662 "cwebdir/ctangle.w"
+#line 667 "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 +1108,7 @@ case minus_gt_ast:C_putc('-');C_putc('>');C_putc('*');out_state= normal;
break;
/*:56*/
-#line 645 "cwebdir/ctangle.w"
+#line 650 "cwebdir/ctangle.w"
case'=':case'>':C_putc(cur_char);C_putc(' ');
out_state= normal;break;
@@ -1127,7 +1127,7 @@ default:C_putc(cur_char);out_state= normal;break;
}
/*:55*//*64:*/
-#line 794 "cwebdir/ctangle.w"
+#line 799 "cwebdir/ctangle.w"
static eight_bits
skip_ahead(void)
@@ -1145,7 +1145,7 @@ if(c!=ignore||*(loc-1)=='>')return c;
}
/*:64*//*67:*/
-#line 833 "cwebdir/ctangle.w"
+#line 838 "cwebdir/ctangle.w"
static boolean skip_comment(
boolean is_long_comment)
@@ -1158,7 +1158,7 @@ if(get_line())return comment_continues= true;
else{
#line 165 "cwebdir/ctang-w2c.ch"
err_print(_("! Input ended in mid-comment"));
-#line 844 "cwebdir/ctangle.w"
+#line 849 "cwebdir/ctangle.w"
return comment_continues= false;
}
@@ -1173,7 +1173,7 @@ if(c=='@'){
if(ccode[(eight_bits)*loc]==new_section){
#line 171 "cwebdir/ctang-w2c.ch"
err_print(_("! Section name ended in mid-comment"));loc--;
-#line 857 "cwebdir/ctangle.w"
+#line 862 "cwebdir/ctangle.w"
return comment_continues= false;
}
@@ -1183,22 +1183,23 @@ else loc++;
}
/*:67*//*69:*/
-#line 881 "cwebdir/ctangle.w"
+#line 879 "cwebdir/ctangle.w"
static eight_bits
get_next(void)
{
-static int preprocessing= 0;
+static boolean preprocessing= false;
eight_bits c;
while(true){
if(loc> limit){
-if(preprocessing&&*(limit-1)!='\\')preprocessing= 0;
+if(preprocessing&&*(limit-1)!='\\')preprocessing= false;
if(get_line()==false)return new_section;
else if(print_where&&!no_where){
print_where= false;
/*85:*/
-#line 1214 "cwebdir/ctangle.w"
+#line 1221 "cwebdir/ctangle.w"
+{
store_two_bytes(0150000);
if(changing&&include_depth==change_depth){
id_first= change_file_name;
@@ -1210,9 +1211,10 @@ 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);}
+}
/*:85*/
-#line 893 "cwebdir/ctangle.w"
+#line 891 "cwebdir/ctangle.w"
}
else return'\n';
@@ -1226,23 +1228,32 @@ else continue;
}
loc++;
if(xisdigit(c)||c=='.')/*73:*/
-#line 964 "cwebdir/ctangle.w"
+#line 963 "cwebdir/ctangle.w"
{
+boolean hex_flag= false;
id_first= loc-1;
if(*id_first=='.'&&!xisdigit(*loc))goto mistake;
if(*id_first=='0'){
if(*loc=='x'||*loc=='X'){
-loc++;while(xisxdigit(*loc))loc++;goto found;
+hex_flag= true;
+loc++;while(xisxdigit(*loc)||*loc=='\'')loc++;
+}
+else if(*loc=='b'||*loc=='B'){
+loc++;while(*loc=='0'||*loc=='1'||*loc=='\'')loc++;goto found;
}
}
-while(xisdigit(*loc))loc++;
+while(xisdigit(*loc)||*loc=='\'')loc++;
if(*loc=='.'){
loc++;
-while(xisdigit(*loc))loc++;
+while((hex_flag&&xisxdigit(*loc))||xisdigit(*loc)||*loc=='\'')loc++;
}
if(*loc=='e'||*loc=='E'){
if(*++loc=='+'||*loc=='-')loc++;
-while(xisdigit(*loc))loc++;
+while(xisdigit(*loc)||*loc=='\'')loc++;
+}
+else if(hex_flag&&(*loc=='p'||*loc=='P')){
+if(*++loc=='+'||*loc=='-')loc++;
+while(xisxdigit(*loc)||*loc=='\'')loc++;
}
found:while(*loc=='u'||*loc=='U'||*loc=='l'||*loc=='L'
||*loc=='f'||*loc=='F')loc++;
@@ -1251,19 +1262,19 @@ return constant;
}
/*:73*/
-#line 905 "cwebdir/ctangle.w"
+#line 903 "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 992 "cwebdir/ctangle.w"
+#line 1000 "cwebdir/ctangle.w"
{
char delim= c;
id_first= section_text+1;
id_loc= section_text;*++id_loc= delim;
if(delim=='L'||delim=='u'||delim=='U'){
-if(delim=='u'&&*loc=='8'){*++id_loc= *loc++;}
+if(delim=='u'&&*loc=='8')*++id_loc= *loc++;
delim= *loc++;*++id_loc= delim;
}
while(true){
@@ -1271,13 +1282,13 @@ if(loc>=limit){
if(*(limit-1)!='\\'){
#line 177 "cwebdir/ctang-w2c.ch"
err_print(_("! String didn't end"));loc= limit;break;
-#line 1004 "cwebdir/ctangle.w"
+#line 1012 "cwebdir/ctangle.w"
}
if(get_line()==false){
#line 183 "cwebdir/ctang-w2c.ch"
err_print(_("! Input ended in middle of string"));loc= buffer;break;
-#line 1008 "cwebdir/ctangle.w"
+#line 1016 "cwebdir/ctangle.w"
}
else if(++id_loc<=section_text_end)*id_loc= '\n';
@@ -1297,7 +1308,7 @@ if(++id_loc<=section_text_end)*id_loc= c;
if(id_loc>=section_text_end){
#line 189 "cwebdir/ctang-w2c.ch"
fputs(_("\n! String too long: "),stdout);
-#line 1026 "cwebdir/ctangle.w"
+#line 1034 "cwebdir/ctangle.w"
term_write(section_text+1,25);
err_print("...");
@@ -1307,60 +1318,61 @@ return string;
}
/*:74*/
-#line 909 "cwebdir/ctangle.w"
+#line 907 "cwebdir/ctangle.w"
else if(isalpha(c)||isxalpha(c)||ishigh(c))
/*72:*/
-#line 957 "cwebdir/ctangle.w"
+#line 954 "cwebdir/ctangle.w"
{
id_first= --loc;
-while(isalpha((eight_bits)*++loc)||isdigit((eight_bits)*loc)
+do
+++loc;
+while(isalpha((eight_bits)*loc)||isdigit((eight_bits)*loc)
||isxalpha((eight_bits)*loc)||ishigh((eight_bits)*loc));
id_loc= loc;return identifier;
}
/*:72*/
-#line 911 "cwebdir/ctangle.w"
+#line 909 "cwebdir/ctangle.w"
else if(c=='@')/*75:*/
-#line 1037 "cwebdir/ctangle.w"
+#line 1045 "cwebdir/ctangle.w"
{
-c= ccode[(eight_bits)*loc++];
-switch(c){
+switch(c= ccode[(eight_bits)*loc++]){
case ignore:continue;
#line 195 "cwebdir/ctang-w2c.ch"
case translit_code:err_print(_("! Use @l in limbo only"));continue;
-#line 1042 "cwebdir/ctangle.w"
+#line 1049 "cwebdir/ctangle.w"
case control_text:while((c= skip_ahead())=='@');
if(*(loc-1)!='>')
#line 201 "cwebdir/ctang-w2c.ch"
err_print(_("! Double @ should be used in control text"));
-#line 1047 "cwebdir/ctangle.w"
+#line 1054 "cwebdir/ctangle.w"
continue;
case section_name:
cur_section_name_char= *(loc-1);
/*77:*/
-#line 1085 "cwebdir/ctangle.w"
+#line 1091 "cwebdir/ctangle.w"
{
char*k;
/*79:*/
-#line 1105 "cwebdir/ctangle.w"
+#line 1113 "cwebdir/ctangle.w"
k= section_text;
while(true){
if(loc> limit&&get_line()==false){
#line 219 "cwebdir/ctang-w2c.ch"
err_print(_("! Input ended in section name"));
-#line 1110 "cwebdir/ctangle.w"
+#line 1118 "cwebdir/ctangle.w"
loc= buffer+1;break;
}
c= *loc;
/*80:*/
-#line 1129 "cwebdir/ctangle.w"
+#line 1137 "cwebdir/ctangle.w"
if(c=='@'){
c= *(loc+1);
@@ -1370,20 +1382,20 @@ loc+= 2;break;
if(ccode[(eight_bits)c]==new_section){
#line 231 "cwebdir/ctang-w2c.ch"
err_print(_("! Section name didn't end"));break;
-#line 1137 "cwebdir/ctangle.w"
+#line 1145 "cwebdir/ctangle.w"
}
if(ccode[(eight_bits)c]==section_name){
#line 237 "cwebdir/ctang-w2c.ch"
err_print(_("! Nesting of section names not allowed"));break;
-#line 1141 "cwebdir/ctangle.w"
+#line 1149 "cwebdir/ctangle.w"
}
*(++k)= '@';loc++;
}
/*:80*/
-#line 1114 "cwebdir/ctangle.w"
+#line 1122 "cwebdir/ctangle.w"
loc++;if(k<section_text_end)k++;
if(xisspace(c)){
@@ -1394,7 +1406,7 @@ c= ' ';if(*(k-1)==' ')k--;
if(k>=section_text_end){
#line 225 "cwebdir/ctang-w2c.ch"
fputs(_("\n! Section name too long: "),stdout);
-#line 1123 "cwebdir/ctangle.w"
+#line 1131 "cwebdir/ctangle.w"
term_write(section_text+1,25);
printf("...");mark_harmless;
@@ -1402,14 +1414,16 @@ printf("...");mark_harmless;
if(*k==' '&&k> section_text)k--;
/*:79*/
-#line 1087 "cwebdir/ctangle.w"
+#line 1093 "cwebdir/ctangle.w"
if(k-section_text> 3&&strncmp(k-2,"...",3)==0)
-cur_section_name= section_lookup(section_text+1,k-3,1);
-else cur_section_name= section_lookup(section_text+1,k,0);
+cur_section_name= section_lookup(section_text+1,k-3,true);
+
+else cur_section_name= section_lookup(section_text+1,k,false);
+
if(cur_section_name_char=='(')
/*47:*/
-#line 497 "cwebdir/ctangle.w"
+#line 501 "cwebdir/ctangle.w"
{
for(an_output_file= cur_out_file;
@@ -1418,52 +1432,49 @@ 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;
-else{
#line 83 "cwebdir/ctang-w2c.ch"
-overflow(_("output files"));
-#line 507 "cwebdir/ctangle.w"
-}
+else overflow(_("output files"));
+#line 510 "cwebdir/ctangle.w"
}
}
/*:47*/
-#line 1093 "cwebdir/ctangle.w"
+#line 1101 "cwebdir/ctangle.w"
return section_name;
}
/*:77*/
-#line 1051 "cwebdir/ctangle.w"
+#line 1058 "cwebdir/ctangle.w"
case string:/*81:*/
-#line 1151 "cwebdir/ctangle.w"
+#line 1159 "cwebdir/ctangle.w"
{
id_first= loc++;*(limit+1)= '@';*(limit+2)= '>';
while(*loc!='@'||*(loc+1)!='>')loc++;
#line 243 "cwebdir/ctang-w2c.ch"
if(loc>=limit)err_print(_("! Verbatim string didn't end"));
-#line 1155 "cwebdir/ctangle.w"
+#line 1163 "cwebdir/ctangle.w"
id_loc= loc;loc+= 2;
return string;
}
/*:81*/
-#line 1052 "cwebdir/ctangle.w"
+#line 1059 "cwebdir/ctangle.w"
case ord:/*76:*/
-#line 1064 "cwebdir/ctangle.w"
+#line 1071 "cwebdir/ctangle.w"
id_first= loc;
-if(*loc=='\\'){
+if(*loc=='\\')
if(*++loc=='\'')loc++;
-}
while(*loc!='\''){
if(*loc=='@'){
if(*(loc+1)!='@')
#line 207 "cwebdir/ctang-w2c.ch"
err_print(_("! Double @ should be used in ASCII constant"));
-#line 1073 "cwebdir/ctangle.w"
+#line 1079 "cwebdir/ctangle.w"
else loc++;
}
@@ -1471,7 +1482,7 @@ loc++;
if(loc> limit){
#line 213 "cwebdir/ctang-w2c.ch"
err_print(_("! String didn't end"));loc= limit-1;break;
-#line 1079 "cwebdir/ctangle.w"
+#line 1085 "cwebdir/ctangle.w"
}
}
@@ -1479,34 +1490,35 @@ loc++;
return ord;
/*:76*/
-#line 1053 "cwebdir/ctangle.w"
+#line 1060 "cwebdir/ctangle.w"
default:return c;
}
}
/*:75*/
-#line 912 "cwebdir/ctangle.w"
+#line 910 "cwebdir/ctangle.w"
else if(xisspace(c)){
if(!preprocessing||loc> limit)continue;
else return' ';
}
-else if(c=='#'&&loc==buffer+1)preprocessing= 1;
+else if(c=='#'&&loc==buffer+1)preprocessing= true;
mistake:/*71:*/
-#line 935 "cwebdir/ctangle.w"
+#line 931 "cwebdir/ctangle.w"
switch(c){
case'+':if(*loc=='+')compress(plus_plus);break;
case'-':if(*loc=='-'){compress(minus_minus);}
-else{if(*loc=='>'){if(*(loc+1)=='*'){loc++;compress(minus_gt_ast);}
-else compress(minus_gt);}}break;
+else if(*loc=='>'){
+if(*(loc+1)=='*'){loc++;compress(minus_gt_ast);}
+else compress(minus_gt);
+}break;
case'.':if(*loc=='*'){compress(period_ast);}
else if(*loc=='.'&&*(loc+1)=='.'){
loc++;compress(dot_dot_dot);
-}
-break;
+}break;
case':':if(*loc==':')compress(colon_colon);break;
case'=':if(*loc=='=')compress(eq_eq);break;
case'>':if(*loc=='='){compress(gt_eq);}
@@ -1519,23 +1531,24 @@ case'!':if(*loc=='=')compress(non_eq);break;
}
/*:71*/
-#line 919 "cwebdir/ctangle.w"
+#line 917 "cwebdir/ctangle.w"
return c;
}
}
/*:69*//*83:*/
-#line 1186 "cwebdir/ctangle.w"
+#line 1193 "cwebdir/ctangle.w"
static void
scan_repl(
eight_bits t)
{
sixteen_bits a;
-if(t==section_name){/*85:*/
-#line 1214 "cwebdir/ctangle.w"
+if(t==section_name)/*85:*/
+#line 1221 "cwebdir/ctangle.w"
+{
store_two_bytes(0150000);
if(changing&&include_depth==change_depth){
id_first= change_file_name;
@@ -1547,13 +1560,14 @@ 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);}
+}
/*:85*/
-#line 1192 "cwebdir/ctangle.w"
-}
+#line 1199 "cwebdir/ctangle.w"
+
while(true)switch(a= get_next()){
/*86:*/
-#line 1227 "cwebdir/ctangle.w"
+#line 1236 "cwebdir/ctangle.w"
case identifier:a= id_lookup(id_first,id_loc,0)-name_dir;
app_repl((a/0400)+0200);
@@ -1561,7 +1575,7 @@ app_repl(a%0400);break;
case section_name:if(t!=section_name)goto done;
else{
/*87:*/
-#line 1260 "cwebdir/ctangle.w"
+#line 1269 "cwebdir/ctangle.w"
{
char*try_loc= loc;
while(*try_loc==' '&&try_loc<limit)try_loc++;
@@ -1569,21 +1583,22 @@ if(*try_loc=='+'&&try_loc<limit)try_loc++;
while(*try_loc==' '&&try_loc<limit)try_loc++;
#line 273 "cwebdir/ctang-w2c.ch"
if(*try_loc=='=')err_print(_("! Missing `@ ' before a named section"));
-#line 1266 "cwebdir/ctangle.w"
+#line 1275 "cwebdir/ctangle.w"
}
/*:87*/
-#line 1233 "cwebdir/ctangle.w"
+#line 1242 "cwebdir/ctangle.w"
a= cur_section_name-name_dir;
app_repl((a/0400)+0250);
app_repl(a%0400);
/*85:*/
-#line 1214 "cwebdir/ctangle.w"
+#line 1221 "cwebdir/ctangle.w"
+{
store_two_bytes(0150000);
if(changing&&include_depth==change_depth){
id_first= change_file_name;
@@ -1595,14 +1610,15 @@ 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);}
+}
/*:85*/
-#line 1237 "cwebdir/ctangle.w"
+#line 1246 "cwebdir/ctangle.w"
break;
}
#line 261 "cwebdir/ctang-w2c.ch"
case output_defs_code:if(t!=section_name)err_print(_("! Misplaced @h"));
-#line 1240 "cwebdir/ctangle.w"
+#line 1249 "cwebdir/ctangle.w"
else{
output_defs_seen= true;
@@ -1610,8 +1626,9 @@ a= output_defs_flag;
app_repl((a/0400)+0200);
app_repl(a%0400);
/*85:*/
-#line 1214 "cwebdir/ctangle.w"
+#line 1221 "cwebdir/ctangle.w"
+{
store_two_bytes(0150000);
if(changing&&include_depth==change_depth){
id_first= change_file_name;
@@ -1623,15 +1640,16 @@ 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);}
+}
/*:85*/
-#line 1246 "cwebdir/ctangle.w"
+#line 1255 "cwebdir/ctangle.w"
}
break;
case constant:case string:
/*88:*/
-#line 1271 "cwebdir/ctangle.w"
+#line 1286 "cwebdir/ctangle.w"
app_repl(a);
while(id_first<id_loc){
@@ -1639,19 +1657,21 @@ if(*id_first=='@'){
if(*(id_first+1)=='@')id_first++;
#line 279 "cwebdir/ctang-w2c.ch"
else err_print(_("! Double @ should be used in string"));
-#line 1277 "cwebdir/ctangle.w"
+#line 1292 "cwebdir/ctangle.w"
}
+else if(a==constant&&*id_first=='\''&&!keep_digit_separators)
+id_first++;
app_repl(*id_first++);
}
app_repl(a);break;
/*:88*/
-#line 1250 "cwebdir/ctangle.w"
+#line 1259 "cwebdir/ctangle.w"
case ord:
/*89:*/
-#line 1287 "cwebdir/ctangle.w"
+#line 1304 "cwebdir/ctangle.w"
{
int c= (eight_bits)*id_first;
if(c=='\\'){
@@ -1690,7 +1710,7 @@ case'\'':c= '\'';break;
case'\"':c= '\"';break;
#line 285 "cwebdir/ctang-w2c.ch"
default:err_print(_("! Unrecognized escape sequence"));
-#line 1324 "cwebdir/ctangle.w"
+#line 1341 "cwebdir/ctangle.w"
}
}
@@ -1704,19 +1724,19 @@ app_repl(constant);
break;
/*:89*/
-#line 1252 "cwebdir/ctangle.w"
+#line 1261 "cwebdir/ctangle.w"
case definition:case format_code:case begin_C:if(t!=section_name)goto done;
else{
#line 267 "cwebdir/ctang-w2c.ch"
err_print(_("! @d, @f and @c are ignored in C text"));continue;
-#line 1256 "cwebdir/ctangle.w"
+#line 1265 "cwebdir/ctangle.w"
}
case new_section:goto done;
/*:86*/
-#line 1197 "cwebdir/ctangle.w"
+#line 1204 "cwebdir/ctangle.w"
case')':app_repl(a);
if(t==macro)app_repl(' ');
@@ -1726,12 +1746,12 @@ default:app_repl(a);
done:next_control= (eight_bits)a;
#line 255 "cwebdir/ctang-w2c.ch"
if(text_ptr> text_info_end)overflow(_("text"));
-#line 1205 "cwebdir/ctangle.w"
+#line 1212 "cwebdir/ctangle.w"
cur_text= text_ptr;(++text_ptr)->tok_start= tok_ptr;
}
/*:83*//*90:*/
-#line 1346 "cwebdir/ctangle.w"
+#line 1363 "cwebdir/ctangle.w"
static void
scan_section(void)
@@ -1743,10 +1763,10 @@ section_count++;no_where= true;
if(*(loc-1)=='*'&&show_progress){
printf("*%d",section_count);update_terminal;
}
-next_control= 0;
+next_control= ignore;
while(true){
/*92:*/
-#line 1387 "cwebdir/ctangle.w"
+#line 1404 "cwebdir/ctangle.w"
while(next_control<definition)
@@ -1755,17 +1775,17 @@ loc-= 2;next_control= get_next();
}
/*:92*/
-#line 1360 "cwebdir/ctangle.w"
+#line 1377 "cwebdir/ctangle.w"
if(next_control==definition){
/*93:*/
-#line 1394 "cwebdir/ctangle.w"
+#line 1411 "cwebdir/ctangle.w"
{
while((next_control= get_next())=='\n');
if(next_control!=identifier){
#line 291 "cwebdir/ctang-w2c.ch"
err_print(_("! Definition flushed, must start with identifier"));
-#line 1398 "cwebdir/ctangle.w"
+#line 1415 "cwebdir/ctangle.w"
continue;
}
@@ -1780,7 +1800,7 @@ cur_text->text_link= macro;
}
/*:93*/
-#line 1362 "cwebdir/ctangle.w"
+#line 1379 "cwebdir/ctangle.w"
continue;
}
@@ -1790,14 +1810,14 @@ p= name_dir;break;
if(next_control==section_name){
p= cur_section_name;
/*94:*/
-#line 1419 "cwebdir/ctangle.w"
+#line 1436 "cwebdir/ctangle.w"
while((next_control= get_next())=='+');
if(next_control!='='&&next_control!=eq_eq)
continue;
/*:94*/
-#line 1370 "cwebdir/ctangle.w"
+#line 1387 "cwebdir/ctangle.w"
break;
}
@@ -1805,22 +1825,22 @@ return;
}
no_where= print_where= false;
/*95:*/
-#line 1424 "cwebdir/ctangle.w"
+#line 1441 "cwebdir/ctangle.w"
/*96:*/
-#line 1429 "cwebdir/ctangle.w"
+#line 1446 "cwebdir/ctangle.w"
store_two_bytes((sixteen_bits)(0150000+section_count));
/*:96*/
-#line 1425 "cwebdir/ctangle.w"
+#line 1442 "cwebdir/ctangle.w"
scan_repl(section_name);
/*97:*/
-#line 1433 "cwebdir/ctangle.w"
+#line 1450 "cwebdir/ctangle.w"
-if(p==name_dir||p==0){
+if(p==name_dir||p==NULL){
(last_unnamed)->text_link= cur_text-text_info;last_unnamed= cur_text;
}
else if(p->equiv==(void*)text_info)p->equiv= (void*)cur_text;
@@ -1835,16 +1855,16 @@ cur_text->text_link= section_flag;
/*:97*/
-#line 1427 "cwebdir/ctangle.w"
+#line 1444 "cwebdir/ctangle.w"
/*:95*/
-#line 1376 "cwebdir/ctangle.w"
+#line 1393 "cwebdir/ctangle.w"
}
/*:90*//*98:*/
-#line 1448 "cwebdir/ctangle.w"
+#line 1465 "cwebdir/ctangle.w"
static void
phase_one(void){
@@ -1858,7 +1878,7 @@ phase= 2;
}
/*:98*//*100:*/
-#line 1465 "cwebdir/ctangle.w"
+#line 1482 "cwebdir/ctangle.w"
static void
skip_limbo(void)
@@ -1873,7 +1893,7 @@ c= *loc++;
if(ccode[(eight_bits)c]==new_section)break;
switch(ccode[(eight_bits)c]){
case translit_code:/*102:*/
-#line 1496 "cwebdir/ctangle.w"
+#line 1513 "cwebdir/ctangle.w"
while(xisspace(*loc)&&loc<limit)loc++;
loc+= 3;
@@ -1881,7 +1901,7 @@ if(loc> limit||!xisxdigit(*(loc-3))||!xisxdigit(*(loc-2))
||(*(loc-3)>='0'&&*(loc-3)<='7')||!xisspace(*(loc-1)))
#line 309 "cwebdir/ctang-w2c.ch"
err_print(_("! Improper hex number following @l"));
-#line 1502 "cwebdir/ctangle.w"
+#line 1519 "cwebdir/ctangle.w"
else{
unsigned int i;
@@ -1893,7 +1913,7 @@ while(loc<limit&&(xisalpha(*loc)||xisdigit(*loc)||*loc=='_'))loc++;
if(loc-beg>=translit_length)
#line 315 "cwebdir/ctang-w2c.ch"
err_print(_("! Replacement string in @l too long"));
-#line 1512 "cwebdir/ctangle.w"
+#line 1529 "cwebdir/ctangle.w"
else{
strncpy(translit[i-0200],beg,(size_t)(loc-beg));
@@ -1902,7 +1922,7 @@ translit[i-0200][loc-beg]= '\0';
}
/*:102*/
-#line 1478 "cwebdir/ctangle.w"
+#line 1495 "cwebdir/ctangle.w"
break;
case format_code:case'@':break;
case control_text:if(c=='q'||c=='Q'){
@@ -1910,13 +1930,13 @@ while((c= skip_ahead())=='@');
if(*(loc-1)!='>')
#line 297 "cwebdir/ctang-w2c.ch"
err_print(_("! Double @ should be used in control text"));
-#line 1484 "cwebdir/ctangle.w"
+#line 1501 "cwebdir/ctangle.w"
break;
}
#line 303 "cwebdir/ctang-w2c.ch"
default:err_print(_("! Double @ should be used in limbo"));
-#line 1488 "cwebdir/ctangle.w"
+#line 1505 "cwebdir/ctangle.w"
}
}
@@ -1924,7 +1944,7 @@ default:err_print(_("! Double @ should be used in limbo"));
}
/*:100*//*103:*/
-#line 1522 "cwebdir/ctangle.w"
+#line 1539 "cwebdir/ctangle.w"
void
print_stats(void){
@@ -1937,7 +1957,7 @@ 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 1533 "cwebdir/ctangle.w"
+#line 1550 "cwebdir/ctangle.w"
(ptrdiff_t)(tok_ptr-tok_mem),(long)max_toks);
}