diff options
Diffstat (limited to 'Build/source/texk/web2c/ctangleboot.cin')
-rw-r--r-- | Build/source/texk/web2c/ctangleboot.cin | 1078 |
1 files changed, 514 insertions, 564 deletions
diff --git a/Build/source/texk/web2c/ctangleboot.cin b/Build/source/texk/web2c/ctangleboot.cin index afd215a5b09..d29a6ad3944 100644 --- a/Build/source/texk/web2c/ctangleboot.cin +++ b/Build/source/texk/web2c/ctangleboot.cin @@ -1,14 +1,8 @@ /*1:*/ -#line 64 "cwebdir/ctangle.w" - -/*2:*/ -#line 73 "cwebdir/ctang-w2c.ch" - -#include <string.h> -#line 83 "cwebdir/ctangle.w" +#line 66 "cwebdir/ctangle.w" -/*:2*//*6:*/ -#line 52 "cwebdir/comm-w2c.h" +/*4:*/ +#line 53 "cwebdir/comm-w2c.h" #ifndef HAVE_GETTEXT #define HAVE_GETTEXT 0 @@ -20,33 +14,20 @@ #define gettext(A) A #endif +#include <ctype.h> #include <stdbool.h> +#include <stddef.h> #include <stdint.h> -#include <stdio.h> - -/*:6*//*62:*/ -#line 888 "cwebdir/ctangle.w" - -#include <ctype.h> #include <stdlib.h> +#include <stdio.h> +#include <string.h> -/*:62*/ -#line 65 "cwebdir/ctangle.w" +/*:4*/ +#line 67 "cwebdir/ctangle.w" -#define banner "This is CTANGLE, Version 3.64" \ +#define banner "This is CTANGLE, Version 4.0" \ \ -#define max_bytes 1000000 \ - -#define max_toks 1000000 -#define max_names 10239 \ - -#define max_texts 10239 -#define hash_size 8501 -#define longest_name 10000 -#define stack_size 50 -#define buf_size 1000 \ - #define _(S) gettext(S) \ #define and_and 04 @@ -87,15 +68,20 @@ #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 max_include_depth 10 \ #define max_file_name_length 1024 #define cur_file file[include_depth] #define cur_file_name file_name[include_depth] -#define web_file_name file_name[0] -#define cur_line line[include_depth] \ +#define cur_line line[include_depth] +#define web_file file[0] +#define web_file_name file_name[0] \ #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'] \ @@ -107,6 +93,18 @@ #define C_printf(c,a) fprintf(C_file,c,a) #define C_putc(c) putc(c,C_file) \ +#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 equiv equiv_or_xref \ #define section_flag max_texts \ @@ -148,7 +146,7 @@ #define isxalpha(c) ((c) =='_'||(c) =='$') \ -#define ishigh(c) ((unsigned char) (c) > 0177) \ +#define ishigh(c) ((eight_bits) (c) > 0177) \ \ #define compress(c) if(loc++<=limit) return(c) \ @@ -159,10 +157,10 @@ #define max_banner 50 \ -#line 66 "cwebdir/ctangle.w" +#line 68 "cwebdir/ctangle.w" -/*5:*/ -#line 34 "cwebdir/comm-w2c.h" +/*3:*/ +#line 35 "cwebdir/comm-w2c.h" typedef bool boolean; typedef uint8_t eight_bits; @@ -173,24 +171,24 @@ ctangle,cweave,ctwill extern cweb program; extern int phase; -/*:5*//*7:*/ -#line 86 "cwebdir/comm-w2c.h" +/*:3*//*5:*/ +#line 91 "cwebdir/comm-w2c.h" extern char section_text[]; extern char*section_text_end; extern char*id_first; extern char*id_loc; -/*:7*//*8:*/ -#line 101 "cwebdir/comm-w2c.h" +/*:5*//*6:*/ +#line 105 "cwebdir/comm-w2c.h" extern char buffer[]; extern char*buffer_end; extern char*loc; extern char*limit; -/*:8*//*9:*/ -#line 116 "cwebdir/comm-w2c.h" +/*:6*//*7:*/ +#line 120 "cwebdir/comm-w2c.h" typedef struct name_info{ char*byte_start; @@ -213,27 +211,14 @@ extern char*byte_ptr; extern name_pointer hash[]; extern hash_pointer hash_end; extern hash_pointer 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 void init_node(name_pointer); -extern void init_p(name_pointer,eight_bits); -extern void print_prefix_name(name_pointer); -extern void print_section_name(name_pointer); -extern void sprint_section_name(char*,name_pointer); - -/*:9*//*10:*/ -#line 157 "cwebdir/comm-w2c.h" +/*:7*//*9:*/ +#line 164 "cwebdir/comm-w2c.h" extern int history; -extern int wrap_up(void); -extern void err_print(const char*); -extern void fatal(const char*,const char*); -extern void overflow(const char*); -/*:10*//*11:*/ -#line 172 "cwebdir/comm-w2c.h" +/*:9*//*11:*/ +#line 184 "cwebdir/comm-w2c.h" extern int include_depth; extern FILE*file[]; @@ -242,63 +227,53 @@ extern char C_file_name[]; extern char tex_file_name[]; extern char idx_file_name[]; extern char scn_file_name[]; -extern char check_file_name[]; extern char file_name[][max_file_name_length]; extern char change_file_name[]; +extern char check_file_name[]; extern int line[]; extern int change_line; extern int change_depth; extern boolean input_has_ended; extern boolean changing; extern boolean web_file_open; -extern boolean get_line(void); -extern void check_complete(void); -extern void reset_input(void); -/*:11*//*12:*/ -#line 195 "cwebdir/comm-w2c.h" +/*:11*//*13:*/ +#line 209 "cwebdir/comm-w2c.h" extern sixteen_bits section_count; extern boolean changed_section[]; extern boolean change_pending; extern boolean print_where; -/*:12*//*13:*/ -#line 208 "cwebdir/comm-w2c.h" +/*:13*//*14:*/ +#line 223 "cwebdir/comm-w2c.h" extern int argc; extern char**argv; extern boolean flags[]; +extern const char*use_language; -/*:13*//*14:*/ -#line 220 "cwebdir/comm-w2c.h" +/*:14*//*15:*/ +#line 236 "cwebdir/comm-w2c.h" extern FILE*C_file; extern FILE*tex_file; extern FILE*idx_file; extern FILE*scn_file; -extern FILE*check_file; extern FILE*active_file; +extern FILE*check_file; -/*:14*//*15:*/ -#line 230 "cwebdir/comm-w2c.h" - -extern void common_init(void); -extern void print_stats(void); -extern void cb_show_banner(void); -#line 128 "cwebdir/ctangle.w" - -/*:15*//*108:*/ -#line 903 "cwebdir/ctang-w2c.ch" +/*:15*//*116:*/ +#line 473 "cwebdir/ctang-w2c.ch" extern char cb_banner[]; -/*:108*/ -#line 67 "cwebdir/ctangle.w" +/*:116*/ +#line 69 "cwebdir/ctangle.w" -/*16:*/ -#line 152 "cwebdir/ctangle.w" +/*19:*/ +#line 124 "cwebdir/ctangle.w" typedef struct{ eight_bits*tok_start; @@ -306,8 +281,8 @@ sixteen_bits text_link; }text; typedef text*text_pointer; -/*:16*//*27:*/ -#line 296 "cwebdir/ctangle.w" +/*:19*//*31:*/ +#line 272 "cwebdir/ctangle.w" typedef struct{ eight_bits*end_field; @@ -318,11 +293,11 @@ sixteen_bits section_field; }output_state; typedef output_state*stack_pointer; -/*:27*/ -#line 68 "cwebdir/ctangle.w" +/*:31*/ +#line 70 "cwebdir/ctangle.w" -/*17:*/ -#line 159 "cwebdir/ctangle.w" +/*20:*/ +#line 131 "cwebdir/ctangle.w" text text_info[max_texts]; text_pointer text_info_end= text_info+max_texts-1; @@ -331,13 +306,13 @@ eight_bits tok_mem[max_toks]; eight_bits*tok_mem_end= tok_mem+max_toks-1; eight_bits*tok_ptr; -/*:17*//*23:*/ -#line 227 "cwebdir/ctangle.w" +/*:20*//*26:*/ +#line 200 "cwebdir/ctangle.w" text_pointer last_unnamed; -/*:23*//*28:*/ -#line 312 "cwebdir/ctangle.w" +/*:26*//*32:*/ +#line 288 "cwebdir/ctangle.w" output_state cur_state; @@ -345,163 +320,207 @@ output_state stack[stack_size+1]; stack_pointer stack_ptr; stack_pointer stack_end= stack+stack_size; -/*:28*//*32:*/ -#line 384 "cwebdir/ctangle.w" +/*:32*//*37:*/ +#line 364 "cwebdir/ctangle.w" int cur_val; -/*:32*//*36:*/ -#line 473 "cwebdir/ctangle.w" +/*:37*//*42:*/ +#line 456 "cwebdir/ctangle.w" eight_bits out_state; boolean protect; -/*:36*//*38:*/ -#line 502 "cwebdir/ctangle.w" +/*:42*//*45:*/ +#line 488 "cwebdir/ctangle.w" name_pointer output_files[max_files]; name_pointer*cur_out_file,*end_output_files,*an_output_file; char cur_section_name_char; -char output_file_name[longest_name]; +char output_file_name[longest_name+1]; -/*:38*//*45:*/ -#line 599 "cwebdir/ctangle.w" +/*:45*//*52:*/ +#line 588 "cwebdir/ctangle.w" boolean output_defs_seen= 0; -/*:45*//*51:*/ -#line 710 "cwebdir/ctangle.w" +/*:52*//*57:*/ +#line 697 "cwebdir/ctangle.w" char translit[128][translit_length]; -/*:51*//*56:*/ -#line 789 "cwebdir/ctangle.w" +/*:57*//*62:*/ +#line 776 "cwebdir/ctangle.w" eight_bits ccode[256]; -/*:56*//*59:*/ -#line 845 "cwebdir/ctangle.w" +/*:62*//*66:*/ +#line 836 "cwebdir/ctangle.w" boolean comment_continues= 0; -/*:59*//*61:*/ -#line 884 "cwebdir/ctangle.w" +/*:66*//*68:*/ +#line 875 "cwebdir/ctangle.w" name_pointer cur_section_name; int no_where; -/*:61*//*75:*/ -#line 1195 "cwebdir/ctangle.w" +/*:68*//*82:*/ +#line 1189 "cwebdir/ctangle.w" text_pointer cur_text; eight_bits next_control; -/*:75*//*82:*/ -#line 1353 "cwebdir/ctangle.w" +/*:82*//*90:*/ +#line 1350 "cwebdir/ctangle.w" extern sixteen_bits section_count; -/*:82*/ -#line 69 "cwebdir/ctangle.w" +/*:90*/ +#line 71 "cwebdir/ctangle.w" -/*41:*/ -#line 533 "cwebdir/ctangle.w" +/*8:*/ +#line 143 "cwebdir/comm-w2c.h" -#line 264 "cwebdir/ctang-w2c.ch" -static void phase_two(void); -#line 535 "cwebdir/ctangle.w" +extern boolean names_match(name_pointer,const char*,size_t,eight_bits); +extern name_pointer id_lookup(const char*,const char*,char); -/*:41*//*46:*/ -#line 602 "cwebdir/ctangle.w" +extern name_pointer section_lookup(char*,char*,int); +extern void init_node(name_pointer); +extern void init_p(name_pointer,eight_bits); +extern void print_prefix_name(name_pointer); +extern void print_section_name(name_pointer); +extern void sprint_section_name(char*,name_pointer); -#line 351 "cwebdir/ctang-w2c.ch" -static void output_defs(void); -#line 604 "cwebdir/ctangle.w" +/*:8*//*10:*/ +#line 167 "cwebdir/comm-w2c.h" -/*:46*//*48:*/ -#line 648 "cwebdir/ctangle.w" +extern int wrap_up(void); +extern void err_print(const char*); +extern void fatal(const char*,const char*); +extern void overflow(const char*); -#line 371 "cwebdir/ctang-w2c.ch" -static void out_char(eight_bits); -#line 650 "cwebdir/ctangle.w" +/*:10*//*12:*/ +#line 203 "cwebdir/comm-w2c.h" -/*:48*//*90:*/ -#line 1460 "cwebdir/ctangle.w" +extern boolean get_line(void); +extern void check_complete(void); +extern void reset_input(void); -#line 667 "cwebdir/ctang-w2c.ch" -static void phase_one(void); -#line 1462 "cwebdir/ctangle.w" +/*:12*//*16:*/ +#line 245 "cwebdir/comm-w2c.h" -/*:90*//*92:*/ -#line 1478 "cwebdir/ctangle.w" +extern void common_init(void); +extern void print_stats(void); +extern void cb_show_banner(void); -#line 681 "cwebdir/ctang-w2c.ch" -static void skip_limbo(void); -#line 1480 "cwebdir/ctangle.w" +/*:16*//*29:*/ +#line 233 "cwebdir/ctangle.w" + +static void store_two_bytes(sixteen_bits); -/*:92*//*97:*/ -#line 766 "cwebdir/ctang-w2c.ch" +/*:29*//*34:*/ +#line 312 "cwebdir/ctangle.w" + +static void push_level(name_pointer); +static void pop_level(int); + +/*:34*//*38:*/ +#line 371 "cwebdir/ctangle.w" + +static void get_output(void); + +/*:38*//*43:*/ +#line 464 "cwebdir/ctangle.w" + +static void flush_buffer(void); + +/*:43*//*48:*/ +#line 519 "cwebdir/ctangle.w" + +static void phase_two(void); + +/*:48*//*53:*/ +#line 591 "cwebdir/ctangle.w" + +static void output_defs(void); +static void out_char(eight_bits); + +/*:53*//*64:*/ +#line 800 "cwebdir/ctangle.w" -static eight_bits get_next(void); static eight_bits skip_ahead(void); static boolean skip_comment(boolean); -static void flush_buffer(void); -static void get_output(void); -static void pop_level(int); -static void push_level(name_pointer); + +/*:64*//*69:*/ +#line 887 "cwebdir/ctangle.w" + +static eight_bits get_next(void); + +/*:69*//*83:*/ +#line 1193 "cwebdir/ctangle.w" + static void scan_repl(eight_bits); + +/*:83*//*91:*/ +#line 1357 "cwebdir/ctangle.w" + static void scan_section(void); -static void store_two_bytes(sixteen_bits); -/*:97*/ -#line 70 "cwebdir/ctangle.w" +/*:91*//*99:*/ +#line 1460 "cwebdir/ctangle.w" +static void phase_one(void); -#line 68 "cwebdir/ctang-w2c.ch" -/*:1*//*3:*/ -#line 91 "cwebdir/ctangle.w" +/*:99*//*101:*/ +#line 1478 "cwebdir/ctangle.w" + +static void skip_limbo(void); + +/*:101*/ +#line 72 "cwebdir/ctangle.w" + + +/*:1*//*2:*/ +#line 81 "cwebdir/ctangle.w" -#line 82 "cwebdir/ctang-w2c.ch" int main( int ac, char**av) -#line 95 "cwebdir/ctangle.w" { argc= ac;argv= av; program= ctangle; -/*18:*/ -#line 167 "cwebdir/ctangle.w" +/*21:*/ +#line 139 "cwebdir/ctangle.w" text_info->tok_start= tok_ptr= tok_mem; text_ptr= text_info+1;text_ptr->tok_start= tok_mem; -/*:18*//*20:*/ -#line 177 "cwebdir/ctangle.w" +/*:21*//*23:*/ +#line 149 "cwebdir/ctangle.w" -#line 143 "cwebdir/ctang-w2c.ch" init_node(name_dir); -#line 179 "cwebdir/ctangle.w" -/*:20*//*24:*/ -#line 230 "cwebdir/ctangle.w" +/*:23*//*27:*/ +#line 203 "cwebdir/ctangle.w" last_unnamed= text_info;text_info->text_link= 0; -/*:24*//*39:*/ -#line 512 "cwebdir/ctangle.w" +/*:27*//*46:*/ +#line 498 "cwebdir/ctangle.w" cur_out_file= end_output_files= output_files+max_files; -/*:39*//*52:*/ -#line 713 "cwebdir/ctangle.w" +/*:46*//*58:*/ +#line 700 "cwebdir/ctangle.w" { int i; -for(i= 0;i<128;i++)sprintf(translit[i],"X%02X",(unsigned)(128+i)); +for(i= 0;i<128;i++)sprintf(translit[i],"X%02X",(unsigned int)(128+i)); } -/*:52*//*57:*/ -#line 792 "cwebdir/ctangle.w" +/*:58*//*63:*/ +#line 779 "cwebdir/ctangle.w" { int c; for(c= 0;c<256;c++)ccode[c]= ignore; @@ -520,88 +539,76 @@ ccode['<']= ccode['(']= section_name; ccode['\'']= ord; } -/*:57*//*71:*/ -#line 1116 "cwebdir/ctangle.w" +/*:63*//*78:*/ +#line 1110 "cwebdir/ctangle.w" section_text[0]= ' '; -/*:71*//*109:*/ -#line 906 "cwebdir/ctang-w2c.ch" +/*:78*//*117:*/ +#line 476 "cwebdir/ctang-w2c.ch" strncpy(cb_banner,banner,max_banner-1); -/*:109*/ -#line 98 "cwebdir/ctangle.w" -; +/*:117*/ +#line 88 "cwebdir/ctangle.w" + common_init(); -#line 90 "cwebdir/ctang-w2c.ch" +#line 53 "cwebdir/ctang-w2c.ch" if(show_banner)cb_show_banner(); -#line 101 "cwebdir/ctangle.w" +#line 91 "cwebdir/ctangle.w" phase_one(); phase_two(); return wrap_up(); } -/*:3*//*21:*/ -#line 183 "cwebdir/ctangle.w" +/*:2*//*24:*/ +#line 155 "cwebdir/ctangle.w" -#line 153 "cwebdir/ctang-w2c.ch" boolean names_match( name_pointer p, const char*first, size_t l, eight_bits t) {(void)t; -#line 189 "cwebdir/ctangle.w" if(length(p)!=l)return 0; return!strncmp(first,p->byte_start,l); } -/*:21*//*22:*/ -#line 198 "cwebdir/ctangle.w" +/*:24*//*25:*/ +#line 171 "cwebdir/ctangle.w" -#line 166 "cwebdir/ctang-w2c.ch" void init_node( name_pointer node) -#line 202 "cwebdir/ctangle.w" { -#line 174 "cwebdir/ctang-w2c.ch" node->equiv= (void*)text_info; -#line 204 "cwebdir/ctangle.w" } -#line 181 "cwebdir/ctang-w2c.ch" void init_p(name_pointer p,eight_bits t){(void)p;(void)t;} -#line 207 "cwebdir/ctangle.w" -/*:22*//*26:*/ -#line 260 "cwebdir/ctangle.w" +/*:25*//*30:*/ +#line 236 "cwebdir/ctangle.w" -#line 190 "cwebdir/ctang-w2c.ch" -static void +void store_two_bytes( sixteen_bits x) -#line 264 "cwebdir/ctangle.w" { -#line 198 "cwebdir/ctang-w2c.ch" +#line 65 "cwebdir/ctang-w2c.ch" if(tok_ptr+2> tok_mem_end)overflow(_("token")); -#line 266 "cwebdir/ctangle.w" +#line 242 "cwebdir/ctangle.w" *tok_ptr++= x>>8; *tok_ptr++= x&0377; } -/*:26*//*30:*/ -#line 336 "cwebdir/ctangle.w" +/*:30*//*35:*/ +#line 316 "cwebdir/ctangle.w" -#line 206 "cwebdir/ctang-w2c.ch" static void push_level( name_pointer p) -#line 340 "cwebdir/ctangle.w" { -#line 214 "cwebdir/ctang-w2c.ch" +#line 71 "cwebdir/ctang-w2c.ch" if(stack_ptr==stack_end)overflow(_("stack")); -#line 342 "cwebdir/ctangle.w" +#line 322 "cwebdir/ctangle.w" *stack_ptr= cur_state; stack_ptr++; if(p!=NULL){ @@ -611,14 +618,12 @@ cur_section= 0; } } -/*:30*//*31:*/ -#line 355 "cwebdir/ctangle.w" +/*:35*//*36:*/ +#line 335 "cwebdir/ctangle.w" -#line 222 "cwebdir/ctang-w2c.ch" static void pop_level( int flag) -#line 359 "cwebdir/ctangle.w" { if(flag&&cur_repl->text_link<section_flag){ cur_repl= cur_repl->text_link+text_info; @@ -629,13 +634,11 @@ stack_ptr--; if(stack_ptr> stack)cur_state= *stack_ptr; } -/*:31*//*33:*/ -#line 391 "cwebdir/ctangle.w" +/*:36*//*39:*/ +#line 374 "cwebdir/ctangle.w" -#line 231 "cwebdir/ctang-w2c.ch" static void get_output(void) -#line 394 "cwebdir/ctangle.w" { sixteen_bits a; restart:if(stack_ptr==stack)return; @@ -654,27 +657,25 @@ a= (a-0200)*0400+*cur_byte++; switch(a/024000){ case 0:cur_val= a;out_char(identifier);break; case 1:if(a==output_defs_flag)output_defs(); -else/*34:*/ -#line 423 "cwebdir/ctangle.w" +else/*40:*/ +#line 406 "cwebdir/ctangle.w" { a-= 024000; -#line 238 "cwebdir/ctang-w2c.ch" if((a+name_dir)->equiv!=(void*)text_info)push_level(a+name_dir); -#line 427 "cwebdir/ctangle.w" else if(a!=0){ -#line 244 "cwebdir/ctang-w2c.ch" +#line 77 "cwebdir/ctang-w2c.ch" fputs(_("\n! Not present: <"),stdout); -#line 429 "cwebdir/ctangle.w" +#line 412 "cwebdir/ctangle.w" print_section_name(a+name_dir);err_print(">"); } goto restart; } -/*:34*/ -#line 412 "cwebdir/ctangle.w" -; +/*:40*/ +#line 395 "cwebdir/ctangle.w" + break; default:cur_val= a-050000;if(cur_val> 0)cur_section= cur_val; out_char(section_number); @@ -682,13 +683,11 @@ out_char(section_number); } } -/*:33*//*37:*/ -#line 481 "cwebdir/ctangle.w" +/*:39*//*44:*/ +#line 467 "cwebdir/ctangle.w" -#line 251 "cwebdir/ctang-w2c.ch" static void flush_buffer(void) -#line 484 "cwebdir/ctangle.w" { C_putc('\n'); if(cur_line%100==0&&show_progress){ @@ -699,51 +698,49 @@ update_terminal; cur_line++; } -/*:37*//*42:*/ -#line 536 "cwebdir/ctangle.w" +/*:44*//*49:*/ +#line 522 "cwebdir/ctangle.w" -#line 271 "cwebdir/ctang-w2c.ch" static void phase_two(void){ -#line 539 "cwebdir/ctangle.w" web_file_open= 0; cur_line= 1; -/*29:*/ -#line 325 "cwebdir/ctangle.w" +/*33:*/ +#line 301 "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; -/*:29*/ -#line 541 "cwebdir/ctangle.w" -; -/*44:*/ -#line 595 "cwebdir/ctangle.w" +/*:33*/ +#line 527 "cwebdir/ctangle.w" + +/*51:*/ +#line 584 "cwebdir/ctangle.w" if(!output_defs_seen) output_defs(); -/*:44*/ -#line 542 "cwebdir/ctangle.w" -; +/*:51*/ +#line 528 "cwebdir/ctangle.w" + if(text_info->text_link==0&&cur_out_file==end_output_files){ -#line 278 "cwebdir/ctang-w2c.ch" +#line 89 "cwebdir/ctang-w2c.ch" fputs(_("\n! No program text was specified."),stdout);mark_harmless; -#line 545 "cwebdir/ctangle.w" +#line 531 "cwebdir/ctangle.w" } else{ if(cur_out_file==end_output_files){ if(show_progress) -#line 284 "cwebdir/ctang-w2c.ch" +#line 95 "cwebdir/ctang-w2c.ch" printf(_("\nWriting the output file (%s):"),C_file_name); -#line 551 "cwebdir/ctangle.w" +#line 537 "cwebdir/ctangle.w" } else{ if(show_progress){ -#line 290 "cwebdir/ctang-w2c.ch" +#line 101 "cwebdir/ctang-w2c.ch" fputs(_("\nWriting the output files:"),stdout); -#line 555 "cwebdir/ctangle.w" +#line 541 "cwebdir/ctangle.w" printf(" (%s)",C_file_name); update_terminal; @@ -752,16 +749,16 @@ if(text_info->text_link==0)goto writeloop; } while(stack_ptr> stack)get_output(); flush_buffer(); -writeloop:/*43:*/ -#line 322 "cwebdir/ctang-w2c.ch" +writeloop:/*50:*/ +#line 130 "cwebdir/ctang-w2c.ch" fclose(C_file);C_file= NULL; -/*98:*/ -#line 786 "cwebdir/ctang-w2c.ch" +/*106:*/ +#line 356 "cwebdir/ctang-w2c.ch" if((C_file= fopen(C_file_name,"r"))!=NULL){ -/*99:*/ -#line 793 "cwebdir/ctang-w2c.ch" +/*107:*/ +#line 363 "cwebdir/ctang-w2c.ch" char x[BUFSIZ],y[BUFSIZ]; int x_size,y_size,comparison= false; @@ -770,8 +767,8 @@ if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); -if(temporary_output)/*100:*/ -#line 808 "cwebdir/ctang-w2c.ch" +if(temporary_output)/*108:*/ +#line 378 "cwebdir/ctang-w2c.ch" do{ x_size= fread(x,1,BUFSIZ,C_file); @@ -780,18 +777,18 @@ comparison= (x_size==y_size); if(comparison)comparison= !memcmp(x,y,x_size); }while(comparison&&!feof(C_file)&&!feof(check_file)); -/*:100*/ -#line 801 "cwebdir/ctang-w2c.ch" +/*:108*/ +#line 371 "cwebdir/ctang-w2c.ch" fclose(C_file);C_file= NULL; fclose(check_file);check_file= NULL; -/*:99*/ -#line 788 "cwebdir/ctang-w2c.ch" +/*:107*/ +#line 358 "cwebdir/ctang-w2c.ch" -/*101:*/ -#line 819 "cwebdir/ctang-w2c.ch" +/*109:*/ +#line 389 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -800,14 +797,14 @@ remove(C_file_name); rename(check_file_name,C_file_name); } -/*:101*/ -#line 789 "cwebdir/ctang-w2c.ch" +/*:109*/ +#line 359 "cwebdir/ctang-w2c.ch" }else rename(check_file_name,C_file_name); -/*:98*/ -#line 324 "cwebdir/ctang-w2c.ch" +/*:106*/ +#line 132 "cwebdir/ctang-w2c.ch" for(an_output_file= end_output_files;an_output_file> cur_out_file;){ an_output_file--; @@ -827,15 +824,15 @@ 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; -/*102:*/ -#line 832 "cwebdir/ctang-w2c.ch" +/*110:*/ +#line 402 "cwebdir/ctang-w2c.ch" if(0==strcmp("/dev/stdout",output_file_name)) -/*104:*/ -#line 859 "cwebdir/ctang-w2c.ch" +/*112:*/ +#line 429 "cwebdir/ctang-w2c.ch" { -/*107:*/ -#line 890 "cwebdir/ctang-w2c.ch" +/*115:*/ +#line 460 "cwebdir/ctang-w2c.ch" char in_buf[BUFSIZ+1]; int in_size,comparison= true; @@ -843,8 +840,8 @@ if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); -/*:107*/ -#line 860 "cwebdir/ctang-w2c.ch" +/*:115*/ +#line 430 "cwebdir/ctang-w2c.ch" do{ in_size= fread(in_buf,1,BUFSIZ,check_file); @@ -852,8 +849,8 @@ in_buf[in_size]= '\0'; fprintf(stdout,"%s",in_buf); }while(!feof(check_file)); fclose(check_file);check_file= NULL; -/*103:*/ -#line 849 "cwebdir/ctang-w2c.ch" +/*111:*/ +#line 419 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -862,20 +859,20 @@ remove(output_file_name); rename(check_file_name,output_file_name); } -/*:103*/ -#line 867 "cwebdir/ctang-w2c.ch" +/*:111*/ +#line 437 "cwebdir/ctang-w2c.ch" } -/*:104*/ -#line 834 "cwebdir/ctang-w2c.ch" +/*:112*/ +#line 404 "cwebdir/ctang-w2c.ch" else if(0==strcmp("/dev/stderr",output_file_name)) -/*105:*/ -#line 872 "cwebdir/ctang-w2c.ch" +/*113:*/ +#line 442 "cwebdir/ctang-w2c.ch" { -/*107:*/ -#line 890 "cwebdir/ctang-w2c.ch" +/*115:*/ +#line 460 "cwebdir/ctang-w2c.ch" char in_buf[BUFSIZ+1]; int in_size,comparison= true; @@ -883,8 +880,8 @@ if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); -/*:107*/ -#line 873 "cwebdir/ctang-w2c.ch" +/*:115*/ +#line 443 "cwebdir/ctang-w2c.ch" do{ in_size= fread(in_buf,1,BUFSIZ,check_file); @@ -892,8 +889,8 @@ in_buf[in_size]= '\0'; fprintf(stderr,"%s",in_buf); }while(!feof(check_file)); fclose(check_file);check_file= NULL; -/*103:*/ -#line 849 "cwebdir/ctang-w2c.ch" +/*111:*/ +#line 419 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -902,21 +899,21 @@ remove(output_file_name); rename(check_file_name,output_file_name); } -/*:103*/ -#line 880 "cwebdir/ctang-w2c.ch" +/*:111*/ +#line 450 "cwebdir/ctang-w2c.ch" } -/*:105*/ -#line 836 "cwebdir/ctang-w2c.ch" +/*:113*/ +#line 406 "cwebdir/ctang-w2c.ch" else if(0==strcmp("/dev/null",output_file_name)) -/*106:*/ -#line 885 "cwebdir/ctang-w2c.ch" +/*114:*/ +#line 455 "cwebdir/ctang-w2c.ch" { int comparison= true; -/*103:*/ -#line 849 "cwebdir/ctang-w2c.ch" +/*111:*/ +#line 419 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -925,18 +922,18 @@ remove(output_file_name); rename(check_file_name,output_file_name); } -/*:103*/ -#line 887 "cwebdir/ctang-w2c.ch" +/*:111*/ +#line 457 "cwebdir/ctang-w2c.ch" } -/*:106*/ -#line 838 "cwebdir/ctang-w2c.ch" +/*:114*/ +#line 408 "cwebdir/ctang-w2c.ch" else{ if((C_file= fopen(output_file_name,"r"))!=NULL){ -/*99:*/ -#line 793 "cwebdir/ctang-w2c.ch" +/*107:*/ +#line 363 "cwebdir/ctang-w2c.ch" char x[BUFSIZ],y[BUFSIZ]; int x_size,y_size,comparison= false; @@ -945,8 +942,8 @@ if((check_file= fopen(check_file_name,"r"))==NULL) fatal(_("! Cannot open output file "),check_file_name); -if(temporary_output)/*100:*/ -#line 808 "cwebdir/ctang-w2c.ch" +if(temporary_output)/*108:*/ +#line 378 "cwebdir/ctang-w2c.ch" do{ x_size= fread(x,1,BUFSIZ,C_file); @@ -955,18 +952,18 @@ comparison= (x_size==y_size); if(comparison)comparison= !memcmp(x,y,x_size); }while(comparison&&!feof(C_file)&&!feof(check_file)); -/*:100*/ -#line 801 "cwebdir/ctang-w2c.ch" +/*:108*/ +#line 371 "cwebdir/ctang-w2c.ch" fclose(C_file);C_file= NULL; fclose(check_file);check_file= NULL; -/*:99*/ -#line 841 "cwebdir/ctang-w2c.ch" +/*:107*/ +#line 411 "cwebdir/ctang-w2c.ch" -/*103:*/ -#line 849 "cwebdir/ctang-w2c.ch" +/*111:*/ +#line 419 "cwebdir/ctang-w2c.ch" if(comparison) remove(check_file_name); @@ -975,39 +972,37 @@ remove(output_file_name); rename(check_file_name,output_file_name); } -/*:103*/ -#line 842 "cwebdir/ctang-w2c.ch" +/*:111*/ +#line 412 "cwebdir/ctang-w2c.ch" }else rename(check_file_name,output_file_name); } -/*:102*/ -#line 343 "cwebdir/ctang-w2c.ch" +/*:110*/ +#line 151 "cwebdir/ctang-w2c.ch" } strcpy(check_file_name,""); -#line 590 "cwebdir/ctangle.w" +#line 579 "cwebdir/ctangle.w" + +/*:50*/ +#line 549 "cwebdir/ctangle.w" -/*:43*/ -#line 563 "cwebdir/ctangle.w" -; -#line 296 "cwebdir/ctang-w2c.ch" if(show_happiness){ if(show_progress)new_line; +#line 107 "cwebdir/ctang-w2c.ch" fputs(_("Done."),stdout); +#line 553 "cwebdir/ctangle.w" } -#line 565 "cwebdir/ctangle.w" } } -/*:42*//*47:*/ -#line 605 "cwebdir/ctangle.w" +/*:49*//*54:*/ +#line 595 "cwebdir/ctangle.w" -#line 358 "cwebdir/ctang-w2c.ch" static void output_defs(void) -#line 608 "cwebdir/ctangle.w" { sixteen_bits a; push_level(NULL); @@ -1030,9 +1025,9 @@ a= (a-0200)*0400+*cur_byte++; if(a<024000){ cur_val= a;out_char(identifier); } -#line 365 "cwebdir/ctang-w2c.ch" +#line 159 "cwebdir/ctang-w2c.ch" else if(a<050000){confusion(_("macro defs have strange char"));} -#line 631 "cwebdir/ctangle.w" +#line 621 "cwebdir/ctangle.w" else{ cur_val= a-050000;cur_section= cur_val;out_char(section_number); } @@ -1045,14 +1040,12 @@ flush_buffer(); pop_level(0); } -/*:47*//*49:*/ -#line 651 "cwebdir/ctangle.w" +/*:54*//*55:*/ +#line 638 "cwebdir/ctangle.w" -#line 379 "cwebdir/ctang-w2c.ch" static void out_char( eight_bits cur_char) -#line 655 "cwebdir/ctangle.w" { char*j,*k; restart: @@ -1060,26 +1053,26 @@ switch(cur_char){ 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; -/*53:*/ -#line 719 "cwebdir/ctangle.w" +/*59:*/ +#line 706 "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){ -if((unsigned char)(*j)<0200)C_putc(*j); +if((eight_bits)(*j)<0200)C_putc(*j); -else C_printf("%s",translit[(unsigned char)(*j)-0200]); +else C_printf("%s",translit[(eight_bits)(*j)-0200]); j++; } out_state= num_or_id;break; -/*:53*/ -#line 662 "cwebdir/ctangle.w" -; -/*54:*/ -#line 732 "cwebdir/ctangle.w" +/*:59*/ +#line 649 "cwebdir/ctangle.w" + +/*60:*/ +#line 719 "cwebdir/ctangle.w" case section_number: if(cur_val> 0)C_printf("/*%d:*/",cur_val); @@ -1105,11 +1098,11 @@ C_printf("%s","\"\n"); } break; -/*:54*/ -#line 663 "cwebdir/ctangle.w" -; -/*50:*/ -#line 404 "cwebdir/ctang-w2c.ch" +/*:60*/ +#line 650 "cwebdir/ctangle.w" + +/*56:*/ +#line 668 "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; @@ -1128,11 +1121,10 @@ case colon_colon:C_putc(':');C_putc(':');out_state= normal;break; case period_ast:C_putc('.');C_putc('*');out_state= normal;break; case minus_gt_ast:C_putc('-');C_putc('>');C_putc('*');out_state= normal; break; -#line 699 "cwebdir/ctangle.w" -/*:50*/ -#line 664 "cwebdir/ctangle.w" -; +/*:56*/ +#line 651 "cwebdir/ctangle.w" + case'=':case'>':C_putc(cur_char);C_putc(' '); out_state= normal;break; case join:out_state= unbreakable;break; @@ -1149,14 +1141,11 @@ default:C_putc(cur_char);out_state= normal;break; } } -#line 404 "cwebdir/ctang-w2c.ch" -/*:49*//*58:*/ -#line 813 "cwebdir/ctangle.w" +/*:55*//*65:*/ +#line 804 "cwebdir/ctangle.w" -#line 428 "cwebdir/ctang-w2c.ch" static eight_bits skip_ahead(void) -#line 816 "cwebdir/ctangle.w" { eight_bits c; while(1){ @@ -1170,13 +1159,11 @@ if(c!=ignore||*(loc-1)=='>')return(c); } } -/*:58*//*60:*/ -#line 848 "cwebdir/ctangle.w" +/*:65*//*67:*/ +#line 839 "cwebdir/ctangle.w" -#line 436 "cwebdir/ctang-w2c.ch" static boolean skip_comment( boolean is_long_comment) -#line 851 "cwebdir/ctangle.w" { char c; while(1){ @@ -1184,9 +1171,9 @@ if(loc> limit){ if(is_long_comment){ if(get_line())return(comment_continues= 1); else{ -#line 443 "cwebdir/ctang-w2c.ch" +#line 165 "cwebdir/ctang-w2c.ch" err_print(_("! Input ended in mid-comment")); -#line 859 "cwebdir/ctangle.w" +#line 850 "cwebdir/ctangle.w" return(comment_continues= 0); } @@ -1199,9 +1186,9 @@ loc++;return(comment_continues= 0); } if(c=='@'){ if(ccode[(eight_bits)*loc]==new_section){ -#line 449 "cwebdir/ctang-w2c.ch" +#line 171 "cwebdir/ctang-w2c.ch" err_print(_("! Section name ended in mid-comment"));loc--; -#line 872 "cwebdir/ctangle.w" +#line 863 "cwebdir/ctangle.w" return(comment_continues= 0); } @@ -1210,13 +1197,11 @@ else loc++; } } -/*:60*//*63:*/ -#line 900 "cwebdir/ctangle.w" +/*:67*//*70:*/ +#line 890 "cwebdir/ctangle.w" -#line 456 "cwebdir/ctang-w2c.ch" static eight_bits get_next(void) -#line 903 "cwebdir/ctangle.w" { static int preprocessing= 0; eight_bits c; @@ -1226,8 +1211,8 @@ if(preprocessing&&*(limit-1)!='\\')preprocessing= 0; if(get_line()==0)return(new_section); else if(print_where&&!no_where){ print_where= 0; -/*77:*/ -#line 1225 "cwebdir/ctangle.w" +/*85:*/ +#line 1222 "cwebdir/ctangle.w" store_two_bytes(0150000); if(changing&&include_depth==change_depth){ @@ -1238,14 +1223,12 @@ id_first= cur_file_name; store_two_bytes((sixteen_bits)cur_line); } id_loc= id_first+strlen(id_first); -#line 598 "cwebdir/ctang-w2c.ch" {int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); app_repl(a_l%0400);} -#line 1237 "cwebdir/ctangle.w" -/*:77*/ -#line 912 "cwebdir/ctangle.w" -; +/*:85*/ +#line 902 "cwebdir/ctangle.w" + } else return('\n'); } @@ -1257,8 +1240,8 @@ if(comment_continues)return('\n'); else continue; } loc++; -if(xisdigit(c)||c=='.')/*66:*/ -#line 978 "cwebdir/ctangle.w" +if(xisdigit(c)||c=='.')/*73:*/ +#line 971 "cwebdir/ctangle.w" { id_first= loc-1; if(*id_first=='.'&&!xisdigit(*loc))goto mistake; @@ -1282,38 +1265,34 @@ id_loc= loc; return(constant); } -/*:66*/ -#line 924 "cwebdir/ctangle.w" +/*:73*/ +#line 914 "cwebdir/ctangle.w" -#line 463 "cwebdir/ctang-w2c.ch" else if(c=='\''||c=='"' ||((c=='L'||c=='u'||c=='U')&&(*loc=='\''||*loc=='"')) ||((c=='u'&&*loc=='8')&&(*(loc+1)=='\''||*(loc+1)=='"'))) -#line 926 "cwebdir/ctangle.w" -/*67:*/ -#line 1006 "cwebdir/ctangle.w" +/*74:*/ +#line 999 "cwebdir/ctangle.w" { char delim= c; id_first= section_text+1; id_loc= section_text;*++id_loc= delim; -#line 494 "cwebdir/ctang-w2c.ch" if(delim=='L'||delim=='u'||delim=='U'){ if(delim=='u'&&*loc=='8'){*++id_loc= *loc++;} delim= *loc++;*++id_loc= delim; } -#line 1013 "cwebdir/ctangle.w" while(1){ if(loc>=limit){ if(*(limit-1)!='\\'){ -#line 503 "cwebdir/ctang-w2c.ch" +#line 177 "cwebdir/ctang-w2c.ch" err_print(_("! String didn't end"));loc= limit;break; -#line 1017 "cwebdir/ctangle.w" +#line 1011 "cwebdir/ctangle.w" } if(get_line()==0){ -#line 509 "cwebdir/ctang-w2c.ch" +#line 183 "cwebdir/ctang-w2c.ch" err_print(_("! Input ended in middle of string"));loc= buffer;break; -#line 1021 "cwebdir/ctangle.w" +#line 1015 "cwebdir/ctangle.w" } else if(++id_loc<=section_text_end)*id_loc= '\n'; @@ -1331,9 +1310,9 @@ c= *loc++; if(++id_loc<=section_text_end)*id_loc= c; } if(id_loc>=section_text_end){ -#line 515 "cwebdir/ctang-w2c.ch" +#line 189 "cwebdir/ctang-w2c.ch" fputs(_("\n! String too long: "),stdout); -#line 1039 "cwebdir/ctangle.w" +#line 1033 "cwebdir/ctangle.w" term_write(section_text+1,25); err_print("..."); @@ -1342,63 +1321,61 @@ id_loc++; return(string); } -/*:67*/ -#line 926 "cwebdir/ctangle.w" +/*:74*/ +#line 918 "cwebdir/ctangle.w" else if(isalpha(c)||isxalpha(c)||ishigh(c)) -/*65:*/ -#line 972 "cwebdir/ctangle.w" +/*72:*/ +#line 964 "cwebdir/ctangle.w" { id_first= --loc; -#line 485 "cwebdir/ctang-w2c.ch" while(isalpha((eight_bits)*++loc)||isdigit((eight_bits)*loc) ||isxalpha((eight_bits)*loc)||ishigh((eight_bits)*loc)); -#line 975 "cwebdir/ctangle.w" id_loc= loc;return(identifier); } -/*:65*/ -#line 928 "cwebdir/ctangle.w" +/*:72*/ +#line 920 "cwebdir/ctangle.w" -else if(c=='@')/*68:*/ -#line 1050 "cwebdir/ctangle.w" +else if(c=='@')/*75:*/ +#line 1044 "cwebdir/ctangle.w" { c= ccode[(eight_bits)*loc++]; switch(c){ case ignore:continue; -#line 521 "cwebdir/ctang-w2c.ch" +#line 195 "cwebdir/ctang-w2c.ch" case translit_code:err_print(_("! Use @l in limbo only"));continue; -#line 1055 "cwebdir/ctangle.w" +#line 1049 "cwebdir/ctangle.w" case control_text:while((c= skip_ahead())=='@'); if(*(loc-1)!='>') -#line 527 "cwebdir/ctang-w2c.ch" +#line 201 "cwebdir/ctang-w2c.ch" err_print(_("! Double @ should be used in control text")); -#line 1060 "cwebdir/ctangle.w" +#line 1054 "cwebdir/ctangle.w" continue; case section_name: cur_section_name_char= *(loc-1); -/*70:*/ -#line 1098 "cwebdir/ctangle.w" +/*77:*/ +#line 1092 "cwebdir/ctangle.w" { char*k; -/*72:*/ -#line 1118 "cwebdir/ctangle.w" +/*79:*/ +#line 1112 "cwebdir/ctangle.w" k= section_text; while(1){ if(loc> limit&&get_line()==0){ -#line 545 "cwebdir/ctang-w2c.ch" +#line 219 "cwebdir/ctang-w2c.ch" err_print(_("! Input ended in section name")); -#line 1123 "cwebdir/ctangle.w" +#line 1117 "cwebdir/ctangle.w" loc= buffer+1;break; } c= *loc; -/*73:*/ -#line 1142 "cwebdir/ctangle.w" +/*80:*/ +#line 1136 "cwebdir/ctangle.w" if(c=='@'){ c= *(loc+1); @@ -1406,23 +1383,23 @@ if(c=='>'){ loc+= 2;break; } if(ccode[(eight_bits)c]==new_section){ -#line 557 "cwebdir/ctang-w2c.ch" +#line 231 "cwebdir/ctang-w2c.ch" err_print(_("! Section name didn't end"));break; -#line 1150 "cwebdir/ctangle.w" +#line 1144 "cwebdir/ctangle.w" } if(ccode[(eight_bits)c]==section_name){ -#line 563 "cwebdir/ctang-w2c.ch" +#line 237 "cwebdir/ctang-w2c.ch" err_print(_("! Nesting of section names not allowed"));break; -#line 1154 "cwebdir/ctangle.w" +#line 1148 "cwebdir/ctangle.w" } *(++k)= '@';loc++; } -/*:73*/ -#line 1127 "cwebdir/ctangle.w" -; +/*:80*/ +#line 1121 "cwebdir/ctangle.w" + loc++;if(k<section_text_end)k++; if(xisspace(c)){ c= ' ';if(*(k-1)==' ')k--; @@ -1430,24 +1407,24 @@ c= ' ';if(*(k-1)==' ')k--; *k= c; } if(k>=section_text_end){ -#line 551 "cwebdir/ctang-w2c.ch" +#line 225 "cwebdir/ctang-w2c.ch" fputs(_("\n! Section name too long: "),stdout); -#line 1136 "cwebdir/ctangle.w" +#line 1130 "cwebdir/ctangle.w" term_write(section_text+1,25); printf("...");mark_harmless; } if(*k==' '&&k> section_text)k--; -/*:72*/ -#line 1100 "cwebdir/ctangle.w" -; +/*:79*/ +#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,1); else cur_section_name= section_lookup(section_text+1,k,0); if(cur_section_name_char=='(') -/*40:*/ -#line 516 "cwebdir/ctangle.w" +/*47:*/ +#line 502 "cwebdir/ctangle.w" { for(an_output_file= cur_out_file; @@ -1457,40 +1434,40 @@ if(an_output_file==end_output_files){ if(cur_out_file> output_files) *--cur_out_file= cur_section_name; else{ -#line 258 "cwebdir/ctang-w2c.ch" +#line 83 "cwebdir/ctang-w2c.ch" overflow(_("output files")); -#line 526 "cwebdir/ctangle.w" +#line 512 "cwebdir/ctangle.w" } } } -/*:40*/ -#line 1106 "cwebdir/ctangle.w" -; +/*:47*/ +#line 1100 "cwebdir/ctangle.w" + return(section_name); } -/*:70*/ -#line 1064 "cwebdir/ctangle.w" -; -case string:/*74:*/ -#line 1164 "cwebdir/ctangle.w" +/*:77*/ +#line 1058 "cwebdir/ctangle.w" + +case string:/*81:*/ +#line 1158 "cwebdir/ctangle.w" { id_first= loc++;*(limit+1)= '@';*(limit+2)= '>'; while(*loc!='@'||*(loc+1)!='>')loc++; -#line 569 "cwebdir/ctang-w2c.ch" +#line 243 "cwebdir/ctang-w2c.ch" if(loc>=limit)err_print(_("! Verbatim string didn't end")); -#line 1168 "cwebdir/ctangle.w" +#line 1162 "cwebdir/ctangle.w" id_loc= loc;loc+= 2; return(string); } -/*:74*/ -#line 1065 "cwebdir/ctangle.w" -; -case ord:/*69:*/ -#line 1077 "cwebdir/ctangle.w" +/*:81*/ +#line 1059 "cwebdir/ctangle.w" + +case ord:/*76:*/ +#line 1071 "cwebdir/ctangle.w" id_first= loc; if(*loc=='\\'){ @@ -1499,32 +1476,32 @@ if(*++loc=='\'')loc++; while(*loc!='\''){ if(*loc=='@'){ if(*(loc+1)!='@') -#line 533 "cwebdir/ctang-w2c.ch" +#line 207 "cwebdir/ctang-w2c.ch" err_print(_("! Double @ should be used in ASCII constant")); -#line 1086 "cwebdir/ctangle.w" +#line 1080 "cwebdir/ctangle.w" else loc++; } loc++; if(loc> limit){ -#line 539 "cwebdir/ctang-w2c.ch" +#line 213 "cwebdir/ctang-w2c.ch" err_print(_("! String didn't end"));loc= limit-1;break; -#line 1092 "cwebdir/ctangle.w" +#line 1086 "cwebdir/ctangle.w" } } loc++; return(ord); -/*:69*/ -#line 1066 "cwebdir/ctangle.w" -; +/*:76*/ +#line 1060 "cwebdir/ctangle.w" + default:return(c); } } -/*:68*/ -#line 929 "cwebdir/ctangle.w" +/*:75*/ +#line 921 "cwebdir/ctangle.w" else if(xisspace(c)){ if(!preprocessing||loc> limit)continue; @@ -1532,16 +1509,14 @@ if(!preprocessing||loc> limit)continue; else return(' '); } else if(c=='#'&&loc==buffer+1)preprocessing= 1; -mistake:/*64:*/ -#line 950 "cwebdir/ctangle.w" +mistake:/*71:*/ +#line 942 "cwebdir/ctangle.w" switch(c){ case'+':if(*loc=='+')compress(plus_plus);break; case'-':if(*loc=='-'){compress(minus_minus);} -#line 472 "cwebdir/ctang-w2c.ch" else{if(*loc=='>'){if(*(loc+1)=='*'){loc++;compress(minus_gt_ast);} else compress(minus_gt);}}break; -#line 956 "cwebdir/ctangle.w" case'.':if(*loc=='*'){compress(period_ast);} else if(*loc=='.'&&*(loc+1)=='.'){ loc++;compress(dot_dot_dot); @@ -1555,30 +1530,26 @@ case'<':if(*loc=='='){compress(lt_eq);} else if(*loc=='<')compress(lt_lt);break; case'&':if(*loc=='&')compress(and_and);break; case'|':if(*loc=='|')compress(or_or);break; -#line 479 "cwebdir/ctang-w2c.ch" case'!':if(*loc=='=')compress(non_eq);break; -#line 970 "cwebdir/ctangle.w" } -/*:64*/ -#line 936 "cwebdir/ctangle.w" +/*:71*/ +#line 928 "cwebdir/ctangle.w" return(c); } } -/*:63*//*76:*/ -#line 1199 "cwebdir/ctangle.w" +/*:70*//*84:*/ +#line 1196 "cwebdir/ctangle.w" -#line 583 "cwebdir/ctang-w2c.ch" static void scan_repl( eight_bits t) -#line 1203 "cwebdir/ctangle.w" { sixteen_bits a; -if(t==section_name){/*77:*/ -#line 1225 "cwebdir/ctangle.w" +if(t==section_name){/*85:*/ +#line 1222 "cwebdir/ctangle.w" store_two_bytes(0150000); if(changing&&include_depth==change_depth){ @@ -1589,46 +1560,44 @@ id_first= cur_file_name; store_two_bytes((sixteen_bits)cur_line); } id_loc= id_first+strlen(id_first); -#line 598 "cwebdir/ctang-w2c.ch" {int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); app_repl(a_l%0400);} -#line 1237 "cwebdir/ctangle.w" -/*:77*/ -#line 1205 "cwebdir/ctangle.w" -;} +/*:85*/ +#line 1202 "cwebdir/ctangle.w" +} while(1)switch(a= get_next()){ -/*78:*/ -#line 1238 "cwebdir/ctangle.w" +/*86:*/ +#line 1235 "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 section_name:if(t!=section_name)goto done; else{ -/*79:*/ -#line 1271 "cwebdir/ctangle.w" +/*87:*/ +#line 1268 "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 617 "cwebdir/ctang-w2c.ch" +#line 273 "cwebdir/ctang-w2c.ch" if(*try_loc=='=')err_print(_("! Missing `@ ' before a named section")); -#line 1277 "cwebdir/ctangle.w" +#line 1274 "cwebdir/ctangle.w" } -/*:79*/ -#line 1244 "cwebdir/ctangle.w" -; +/*:87*/ +#line 1241 "cwebdir/ctangle.w" + a= cur_section_name-name_dir; app_repl((a/0400)+0250); app_repl(a%0400); -/*77:*/ -#line 1225 "cwebdir/ctangle.w" +/*85:*/ +#line 1222 "cwebdir/ctangle.w" store_two_bytes(0150000); if(changing&&include_depth==change_depth){ @@ -1639,26 +1608,24 @@ id_first= cur_file_name; store_two_bytes((sixteen_bits)cur_line); } id_loc= id_first+strlen(id_first); -#line 598 "cwebdir/ctang-w2c.ch" {int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); app_repl(a_l%0400);} -#line 1237 "cwebdir/ctangle.w" -/*:77*/ -#line 1248 "cwebdir/ctangle.w" -;break; +/*:85*/ +#line 1245 "cwebdir/ctangle.w" +break; } -#line 605 "cwebdir/ctang-w2c.ch" +#line 261 "cwebdir/ctang-w2c.ch" case output_defs_code:if(t!=section_name)err_print(_("! Misplaced @h")); -#line 1251 "cwebdir/ctangle.w" +#line 1248 "cwebdir/ctangle.w" else{ output_defs_seen= 1; a= output_defs_flag; app_repl((a/0400)+0200); app_repl(a%0400); -/*77:*/ -#line 1225 "cwebdir/ctangle.w" +/*85:*/ +#line 1222 "cwebdir/ctangle.w" store_two_bytes(0150000); if(changing&&include_depth==change_depth){ @@ -1669,39 +1636,37 @@ id_first= cur_file_name; store_two_bytes((sixteen_bits)cur_line); } id_loc= id_first+strlen(id_first); -#line 598 "cwebdir/ctang-w2c.ch" {int a_l= id_lookup(id_first,id_loc,0)-name_dir;app_repl((a_l/0400)+0200); app_repl(a_l%0400);} -#line 1237 "cwebdir/ctangle.w" -/*:77*/ -#line 1257 "cwebdir/ctangle.w" -; +/*:85*/ +#line 1254 "cwebdir/ctangle.w" + } break; case constant:case string: -/*80:*/ -#line 1282 "cwebdir/ctangle.w" +/*88:*/ +#line 1279 "cwebdir/ctangle.w" app_repl(a); while(id_first<id_loc){ if(*id_first=='@'){ if(*(id_first+1)=='@')id_first++; -#line 623 "cwebdir/ctang-w2c.ch" +#line 279 "cwebdir/ctang-w2c.ch" else err_print(_("! Double @ should be used in string")); -#line 1288 "cwebdir/ctangle.w" +#line 1285 "cwebdir/ctangle.w" } app_repl(*id_first++); } app_repl(a);break; -/*:80*/ -#line 1261 "cwebdir/ctangle.w" -; +/*:88*/ +#line 1258 "cwebdir/ctangle.w" + case ord: -/*81:*/ -#line 1298 "cwebdir/ctangle.w" +/*89:*/ +#line 1295 "cwebdir/ctangle.w" { int c= (eight_bits)*id_first; if(c=='\\'){ @@ -1727,24 +1692,20 @@ case'x': if(xisdigit(*(id_first+1)))c= *(++id_first)-'0'; else if(xisxdigit(*(id_first+1))){ ++id_first; -#line 629 "cwebdir/ctang-w2c.ch" c= toupper((eight_bits)*id_first)-'A'+10; -#line 1324 "cwebdir/ctangle.w" } if(xisdigit(*(id_first+1)))c= 16*c+*(++id_first)-'0'; else if(xisxdigit(*(id_first+1))){ ++id_first; -#line 635 "cwebdir/ctang-w2c.ch" c= 16*c+toupper((eight_bits)*id_first)-'A'+10; -#line 1329 "cwebdir/ctangle.w" } break; case'\\':c= '\\';break; case'\'':c= '\'';break; case'\"':c= '\"';break; -#line 641 "cwebdir/ctang-w2c.ch" +#line 285 "cwebdir/ctang-w2c.ch" default:err_print(_("! Unrecognized escape sequence")); -#line 1335 "cwebdir/ctangle.w" +#line 1332 "cwebdir/ctangle.w" } } @@ -1757,20 +1718,20 @@ app_repl(constant); } break; -/*:81*/ -#line 1263 "cwebdir/ctangle.w" -; +/*:89*/ +#line 1260 "cwebdir/ctangle.w" + case definition:case format_code:case begin_C:if(t!=section_name)goto done; else{ -#line 611 "cwebdir/ctang-w2c.ch" +#line 267 "cwebdir/ctang-w2c.ch" err_print(_("! @d, @f and @c are ignored in C text"));continue; -#line 1267 "cwebdir/ctangle.w" +#line 1264 "cwebdir/ctangle.w" } case new_section:goto done; -/*:78*/ -#line 1210 "cwebdir/ctangle.w" +/*:86*/ +#line 1207 "cwebdir/ctangle.w" case')':app_repl(a); if(t==macro)app_repl(' '); @@ -1778,19 +1739,17 @@ break; default:app_repl(a); } done:next_control= (eight_bits)a; -#line 591 "cwebdir/ctang-w2c.ch" +#line 255 "cwebdir/ctang-w2c.ch" if(text_ptr> text_info_end)overflow(_("text")); -#line 1218 "cwebdir/ctangle.w" +#line 1215 "cwebdir/ctangle.w" cur_text= text_ptr;(++text_ptr)->tok_start= tok_ptr; } -/*:76*//*83:*/ +/*:84*//*92:*/ #line 1360 "cwebdir/ctangle.w" -#line 648 "cwebdir/ctang-w2c.ch" static void scan_section(void) -#line 1363 "cwebdir/ctangle.w" { name_pointer p; text_pointer q; @@ -1801,7 +1760,7 @@ printf("*%d",section_count);update_terminal; } next_control= 0; while(1){ -/*84:*/ +/*93:*/ #line 1399 "cwebdir/ctangle.w" while(next_control<definition) @@ -1810,16 +1769,16 @@ if((next_control= skip_ahead())==section_name){ loc-= 2;next_control= get_next(); } -/*:84*/ +/*:93*/ #line 1374 "cwebdir/ctangle.w" -; + if(next_control==definition){ -/*85:*/ +/*94:*/ #line 1406 "cwebdir/ctangle.w" { while((next_control= get_next())=='\n'); if(next_control!=identifier){ -#line 655 "cwebdir/ctang-w2c.ch" +#line 291 "cwebdir/ctang-w2c.ch" err_print(_("! Definition flushed, must start with identifier")); #line 1410 "cwebdir/ctangle.w" @@ -1835,7 +1794,7 @@ scan_repl(macro); cur_text->text_link= 0; } -/*:85*/ +/*:94*/ #line 1376 "cwebdir/ctangle.w" continue; @@ -1845,43 +1804,41 @@ p= name_dir;break; } if(next_control==section_name){ p= cur_section_name; -/*86:*/ +/*95:*/ #line 1431 "cwebdir/ctangle.w" while((next_control= get_next())=='+'); if(next_control!='='&&next_control!=eq_eq) continue; -/*:86*/ +/*:95*/ #line 1384 "cwebdir/ctangle.w" -; + break; } return; } no_where= print_where= 0; -/*87:*/ +/*96:*/ #line 1436 "cwebdir/ctangle.w" -/*88:*/ +/*97:*/ #line 1441 "cwebdir/ctangle.w" store_two_bytes((sixteen_bits)(0150000+section_count)); -/*:88*/ +/*:97*/ #line 1437 "cwebdir/ctangle.w" -; + scan_repl(section_name); -/*89:*/ +/*98:*/ #line 1445 "cwebdir/ctangle.w" if(p==name_dir||p==0){ (last_unnamed)->text_link= cur_text-text_info;last_unnamed= cur_text; } -#line 661 "cwebdir/ctang-w2c.ch" else if(p->equiv==(void*)text_info)p->equiv= (void*)cur_text; -#line 1450 "cwebdir/ctangle.w" else{ q= (text_pointer)p->equiv; @@ -1892,22 +1849,20 @@ q->text_link= cur_text-text_info; cur_text->text_link= section_flag; -/*:89*/ +/*:98*/ #line 1439 "cwebdir/ctangle.w" -; -/*:87*/ + +/*:96*/ #line 1390 "cwebdir/ctangle.w" -; + } -/*:83*//*91:*/ +/*:92*//*100:*/ #line 1463 "cwebdir/ctangle.w" -#line 674 "cwebdir/ctang-w2c.ch" static void phase_one(void){ -#line 1466 "cwebdir/ctangle.w" phase= 1; section_count= 0; reset_input(); @@ -1917,13 +1872,11 @@ check_complete(); phase= 2; } -/*:91*//*93:*/ +/*:100*//*102:*/ #line 1481 "cwebdir/ctangle.w" -#line 688 "cwebdir/ctang-w2c.ch" static void skip_limbo(void) -#line 1484 "cwebdir/ctangle.w" { char c; while(1){ @@ -1934,51 +1887,49 @@ if(loc++<=limit){ c= *loc++; if(ccode[(eight_bits)c]==new_section)break; switch(ccode[(eight_bits)c]){ -case translit_code:/*94:*/ +case translit_code:/*103:*/ #line 1510 "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 707 "cwebdir/ctang-w2c.ch" +#line 309 "cwebdir/ctang-w2c.ch" err_print(_("! Improper hex number following @l")); #line 1516 "cwebdir/ctangle.w" else{ -unsigned i; +unsigned int i; char*beg; sscanf(loc-3,"%x",&i); while(xisspace(*loc)&&loc<limit)loc++; beg= loc; while(loc<limit&&(xisalpha(*loc)||xisdigit(*loc)||*loc=='_'))loc++; if(loc-beg>=translit_length) -#line 713 "cwebdir/ctang-w2c.ch" +#line 315 "cwebdir/ctang-w2c.ch" err_print(_("! Replacement string in @l too long")); #line 1526 "cwebdir/ctangle.w" else{ -#line 719 "cwebdir/ctang-w2c.ch" strncpy(translit[i-0200],beg,(size_t)(loc-beg)); -#line 1529 "cwebdir/ctangle.w" translit[i-0200][loc-beg]= '\0'; } } -/*:94*/ +/*:103*/ #line 1494 "cwebdir/ctangle.w" -;break; +break; case format_code:case'@':break; case control_text:if(c=='q'||c=='Q'){ while((c= skip_ahead())=='@'); if(*(loc-1)!='>') -#line 695 "cwebdir/ctang-w2c.ch" +#line 297 "cwebdir/ctang-w2c.ch" err_print(_("! Double @ should be used in control text")); #line 1500 "cwebdir/ctangle.w" break; } -#line 701 "cwebdir/ctang-w2c.ch" +#line 303 "cwebdir/ctang-w2c.ch" default:err_print(_("! Double @ should be used in limbo")); #line 1504 "cwebdir/ctangle.w" @@ -1987,24 +1938,23 @@ default:err_print(_("! Double @ should be used in limbo")); } } -/*:93*//*95:*/ +/*:102*//*104:*/ #line 1536 "cwebdir/ctangle.w" -#line 726 "cwebdir/ctang-w2c.ch" void print_stats(void){ -#line 740 "cwebdir/ctang-w2c.ch" +#line 328 "cwebdir/ctang-w2c.ch" puts(_("\nMemory usage statistics:")); printf(_("%ld names (out of %ld)\n"), -(long)(name_ptr-name_dir),(long)max_names); +(ptrdiff_t)(name_ptr-name_dir),(long)max_names); printf(_("%ld replacement texts (out of %ld)\n"), -(long)(text_ptr-text_info),(long)max_texts); +(ptrdiff_t)(text_ptr-text_info),(long)max_texts); printf(_("%ld bytes (out of %ld)\n"), -(long)(byte_ptr-byte_mem),(long)max_bytes); +(ptrdiff_t)(byte_ptr-byte_mem),(long)max_bytes); printf(_("%ld tokens (out of %ld)\n"), #line 1547 "cwebdir/ctangle.w" -(long)(tok_ptr-tok_mem),(long)max_toks); +(ptrdiff_t)(tok_ptr-tok_mem),(long)max_toks); } -#line 753 "cwebdir/ctang-w2c.ch" -/*:95*/ +#line 341 "cwebdir/ctang-w2c.ch" +/*:104*/ |