diff options
author | Andreas Scherer <andreas_tex@freenet.de> | 2021-02-22 14:22:20 +0000 |
---|---|---|
committer | Andreas Scherer <andreas_tex@freenet.de> | 2021-02-22 14:22:20 +0000 |
commit | d9e54ef03db8d244f5386fc89efffccb3d483a5e (patch) | |
tree | c0adb02e7b8fd39fc9335d04d8dcd020fb37b570 /Build/source/texk/web2c/cwebdir | |
parent | 074fd0605dea00c6025fe0ac4d6ec8da21a59c28 (diff) |
[CWEB] Code review.
* Decouple CTANGLE and CWEAVE from COMMON by using 'static' variables.
* Reshuffle variable declarations in 'common.h' to match the definitions
in 'common.w'.
* Eliminate some unused stuff in CTWILL.
git-svn-id: svn://tug.org/texlive/trunk@57841 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/cwebdir')
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ChangeLog | 17 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/Makefile | 3 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/comm-w2c.ch | 2 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/comm-w2c.h | 86 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/common.c | 112 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/common.h | 84 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/common.w | 10 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ctang-bs.ch | 12 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ctangle.c | 154 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ctangle.w | 78 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ctwill-mini.ch | 42 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/ctwill-w2c.ch | 63 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/cweav-bs.ch | 42 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/cweav-man.ch | 2 | ||||
-rw-r--r-- | Build/source/texk/web2c/cwebdir/cweave.w | 174 |
15 files changed, 443 insertions, 438 deletions
diff --git a/Build/source/texk/web2c/cwebdir/ChangeLog b/Build/source/texk/web2c/cwebdir/ChangeLog index 62332f87863..31dbee73e62 100644 --- a/Build/source/texk/web2c/cwebdir/ChangeLog +++ b/Build/source/texk/web2c/cwebdir/ChangeLog @@ -1,3 +1,20 @@ +2021-02-22 Andreas Scherer <https://ascherer.github.io> + + * Makefile, + * comm-w2c.ch + * comm-w2c.h + * common.c + * common.h + * common.w + * ctang-bs.ch, + * ctangle.c, + * ctangle.w, + * ctwill-mini.ch, + * ctwill-w2c.ch, + * cweav-bs.ch, + * cweav-man.ch, + * cweave.w: Decouple CTANGLE and CWEAVE from COMMON. + 2021-02-20 Andreas Scherer <https://ascherer.github.io> * Makefile, diff --git a/Build/source/texk/web2c/cwebdir/Makefile b/Build/source/texk/web2c/cwebdir/Makefile index 63dbd3db343..fa9d83c14fc 100644 --- a/Build/source/texk/web2c/cwebdir/Makefile +++ b/Build/source/texk/web2c/cwebdir/Makefile @@ -63,8 +63,10 @@ RM= /bin/rm CP= /bin/cp # uncomment the second line if you use pdftex to bypass .dvi files +# uncomment the third line if you use xetex to bypass .dvi files PDFTEX = dvipdfm #PDFTEX = pdftex +#PDFTEX = xetex ########## You shouldn't have to change anything after this point ####### @@ -105,6 +107,7 @@ ALL = common.w ctangle.w cweave.w prod.w \ case "$(PDFTEX)" in \ dvipdfm ) tex "\let\pdf+ \input $*"; dvipdfm $* ;; \ pdftex ) pdftex $* ;; \ + xetex ) xetex $* ;; \ esac all: ctangle cweave diff --git a/Build/source/texk/web2c/cwebdir/comm-w2c.ch b/Build/source/texk/web2c/cwebdir/comm-w2c.ch index 34856c03e86..9b73bffa108 100644 --- a/Build/source/texk/web2c/cwebdir/comm-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/comm-w2c.ch @@ -99,7 +99,7 @@ cweb program; /* \.{CTANGLE} or \.{CWEAVE} or \.{CTWILL}? */ @z @x -char alt_web_file_name[max_file_name_length]; /* alternate name to try */ +static char alt_web_file_name[max_file_name_length]; /* alternate name to try */ @y @z diff --git a/Build/source/texk/web2c/cwebdir/comm-w2c.h b/Build/source/texk/web2c/cwebdir/comm-w2c.h index 0adfa44977f..2a8e3e861a5 100644 --- a/Build/source/texk/web2c/cwebdir/comm-w2c.h +++ b/Build/source/texk/web2c/cwebdir/comm-w2c.h @@ -108,6 +108,44 @@ extern char *buffer_end; /* end of |buffer| */ extern char *loc; /* points to the next character to be read from the buffer */ extern char *limit; /* points to the last character in the buffer */ +@ Code related to file handling: +@f line x /* make |line| an unreserved word */ +@d max_include_depth 10 /* maximum number of source files open + simultaneously, not counting the change file */ +@d max_file_name_length 1024 +@d cur_file file[include_depth] /* current file */ +@d cur_file_name file_name[include_depth] /* current file name */ +@d cur_line line[include_depth] /* number of current line in current file */ +@d web_file file[0] /* main source file */ +@d web_file_name file_name[0] /* main source file name */ + +@<Common code...@>= +extern int include_depth; /* current level of nesting */ +extern FILE *file[]; /* stack of non-change files */ +extern FILE *change_file; /* change file */ +extern char file_name[][max_file_name_length]; + /* stack of non-change file names */ +extern char change_file_name[]; /* name of change file */ +extern char check_file_name[]; /* name of |check_file| */ +extern int line[]; /* number of current line in the stacked files */ +extern int change_line; /* number of current line in change file */ +extern int change_depth; /* where \.{@@y} originated during a change */ +extern boolean input_has_ended; /* if there is no more input */ +extern boolean changing; /* if the current line is from |change_file| */ +extern boolean web_file_open; /* if the web file is being read */ + +@ @<Predecl...@>= +extern boolean get_line(void); /* inputs the next line */ +extern void check_complete(void); /* checks that all changes were picked up */ +extern void reset_input(void); /* initialize to read the web file and change file */ + +@ Code related to section numbers: +@<Common code...@>= +extern sixteen_bits section_count; /* the current section number */ +extern boolean changed_section[]; /* is the section changed? */ +extern boolean change_pending; /* is a decision about change still unclear? */ +extern boolean print_where; /* tells \.{CTANGLE} to print line and file info */ + @ Code related to identifier and section name storage: @d length(c) (size_t)((c+1)->byte_start-(c)->byte_start) /* the length of a name */ @d print_id(c) term_write((c)->byte_start,length((c))) /* print identifier */ @@ -169,48 +207,6 @@ extern void err_print(const char *); /* print error message and context */ extern void fatal(const char *,const char *); /* issue error message and die */ extern void overflow(const char *); /* succumb because a table has overflowed */ -@ Code related to file handling: -@f line x /* make |line| an unreserved word */ -@d max_include_depth 10 /* maximum number of source files open - simultaneously, not counting the change file */ -@d max_file_name_length 1024 -@d cur_file file[include_depth] /* current file */ -@d cur_file_name file_name[include_depth] /* current file name */ -@d cur_line line[include_depth] /* number of current line in current file */ -@d web_file file[0] /* main source file */ -@d web_file_name file_name[0] /* main source file name */ - -@<Common code...@>= -extern int include_depth; /* current level of nesting */ -extern FILE *file[]; /* stack of non-change files */ -extern FILE *change_file; /* change file */ -extern char C_file_name[]; /* name of |C_file| */ -extern char tex_file_name[]; /* name of |tex_file| */ -extern char idx_file_name[]; /* name of |idx_file| */ -extern char scn_file_name[]; /* name of |scn_file| */ -extern char file_name[][max_file_name_length]; - /* stack of non-change file names */ -extern char change_file_name[]; /* name of change file */ -extern char check_file_name[]; /* name of |check_file| */ -extern int line[]; /* number of current line in the stacked files */ -extern int change_line; /* number of current line in change file */ -extern int change_depth; /* where \.{@@y} originated during a change */ -extern boolean input_has_ended; /* if there is no more input */ -extern boolean changing; /* if the current line is from |change_file| */ -extern boolean web_file_open; /* if the web file is being read */ - -@ @<Predecl...@>= -extern boolean get_line(void); /* inputs the next line */ -extern void check_complete(void); /* checks that all changes were picked up */ -extern void reset_input(void); /* initialize to read the web file and change file */ - -@ Code related to section numbers: -@<Common code...@>= -extern sixteen_bits section_count; /* the current section number */ -extern boolean changed_section[]; /* is the section changed? */ -extern boolean change_pending; /* is a decision about change still unclear? */ -extern boolean print_where; /* tells \.{CTANGLE} to print line and file info */ - @ Code related to command line arguments: @d show_banner flags['b'] /* should the banner line be printed? */ @d show_progress flags['p'] /* should progress reports be printed? */ @@ -222,10 +218,14 @@ extern boolean print_where; /* tells \.{CTANGLE} to print line and file info */ @<Common code...@>= extern int argc; /* copy of |ac| parameter to |main| */ extern char **argv; /* copy of |av| parameter to |main| */ +extern char C_file_name[]; /* name of |C_file| */ +extern char tex_file_name[]; /* name of |tex_file| */ +extern char idx_file_name[]; /* name of |idx_file| */ +extern char scn_file_name[]; /* name of |scn_file| */ extern boolean flags[]; /* an option for each 7-bit code */ extern const char *use_language; /* prefix to \.{cwebmac.tex} in \TEX/ output */ -@ Code relating to output: +@ Code related to output: @d update_terminal fflush(stdout) /* empty the terminal output buffer */ @d new_line putchar('\n') @d putxchar putchar @d term_write(a,b) fflush(stdout),fwrite(a,sizeof(char),b,stdout) diff --git a/Build/source/texk/web2c/cwebdir/common.c b/Build/source/texk/web2c/cwebdir/common.c index 49b40d04664..7462a25d9d6 100644 --- a/Build/source/texk/web2c/cwebdir/common.c +++ b/Build/source/texk/web2c/cwebdir/common.c @@ -41,6 +41,15 @@ #define xisupper(c) (isupper((eight_bits) c) &&((eight_bits) c<0200) ) #define xisxdigit(c) (isxdigit((eight_bits) c) &&((eight_bits) c<0200) ) \ +#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 cur_line line[include_depth] +#define web_file file[0] +#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 llink link @@ -57,15 +66,6 @@ #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 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'] @@ -149,7 +149,31 @@ extern char*loc; extern char*limit; /*:5*//*6:*/ -#line 102 "common.h" +#line 105 "common.h" + +extern int include_depth; +extern FILE*file[]; +extern FILE*change_file; +extern char file_name[][max_file_name_length]; + +extern char change_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; + +/*:6*//*8:*/ +#line 125 "common.h" + +extern sixteen_bits section_count; +extern boolean changed_section[]; +extern boolean change_pending; +extern boolean print_where; + +/*:8*//*9:*/ +#line 139 "common.h" typedef struct name_info{ char*byte_start; @@ -173,44 +197,20 @@ extern name_pointer hash[]; extern hash_pointer hash_end; extern hash_pointer h; -/*:6*//*8:*/ -#line 146 "common.h" +/*:9*//*11:*/ +#line 183 "common.h" extern int history; -/*:8*//*10:*/ -#line 166 "common.h" +/*:11*//*13:*/ +#line 199 "common.h" -extern int include_depth; -extern FILE*file[]; -extern FILE*change_file; +extern int argc; +extern char**argv; extern char C_file_name[]; extern char tex_file_name[]; extern char idx_file_name[]; extern char scn_file_name[]; -extern char file_name[][max_file_name_length]; - -extern char change_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; - -/*:10*//*12:*/ -#line 190 "common.h" - -extern sixteen_bits section_count; -extern boolean changed_section[]; -extern boolean change_pending; -extern boolean print_where; - -/*:12*//*13:*/ -#line 203 "common.h" - -extern int argc; -extern char**argv; extern boolean flags[]; /*:13*//*14:*/ @@ -247,8 +247,8 @@ char*id_loc; char buffer[long_buf_size]; char*buffer_end= buffer+buf_size-2; -char*limit= buffer; char*loc= buffer; +char*limit= buffer; /*:22*//*25:*/ #line 194 "common.w" @@ -259,7 +259,7 @@ FILE*change_file; char file_name[max_include_depth][max_file_name_length]; char change_file_name[max_file_name_length]; -char alt_web_file_name[max_file_name_length]; +static char alt_web_file_name[max_file_name_length]; int line[max_include_depth]; int change_line; int change_depth; @@ -270,8 +270,8 @@ boolean web_file_open= false; /*:25*//*26:*/ #line 220 "common.w" -char change_buffer[buf_size]; -char*change_limit; +static char change_buffer[buf_size]; +static char*change_limit; /*:26*//*37:*/ #line 401 "common.w" @@ -293,8 +293,8 @@ name_pointer name_dir_end= name_dir+max_names-1; /*:43*//*44:*/ #line 609 "common.w" -name_pointer name_ptr; char*byte_ptr; +name_pointer name_ptr; /*:44*//*46:*/ #line 629 "common.w" @@ -332,7 +332,14 @@ FILE*active_file; #line 70 "common.w" /*7:*/ -#line 125 "common.h" +#line 119 "common.h" + +extern boolean get_line(void); +extern void check_complete(void); +extern void reset_input(void); + +/*:7*//*10:*/ +#line 162 "common.h" extern boolean names_match(name_pointer,const char*,size_t,eight_bits); extern name_pointer id_lookup(const char*,const char*,char); @@ -344,22 +351,15 @@ extern void print_prefix_name(name_pointer); extern void print_section_name(name_pointer); extern void sprint_section_name(char*,name_pointer); -/*:7*//*9:*/ -#line 149 "common.h" +/*:10*//*12:*/ +#line 186 "common.h" extern int wrap_up(void); extern void err_print(const char*); extern void fatal(const char*,const char*); extern void overflow(const char*); -/*:9*//*11:*/ -#line 184 "common.h" - -extern boolean get_line(void); -extern void check_complete(void); -extern void reset_input(void); - -/*:11*//*15:*/ +/*:12*//*15:*/ #line 223 "common.h" extern void common_init(void); diff --git a/Build/source/texk/web2c/cwebdir/common.h b/Build/source/texk/web2c/cwebdir/common.h index 40896f808aa..d79059621b7 100644 --- a/Build/source/texk/web2c/cwebdir/common.h +++ b/Build/source/texk/web2c/cwebdir/common.h @@ -91,6 +91,43 @@ extern char *buffer_end; /* end of |buffer| */ extern char *loc; /* points to the next character to be read from the buffer */ extern char *limit; /* points to the last character in the buffer */ +@ Code related to file handling: +@f line x /* make |line| an unreserved word */ +@d max_include_depth 10 /* maximum number of source files open + simultaneously, not counting the change file */ +@d max_file_name_length 1024 +@d cur_file file[include_depth] /* current file */ +@d cur_file_name file_name[include_depth] /* current file name */ +@d cur_line line[include_depth] /* number of current line in current file */ +@d web_file file[0] /* main source file */ +@d web_file_name file_name[0] /* main source file name */ + +@<Common code...@>= +extern int include_depth; /* current level of nesting */ +extern FILE *file[]; /* stack of non-change files */ +extern FILE *change_file; /* change file */ +extern char file_name[][max_file_name_length]; + /* stack of non-change file names */ +extern char change_file_name[]; /* name of change file */ +extern int line[]; /* number of current line in the stacked files */ +extern int change_line; /* number of current line in change file */ +extern int change_depth; /* where \.{@@y} originated during a change */ +extern boolean input_has_ended; /* if there is no more input */ +extern boolean changing; /* if the current line is from |change_file| */ +extern boolean web_file_open; /* if the web file is being read */ + +@ @<Predecl...@>= +extern boolean get_line(void); /* inputs the next line */ +extern void check_complete(void); /* checks that all changes were picked up */ +extern void reset_input(void); /* initialize to read the web file and change file */ + +@ Code related to section numbers: +@<Common code...@>= +extern sixteen_bits section_count; /* the current section number */ +extern boolean changed_section[]; /* is the section changed? */ +extern boolean change_pending; /* is a decision about change still unclear? */ +extern boolean print_where; /* tells \.{CTANGLE} to print line and file info */ + @ Code related to identifier and section name storage: @d length(c) (size_t)((c+1)->byte_start-(c)->byte_start) /* the length of a name */ @d print_id(c) term_write((c)->byte_start,length((c))) /* print identifier */ @@ -152,47 +189,6 @@ extern void err_print(const char *); /* print error message and context */ extern void fatal(const char *,const char *); /* issue error message and die */ extern void overflow(const char *); /* succumb because a table has overflowed */ -@ Code related to file handling: -@f line x /* make |line| an unreserved word */ -@d max_include_depth 10 /* maximum number of source files open - simultaneously, not counting the change file */ -@d max_file_name_length 1024 -@d cur_file file[include_depth] /* current file */ -@d cur_file_name file_name[include_depth] /* current file name */ -@d cur_line line[include_depth] /* number of current line in current file */ -@d web_file file[0] /* main source file */ -@d web_file_name file_name[0] /* main source file name */ - -@<Common code...@>= -extern int include_depth; /* current level of nesting */ -extern FILE *file[]; /* stack of non-change files */ -extern FILE *change_file; /* change file */ -extern char C_file_name[]; /* name of |C_file| */ -extern char tex_file_name[]; /* name of |tex_file| */ -extern char idx_file_name[]; /* name of |idx_file| */ -extern char scn_file_name[]; /* name of |scn_file| */ -extern char file_name[][max_file_name_length]; - /* stack of non-change file names */ -extern char change_file_name[]; /* name of change file */ -extern int line[]; /* number of current line in the stacked files */ -extern int change_line; /* number of current line in change file */ -extern int change_depth; /* where \.{@@y} originated during a change */ -extern boolean input_has_ended; /* if there is no more input */ -extern boolean changing; /* if the current line is from |change_file| */ -extern boolean web_file_open; /* if the web file is being read */ - -@ @<Predecl...@>= -extern boolean get_line(void); /* inputs the next line */ -extern void check_complete(void); /* checks that all changes were picked up */ -extern void reset_input(void); /* initialize to read the web file and change file */ - -@ Code related to section numbers: -@<Common code...@>= -extern sixteen_bits section_count; /* the current section number */ -extern boolean changed_section[]; /* is the section changed? */ -extern boolean change_pending; /* is a decision about change still unclear? */ -extern boolean print_where; /* tells \.{CTANGLE} to print line and file info */ - @ Code related to command line arguments: @d show_banner flags['b'] /* should the banner line be printed? */ @d show_progress flags['p'] /* should progress reports be printed? */ @@ -203,9 +199,13 @@ extern boolean print_where; /* tells \.{CTANGLE} to print line and file info */ @<Common code...@>= extern int argc; /* copy of |ac| parameter to |main| */ extern char **argv; /* copy of |av| parameter to |main| */ +extern char C_file_name[]; /* name of |C_file| */ +extern char tex_file_name[]; /* name of |tex_file| */ +extern char idx_file_name[]; /* name of |idx_file| */ +extern char scn_file_name[]; /* name of |scn_file| */ extern boolean flags[]; /* an option for each 7-bit code */ -@ Code relating to output: +@ Code related to output: @d update_terminal fflush(stdout) /* empty the terminal output buffer */ @d new_line putchar('\n') @d putxchar putchar @d term_write(a,b) fflush(stdout),fwrite(a,sizeof(char),b,stdout) diff --git a/Build/source/texk/web2c/cwebdir/common.w b/Build/source/texk/web2c/cwebdir/common.w index 377a796126e..85188f4e405 100644 --- a/Build/source/texk/web2c/cwebdir/common.w +++ b/Build/source/texk/web2c/cwebdir/common.w @@ -149,8 +149,8 @@ some of \.{CWEB}'s routines use the fact that it is safe to refer to @<Global var...@>= char buffer[long_buf_size]; /* where each line of input goes */ char *buffer_end=buffer+buf_size-2; /* end of |buffer| */ -char *limit=buffer; /* points to the last character in the buffer */ char *loc=buffer; /* points to the next character to be read from the buffer */ +char *limit=buffer; /* points to the last character in the buffer */ @ In the unlikely event that your standard I/O library does not support |feof|, |getc|, and |ungetc| you may have to change things here. @@ -198,7 +198,7 @@ FILE *change_file; /* change file */ char file_name[max_include_depth][max_file_name_length]; /* stack of non-change file names */ char change_file_name[max_file_name_length]; /* name of change file */ -char alt_web_file_name[max_file_name_length]; /* alternate name to try */ +static char alt_web_file_name[max_file_name_length]; /* alternate name to try */ int line[max_include_depth]; /* number of current line in the stacked files */ int change_line; /* number of current line in change file */ int change_depth; /* where \.{@@y} originated during a change */ @@ -218,8 +218,8 @@ Here's a shorthand expression for inequality between the two lines: strncmp(buffer, change_buffer, (size_t)(limit-buffer))) @<Global var...@>= -char change_buffer[buf_size]; /* next line of |change_file| */ -char *change_limit; /* points to the last character in |change_buffer| */ +static char change_buffer[buf_size]; /* next line of |change_file| */ +static char *change_limit; /* points to the last character in |change_buffer| */ @ Procedure |prime_the_change_buffer| sets |change_buffer| in preparation for the next matching operation. @@ -607,8 +607,8 @@ usually have |name_ptr->byte_start==byte_ptr|, and certainly we want to keep |name_ptr<=name_dir_end| and |byte_ptr<=byte_mem_end|. @<Global var...@>= -name_pointer name_ptr; /* first unused position in |name_dir| */ char *byte_ptr; /* first unused position in |byte_mem| */ +name_pointer name_ptr; /* first unused position in |name_dir| */ @ @<Init...@>= name_dir->byte_start=byte_ptr=byte_mem; /* position zero in both arrays */ diff --git a/Build/source/texk/web2c/cwebdir/ctang-bs.ch b/Build/source/texk/web2c/cwebdir/ctang-bs.ch index 22310b8e70c..bebfc4435d1 100644 --- a/Build/source/texk/web2c/cwebdir/ctang-bs.ch +++ b/Build/source/texk/web2c/cwebdir/ctang-bs.ch @@ -141,13 +141,13 @@ typedef text *text_pointer; @x Section 17. -eight_bits tok_mem[max_toks]; -eight_bits *tok_mem_end=tok_mem+max_toks-1; -eight_bits *tok_ptr; /* first unused position in |tok_mem| */ +static eight_bits tok_mem[max_toks]; +static eight_bits *tok_mem_end=tok_mem+max_toks-1; +static eight_bits *tok_ptr; /* first unused position in |tok_mem| */ @y -eight_bits huge tok_mem[max_toks]; -eight_bits huge* tok_mem_end; -eight_bits huge* tok_ptr; /* first unused position in |tok_mem| */ +static eight_bits huge tok_mem[max_toks]; +static eight_bits huge* tok_mem_end; +static eight_bits huge* tok_ptr; /* first unused position in |tok_mem| */ @z diff --git a/Build/source/texk/web2c/cwebdir/ctangle.c b/Build/source/texk/web2c/cwebdir/ctangle.c index 200d61a92b7..769dc071f7c 100644 --- a/Build/source/texk/web2c/cwebdir/ctangle.c +++ b/Build/source/texk/web2c/cwebdir/ctangle.c @@ -43,6 +43,15 @@ #define xisupper(c) (isupper((eight_bits) c) &&((eight_bits) c<0200) ) #define xisxdigit(c) (isxdigit((eight_bits) c) &&((eight_bits) c<0200) ) \ +#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 cur_line line[include_depth] +#define web_file file[0] +#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 llink link @@ -59,15 +68,6 @@ #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 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'] @@ -171,7 +171,31 @@ extern char*loc; extern char*limit; /*:6*//*7:*/ -#line 102 "common.h" +#line 105 "common.h" + +extern int include_depth; +extern FILE*file[]; +extern FILE*change_file; +extern char file_name[][max_file_name_length]; + +extern char change_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; + +/*:7*//*9:*/ +#line 125 "common.h" + +extern sixteen_bits section_count; +extern boolean changed_section[]; +extern boolean change_pending; +extern boolean print_where; + +/*:9*//*10:*/ +#line 139 "common.h" typedef struct name_info{ char*byte_start; @@ -195,44 +219,20 @@ extern name_pointer hash[]; extern hash_pointer hash_end; extern hash_pointer h; -/*:7*//*9:*/ -#line 146 "common.h" +/*:10*//*12:*/ +#line 183 "common.h" extern int history; -/*:9*//*11:*/ -#line 166 "common.h" +/*:12*//*14:*/ +#line 199 "common.h" -extern int include_depth; -extern FILE*file[]; -extern FILE*change_file; +extern int argc; +extern char**argv; extern char C_file_name[]; extern char tex_file_name[]; extern char idx_file_name[]; extern char scn_file_name[]; -extern char file_name[][max_file_name_length]; - -extern char change_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; - -/*:11*//*13:*/ -#line 190 "common.h" - -extern sixteen_bits section_count; -extern boolean changed_section[]; -extern boolean change_pending; -extern boolean print_where; - -/*:13*//*14:*/ -#line 203 "common.h" - -extern int argc; -extern char**argv; extern boolean flags[]; /*:14*//*15:*/ @@ -274,83 +274,90 @@ typedef output_state*stack_pointer; /*20:*/ #line 129 "ctangle.w" -text text_info[max_texts]; -text_pointer text_info_end= text_info+max_texts-1; -text_pointer text_ptr; -eight_bits tok_mem[max_toks]; -eight_bits*tok_mem_end= tok_mem+max_toks-1; -eight_bits*tok_ptr; +static text text_info[max_texts]; +static text_pointer text_info_end= text_info+max_texts-1; +static text_pointer text_ptr; +static eight_bits tok_mem[max_toks]; +static eight_bits*tok_mem_end= tok_mem+max_toks-1; +static eight_bits*tok_ptr; /*:20*//*26:*/ #line 198 "ctangle.w" -text_pointer last_unnamed; +static text_pointer last_unnamed; /*:26*//*32:*/ #line 286 "ctangle.w" -output_state cur_state; +static output_state cur_state; -output_state stack[stack_size+1]; -stack_pointer stack_end= stack+stack_size; -stack_pointer stack_ptr; +static output_state stack[stack_size+1]; +static stack_pointer stack_end= stack+stack_size; +static stack_pointer stack_ptr; /*:32*//*37:*/ #line 362 "ctangle.w" -int cur_val; +static int cur_val; /*:37*//*42:*/ #line 454 "ctangle.w" -eight_bits out_state; -boolean protect; +static eight_bits out_state; +static boolean protect; /*:42*//*45:*/ #line 486 "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+1]; +static name_pointer output_files[max_files]; +static name_pointer*cur_out_file,*end_output_files,*an_output_file; +static char cur_section_name_char; +static char output_file_name[longest_name+1]; /*:45*//*52:*/ #line 586 "ctangle.w" -boolean output_defs_seen= false; +static boolean output_defs_seen= false; /*:52*//*57:*/ #line 695 "ctangle.w" -char translit[128][translit_length]; +static char translit[128][translit_length]; /*:57*//*62:*/ #line 774 "ctangle.w" -eight_bits ccode[256]; +static eight_bits ccode[256]; /*:62*//*66:*/ #line 834 "ctangle.w" -boolean comment_continues= false; +static boolean comment_continues= false; /*:66*//*68:*/ #line 873 "ctangle.w" -name_pointer cur_section_name; -boolean no_where; +static name_pointer cur_section_name; +static boolean no_where; /*:68*//*82:*/ #line 1187 "ctangle.w" -text_pointer cur_text; -eight_bits next_control; +static text_pointer cur_text; +static eight_bits next_control; /*:82*/ #line 71 "ctangle.w" /*8:*/ -#line 125 "common.h" +#line 119 "common.h" + +extern boolean get_line(void); +extern void check_complete(void); +extern void reset_input(void); + +/*:8*//*11:*/ +#line 162 "common.h" extern boolean names_match(name_pointer,const char*,size_t,eight_bits); extern name_pointer id_lookup(const char*,const char*,char); @@ -362,22 +369,15 @@ extern void print_prefix_name(name_pointer); extern void print_section_name(name_pointer); extern void sprint_section_name(char*,name_pointer); -/*:8*//*10:*/ -#line 149 "common.h" +/*:11*//*13:*/ +#line 186 "common.h" extern int wrap_up(void); extern void err_print(const char*); extern void fatal(const char*,const char*); extern void overflow(const char*); -/*:10*//*12:*/ -#line 184 "common.h" - -extern boolean get_line(void); -extern void check_complete(void); -extern void reset_input(void); - -/*:12*//*16:*/ +/*:13*//*16:*/ #line 223 "common.h" extern void common_init(void); diff --git a/Build/source/texk/web2c/cwebdir/ctangle.w b/Build/source/texk/web2c/cwebdir/ctangle.w index 3e717fbda2f..590e90ef1da 100644 --- a/Build/source/texk/web2c/cwebdir/ctangle.w +++ b/Build/source/texk/web2c/cwebdir/ctangle.w @@ -68,7 +68,7 @@ is modified. @h @<Common code for \.{CWEAVE} and \.{CTANGLE}@>@/ @<Typedef declarations@>@/ -@<Global variables@>@/ +@<Private variables@>@/ @<Predeclaration of procedures@>@/ @ \.{CTANGLE} has a fairly straightforward outline. It operates in @@ -126,13 +126,13 @@ typedef struct { } text; typedef text *text_pointer; -@ @<Glob...@>= -text text_info[max_texts]; -text_pointer text_info_end=text_info+max_texts-1; -text_pointer text_ptr; /* first unused position in |text_info| */ -eight_bits tok_mem[max_toks]; -eight_bits *tok_mem_end=tok_mem+max_toks-1; -eight_bits *tok_ptr; /* first unused position in |tok_mem| */ +@ @<Private...@>= +static text text_info[max_texts]; +static text_pointer text_info_end=text_info+max_texts-1; +static text_pointer text_ptr; /* first unused position in |text_info| */ +static eight_bits tok_mem[max_toks]; +static eight_bits *tok_mem_end=tok_mem+max_toks-1; +static eight_bits *tok_ptr; /* first unused position in |tok_mem| */ @ @<Set init...@>= text_info->tok_start=tok_ptr=tok_mem; @@ -195,8 +195,8 @@ The replacement text pointer for the first unnamed section appears in @d section_flag max_texts /* final |text_link| in section replacement texts */ -@<Glob...@>= -text_pointer last_unnamed; /* most recent replacement text of unnamed section */ +@<Private...@>= +static text_pointer last_unnamed; /* most recent replacement text of unnamed section */ @ @<Set init...@>= last_unnamed=text_info; text_info->text_link=0; @@ -283,12 +283,12 @@ typedef output_state *stack_pointer; @d cur_repl cur_state.repl_field /* pointer to current replacement text */ @d cur_section cur_state.section_field /* current section number being expanded */ -@<Global...@>= -output_state cur_state; /* |cur_end|, |cur_byte|, |cur_name|, |cur_repl|, +@<Private...@>= +static output_state cur_state; /* |cur_end|, |cur_byte|, |cur_name|, |cur_repl|, and |cur_section| */ -output_state stack[stack_size+1]; /* info for non-current levels */ -stack_pointer stack_end=stack+stack_size; /* end of |stack| */ -stack_pointer stack_ptr; /* first unused location in the output state stack */ +static output_state stack[stack_size+1]; /* info for non-current levels */ +static stack_pointer stack_end=stack+stack_size; /* end of |stack| */ +static stack_pointer stack_ptr; /* first unused location in the output state stack */ @ To get the output process started, we will perform the following initialization steps. We may assume that |text_info->text_link| is nonzero, @@ -359,8 +359,8 @@ if the next output is an identifier, in which case @d section_number 0201 /* code returned by |get_output| for section numbers */ @d identifier 0202 /* code returned by |get_output| for identifiers */ -@<Global...@>= -int cur_val; /* additional information corresponding to output token */ +@<Private...@>= +static int cur_val; /* additional information corresponding to output token */ @ If |get_output| finds that no more output remains, it returns with |stack_ptr==stack|. @@ -451,9 +451,9 @@ are preceded by a `\.\\'. @d unbreakable 3 /* state associated with \.{@@\&} */ @d verbatim 4 /* state in the middle of a string */ -@<Global...@>= -eight_bits out_state; /* current status of partial output */ -boolean protect; /* should newline characters be quoted? */ +@<Private...@>= +static eight_bits out_state; /* current status of partial output */ +static boolean protect; /* should newline characters be quoted? */ @ Here is a routine that is invoked when we want to output the current line. During the output process, |cur_line| equals the number of the next line @@ -483,11 +483,11 @@ All these special sections are saved on a stack, |output_files|. We write them out after we've done the unnamed section. @d max_files 256 -@<Glob...@>= -name_pointer output_files[max_files]; -name_pointer *cur_out_file, *end_output_files, *an_output_file; -char cur_section_name_char; /* is it |'<'| or |'('| */ -char output_file_name[longest_name+1]; /* name of the file */ +@<Private...@>= +static name_pointer output_files[max_files]; +static name_pointer *cur_out_file, *end_output_files, *an_output_file; +static char cur_section_name_char; /* is it |'<'| or |'('| */ +static char output_file_name[longest_name+1]; /* name of the file */ @ We make |end_output_files| point just beyond the end of |output_files|. The stack pointer @@ -583,8 +583,8 @@ that refer to macros, preceded by the \.{\#define} preprocessor command. if (!output_defs_seen) output_defs(); -@ @<Glob...@>= -boolean output_defs_seen=false; +@ @<Private...@>= +static boolean output_defs_seen=false; @ @<Predecl...@>= static void output_defs(void);@/ @@ -692,8 +692,8 @@ This makes debugging a lot less confusing. @d translit_length 10 -@<Glo...@>= -char translit[128][translit_length]; +@<Private...@>= +static char translit[128][translit_length]; @ @<Set init...@>= { @@ -771,8 +771,8 @@ milestones. @d section_name 0311 /* control code for `\.{@@<}' */ @d new_section 0312 /* control code for `\.{@@\ }' and `\.{@@*}' */ -@<Global...@>= -eight_bits ccode[256]; /* meaning of a char following \.{@@} */ +@<Private...@>= +static eight_bits ccode[256]; /* meaning of a char following \.{@@} */ @ @<Set ini...@>= { int c; /* must be |int| so the |for| loop will end */ @@ -831,8 +831,8 @@ the two types of comments. If |skip_comment| comes to the end of the section, it prints an error message. No comment, long or short, is allowed to contain `\.{@@\ }' or `\.{@@*}'. -@<Global...@>= -boolean comment_continues=false; /* are we scanning a comment? */ +@<Private...@>= +static boolean comment_continues=false; /* are we scanning a comment? */ @ @c static boolean skip_comment(@t\1\1@> /* skips over comments */ @@ -870,9 +870,9 @@ boolean is_long_comment@t\2\2@>) @d constant 03 -@<Global...@>= -name_pointer cur_section_name; /* name of section just scanned */ -boolean no_where; /* suppress |print_where|? */ +@<Private...@>= +static name_pointer cur_section_name; /* name of section just scanned */ +static boolean no_where; /* suppress |print_where|? */ @ As one might expect, |get_next| consists mostly of a big switch that branches to the various special cases that can arise. @@ -1184,9 +1184,9 @@ acted, |cur_text| will point to the replacement text just generated, and @d macro 0 @d app_repl(c) {if (tok_ptr==tok_mem_end) overflow("token"); *tok_ptr++=c;} -@<Global...@>= -text_pointer cur_text; /* replacement text formed by |scan_repl| */ -eight_bits next_control; +@<Private...@>= +static text_pointer cur_text; /* replacement text formed by |scan_repl| */ +static eight_bits next_control; @ @<Predecl...@>= static void scan_repl(eight_bits);@/ diff --git a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch index 5f6788aa9f9..4e3a5585594 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch @@ -109,7 +109,15 @@ Section 9. @-c@> @z -Section 10. +Section 12. + +@x +@ Code related to section numbers: +@y +@ Code related to section numbers: +@z + +Section 13. @x @ Code related to identifier and section name storage: @@ -118,7 +126,7 @@ Section 10. @-c@> @z -Section 12. +Section 15. @x @ Code related to error handling: @@ -127,14 +135,6 @@ Section 12. @-s@> @z -Section 16. - -@x -@ Code related to section numbers: -@y -@ Code related to section numbers: -@z - Section 17. @x @@ -146,9 +146,9 @@ extern const char *use_language; /* prefix to \.{ctwimac.tex} in \TEX/ output */ Section 18. @x -@ Code relating to output: +@ Code related to output: @y -@ Code relating to output: +@ Code related to output: @-a@> @-b@> @-c@> @@ -1079,17 +1079,6 @@ Section 277. @r @ @<Output information about usage of id's defined in other sections@>= @z -Section 283. - -@x -the index section itself---NOT! - -@<Global...@>= -sixteen_bits k_section; /* runs through the sections */ -@y -the index section itself---NOT! -@z - Section 284. @x @@ -1099,13 +1088,6 @@ Section 284. @-c@> @z -@x -name_pointer blink[max_names]; /* links in the buckets */ -@y -name_pointer blink[max_names]; /* links in the buckets */ -sixteen_bits k_section; /* runs through the sections */ -@z - Section 286. @x diff --git a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch index 4008555140e..e87b31170a1 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch @@ -285,16 +285,16 @@ outbursts of new code.) @x turned on during the first phase. -@<Global...@>= -boolean change_exists; /* has any section changed? */ +@<Private...@>= +static boolean change_exists; /* has any section changed? */ @y turned on during the first phase---NOT! @z @x -sixteen_bits xref_switch,section_xref_switch; /* either zero or |def_flag| */ +static sixteen_bits xref_switch,section_xref_switch; /* either zero or |def_flag| */ @y -sixteen_bits xref_switch,section_xref_switch; /* either zero or |def_flag| */ +static sixteen_bits xref_switch,section_xref_switch; /* either zero or |def_flag| */ @ \.{CTWILL} also has special data structures to keep track of current and temporary meanings. These structures were not designed for maximum @@ -312,21 +312,21 @@ typedef struct { char tex_part[max_tex_chars]; /* \TeX\ part of meaning */ } meaning_struct; -@ @<Glob...@>= +@ @<Private...@>= struct perm_meaning { meaning_struct perm; /* current meaning of an identifier */ int stamp; /* last section number in which further output suppressed */ struct perm_meaning *link; /* another meaning to output in this section */ } cur_meaning[max_names]; /* the current ``permanent'' meanings */ -struct perm_meaning *top_usage; /* first meaning to output in this section */ -meaning_struct temp_meaning_stack[max_meanings]; /* the current ``temporary'' meanings */ -meaning_struct *temp_meaning_ptr; /* first available slot in |temp_meaning_stack| */ -meaning_struct *max_temp_meaning_ptr; /* its maximum value so far */ -name_pointer title_code[max_titles]; /* program names seen so far */ -name_pointer *title_code_ptr; /* first available slot in |title_code| */ -char ministring_buf[max_tex_chars]; /* \TeX\ code being generated */ -char *ministring_ptr; /* first available slot in |ministring_buf| */ -boolean ms_mode; /* are we outputting to |ministring_buf|? */ +static struct perm_meaning *top_usage; /* first meaning to output in this section */ +static meaning_struct temp_meaning_stack[max_meanings]; /* the current ``temporary'' meanings */ +static meaning_struct *temp_meaning_ptr; /* first available slot in |temp_meaning_stack| */ +static meaning_struct *max_temp_meaning_ptr; /* its maximum value so far */ +static name_pointer title_code[max_titles]; /* program names seen so far */ +static name_pointer *title_code_ptr; /* first available slot in |title_code| */ +static char ministring_buf[max_tex_chars]; /* \TeX\ code being generated */ +static char *ministring_ptr; /* first available slot in |ministring_buf| */ +static boolean ms_mode; /* are we outputting to |ministring_buf|? */ @ @<Set init...@>= max_temp_meaning_ptr=temp_meaning_stack; @@ -443,8 +443,8 @@ id_lookup("make_pair",NULL,func_template); @y id_lookup("make_pair",NULL,func_template); -@ @<Glob...@>= -sixteen_bits int_loc, ext_loc; /* locations of special reserved words */ +@ @<Private...@>= +static sixteen_bits int_loc, ext_loc; /* locations of special reserved words */ @z @x @@ -885,10 +885,10 @@ the section is changed, we output `\.{\\*}' just after the number. @z @x -scrap scrap_info[max_scraps]; /* memory array for scraps */ +static scrap scrap_info[max_scraps]; /* memory array for scraps */ @y -scrap scrap_info[max_scraps]; /* memory array for scraps */ -scrap null_scrap; /* a scrap with empty translation */ +static scrap scrap_info[max_scraps]; /* memory array for scraps */ +static scrap null_scrap; /* a scrap with empty translation */ @z @x @@ -1412,9 +1412,9 @@ while (!input_has_ended) @<Translate the current section@>@; while (!input_has_ended) @<Translate the current section@>@; } -@ @<Glob...@>= -FILE *aux_file; -char aux_file_name[max_file_name_length]; /* name of \.{.aux} file */ +@ @<Private...@>= +static FILE *aux_file; +static char aux_file_name[max_file_name_length]; /* name of \.{.aux} file */ @ @<Read the \.{.aux} file, if present; then open it for output@>= memcpy(aux_file_name,tex_file_name,strlen(tex_file_name)-4); @@ -1439,14 +1439,14 @@ if ((aux_file=fopen(aux_file_name,"wb"))==NULL) @z @x -boolean group_found=false; /* has a starred section occurred? */ +static boolean group_found=false; /* has a starred section occurred? */ @ @<Translate the current section@>= { section_count++; @y -boolean group_found=false; /* has a starred section occurred? */ -boolean right_start_switch; /* has `\.{@@r}' occurred recently? */ -boolean temp_switch; /* has `\.{@@\%}' occurred recently? */ +static boolean group_found=false; /* has a starred section occurred? */ +static boolean right_start_switch; /* has `\.{@@r}' occurred recently? */ +static boolean temp_switch; /* has `\.{@@\%}' occurred recently? */ @ @d usage_sentinel (struct perm_meaning *)1 @<Translate the current section@>= { @@ -1522,10 +1522,10 @@ flush_buffer(out_ptr,false,false); doing_format=false; } -@ @<Glob...@>= -boolean is_macro; /* it's a macro def, not a format def */ -int def_diff; /* 0 iff the current macro has parameters */ -name_pointer id_being_defined; /* the definee */ +@ @<Private...@>= +static boolean is_macro; /* it's a macro def, not a format def */ +static int def_diff; /* 0 iff the current macro has parameters */ +static name_pointer id_being_defined; /* the definee */ @z @x @@ -1762,6 +1762,9 @@ finish_line(); fclose(active_file); active_file=NULL; @x the index section itself. + +@<Private...@>= +static sixteen_bits k_section; /* runs through the sections */ @y the index section itself---NOT! @z diff --git a/Build/source/texk/web2c/cwebdir/cweav-bs.ch b/Build/source/texk/web2c/cwebdir/cweav-bs.ch index 723208d6c7f..f7c1af6df6e 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-bs.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-bs.ch @@ -103,11 +103,11 @@ typedef xref_info huge* xref_pointer; @x Section 23. -xref_info xmem[max_refs]; /* contains cross-reference information */ -xref_pointer xmem_end = xmem+max_refs-1; +static xref_info xmem[max_refs]; /* contains cross-reference information */ +static xref_pointer xmem_end = xmem+max_refs-1; @y -xref_info huge xmem[max_refs]; /* contains cross-reference information */ -xref_pointer xmem_end; +static xref_info huge xmem[max_refs]; /* contains cross-reference information */ +static xref_pointer xmem_end; @z @@ -129,21 +129,21 @@ xmem->num=0; /* sentinel value */ @x Section 30. (to please Borland's C++, version 4.02) -token tok_mem[max_toks]; /* tokens */ -token_pointer tok_mem_end = tok_mem+max_toks-1; /* end of |tok_mem| */ -token_pointer tok_ptr; /* first unused position in |tok_mem| */ -token_pointer max_tok_ptr; /* largest value of |tok_ptr| */ -token_pointer tok_start[max_texts]; /* directory into |tok_mem| */ -text_pointer tok_start_end = tok_start+max_texts-1; /* end of |tok_start| */ -text_pointer text_ptr; /* first unused position in |tok_start| */ -@y -token tok_mem[max_toks]; /* tokens */ -token_pointer tok_mem_end; /* end of |tok_mem| */ -token_pointer tok_ptr; /* first unused position in |tok_mem| */ -token_pointer max_tok_ptr; /* largest value of |tok_ptr| */ -token_pointer tok_start[max_texts]; /* directory into |tok_mem| */ -text_pointer tok_start_end; /* end of |tok_start| */ -text_pointer text_ptr; /* first unused position in |tok_start| */ +static token tok_mem[max_toks]; /* tokens */ +static token_pointer tok_mem_end = tok_mem+max_toks-1; /* end of |tok_mem| */ +static token_pointer tok_ptr; /* first unused position in |tok_mem| */ +static token_pointer max_tok_ptr; /* largest value of |tok_ptr| */ +static token_pointer tok_start[max_texts]; /* directory into |tok_mem| */ +static text_pointer tok_start_end = tok_start+max_texts-1; /* end of |tok_start| */ +static text_pointer text_ptr; /* first unused position in |tok_start| */ +@y +static token tok_mem[max_toks]; /* tokens */ +static token_pointer tok_mem_end; /* end of |tok_mem| */ +static token_pointer tok_ptr; /* first unused position in |tok_mem| */ +static token_pointer max_tok_ptr; /* largest value of |tok_ptr| */ +static token_pointer tok_start[max_texts]; /* directory into |tok_mem| */ +static text_pointer tok_start_end; /* end of |tok_start| */ +static text_pointer text_ptr; /* first unused position in |tok_start| */ @z @x Section 31. (goes with the previous change) @@ -212,9 +212,9 @@ max_tok_ptr=tok_mem+1; max_text_ptr=tok_start+1; @x Section 246. -char *cur_byte; /* index into |byte_mem| */ +static char *cur_byte; /* index into |byte_mem| */ @y -char huge* cur_byte; /* index into |byte_mem| */ +static char huge* cur_byte; /* index into |byte_mem| */ @z diff --git a/Build/source/texk/web2c/cwebdir/cweav-man.ch b/Build/source/texk/web2c/cwebdir/cweav-man.ch index 83b14c9007e..b72360944a2 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-man.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-man.ch @@ -16,7 +16,7 @@ under the terms of a permission notice identical to this one. } @y \def\botofcontents{\vfill\titlefalse} -\def\contentspagenumber{110} +\def\contentspagenumber{111} \def\title{APPENDIX F: CWEAVE} \let\K=\leftarrow @z diff --git a/Build/source/texk/web2c/cwebdir/cweave.w b/Build/source/texk/web2c/cwebdir/cweave.w index 8be353088c0..1a74e7e9fff 100644 --- a/Build/source/texk/web2c/cwebdir/cweave.w +++ b/Build/source/texk/web2c/cwebdir/cweave.w @@ -73,7 +73,7 @@ is modified. @h @<Common code for \.{CWEAVE} and \.{CTANGLE}@>@/ @<Typedef declarations@>@/ -@<Global variables@>@/ +@<Private variables@>@/ @<Predeclaration of procedures@> @ \.{CWEAVE} has a fairly straightforward outline. It operates in @@ -181,8 +181,8 @@ is the total number of sections that have started. Sections which have been altered by a change file entry have their |changed_section| flag turned on during the first phase. -@<Global...@>= -boolean change_exists; /* has any section changed? */ +@<Private...@>= +static boolean change_exists; /* has any section changed? */ @ The other large memory area in \.{CWEAVE} keeps the cross-reference data. All uses of the name |p| are recorded in a linked list beginning at @@ -213,11 +213,11 @@ typedef struct xref_info { } xref_info; typedef xref_info *xref_pointer; -@ @<Global...@>= -xref_info xmem[max_refs]; /* contains cross-reference information */ -xref_pointer xmem_end = xmem+max_refs-1; -xref_pointer xref_ptr; /* the largest occupied position in |xmem| */ -sixteen_bits xref_switch,section_xref_switch; /* either zero or |def_flag| */ +@ @<Private...@>= +static xref_info xmem[max_refs]; /* contains cross-reference information */ +static xref_pointer xmem_end = xmem+max_refs-1; +static xref_pointer xref_ptr; /* the largest occupied position in |xmem| */ +static sixteen_bits xref_switch,section_xref_switch; /* either zero or |def_flag| */ @ A section that is used for multi-file output (with the \.{@@(} feature) has a special first cross-reference whose |num| field is |file_flag|. @@ -332,15 +332,15 @@ that is unoccupied by replacement text is called |tok_ptr|, and the first unused location of |tok_start| is called |text_ptr|. Thus, we usually have |*text_ptr==tok_ptr|. -@<Global...@>= -token tok_mem[max_toks]; /* tokens */ -token_pointer tok_mem_end = tok_mem+max_toks-1; /* end of |tok_mem| */ -token_pointer tok_ptr; /* first unused position in |tok_mem| */ -token_pointer max_tok_ptr; /* largest value of |tok_ptr| */ -token_pointer tok_start[max_texts]; /* directory into |tok_mem| */ -text_pointer tok_start_end = tok_start+max_texts-1; /* end of |tok_start| */ -text_pointer text_ptr; /* first unused position in |tok_start| */ -text_pointer max_text_ptr; /* largest value of |text_ptr| */ +@<Private...@>= +static token tok_mem[max_toks]; /* tokens */ +static token_pointer tok_mem_end = tok_mem+max_toks-1; /* end of |tok_mem| */ +static token_pointer tok_ptr; /* first unused position in |tok_mem| */ +static token_pointer max_tok_ptr; /* largest value of |tok_ptr| */ +static token_pointer tok_start[max_texts]; /* directory into |tok_mem| */ +static text_pointer tok_start_end = tok_start+max_texts-1; /* end of |tok_start| */ +static text_pointer text_ptr; /* first unused position in |tok_start| */ +static text_pointer max_text_ptr; /* largest value of |text_ptr| */ @ @<Set init...@>= tok_ptr=max_tok_ptr=tok_mem+1;@/ @@ -546,8 +546,8 @@ scanning routines. @ Control codes are converted to \.{CWEAVE}'s internal representation by means of the table |ccode|. -@<Global...@>= -eight_bits ccode[256]; /* meaning of a char following \.{@@} */ +@<Private...@>= +static eight_bits ccode[256]; /* meaning of a char following \.{@@} */ @ @<Set ini...@>= {int c; for (c=0; c<256; c++) ccode[c]=0;} @@ -666,9 +666,9 @@ it sets |xref_switch| to |def_flag| and goes on to the next token. @d string 0201 /* \CEE/ string */ @d identifier 0202 /* \CEE/ identifier or reserved word */ -@<Global...@>= -name_pointer cur_section; /* name of section just scanned */ -char cur_section_char; /* the character just before that name */ +@<Private...@>= +static name_pointer cur_section; /* name of section just scanned */ +static char cur_section_char; /* the character just before that name */ @ As one might expect, |get_next| consists mostly of a big switch that branches to the various special cases that can arise. @@ -721,8 +721,8 @@ for |ord|, since |get_next| changes |ord| into a string. @d left_preproc ord /* begins a preprocessor command */ @d right_preproc 0217 /* ends a preprocessor command */ -@<Glob...@>= -boolean preprocessing=false; /* are we scanning a preprocessor command? */ +@<Private...@>= +static boolean preprocessing=false; /* are we scanning a preprocessor command? */ @ @<Raise prep...@>= { preprocessing=true; @@ -734,8 +734,8 @@ boolean preprocessing=false; /* are we scanning a preprocessor command? */ a file name in lines that start with \.{\#include}. We must treat this file name as a string. -@<Glob...@>= -boolean sharp_include_line=false; /* are we scanning a |#include| line? */ +@<Private...@>= +static boolean sharp_include_line=false; /* are we scanning a |#include| line? */ @ @<Check if next token is |include|@>= while (loc<=buffer_end-7 && xisspace(*loc)) loc++; @@ -1007,8 +1007,8 @@ The global variable |next_control| often contains the most recent output of |get_next|; in interesting cases, this will be the control code that ended a section or part of a section. -@<Global...@>= -eight_bits next_control; /* control code waiting to be acting upon */ +@<Private...@>= +static eight_bits next_control; /* control code waiting to be acting upon */ @ The overall processing strategy in phase one has the following straightforward outline. @@ -1161,9 +1161,9 @@ entirely, even if it contains \pb\ constructions. The variables |lhs| and |rhs| point to the respective identifiers involved in a format definition. -@<Global...@>= -name_pointer lhs, rhs; /* pointers to |byte_start| for format identifiers */ -name_pointer res_wd_end; /* pointer to the first nonreserved identifier */ +@<Private...@>= +static name_pointer lhs, rhs; /* pointers to |byte_start| for format identifiers */ +static name_pointer res_wd_end; /* pointer to the first nonreserved identifier */ @ When we get to the following code we have |next_control>=format_code|. @@ -1245,9 +1245,9 @@ if (next_control<=section_name) { /* |begin_C| or |section_name| */ section name was both defined and used. The variable |cur_xref| will point to cross-references for the current section name of interest. -@<Global...@>= -xref_pointer cur_xref; /* temporary cross-reference pointer */ -boolean an_output; /* did |file_flag| precede |cur_xref|? */ +@<Private...@>= +static xref_pointer cur_xref; /* temporary cross-reference pointer */ +static boolean an_output; /* did |file_flag| precede |cur_xref|? */ @ The following recursive procedure walks through the tree of section names and prints out anomalies. @@ -1289,11 +1289,11 @@ characters long, so we place it into an output buffer. During the output process, |out_line| will hold the current line number of the line about to be output. -@<Global...@>= -char out_buf[line_length+1]; /* assembled characters */ -char *out_buf_end = out_buf+line_length; /* end of |out_buf| */ -char *out_ptr; /* last character in |out_buf| */ -int out_line; /* number of next line to be output */ +@<Private...@>= +static char out_buf[line_length+1]; /* assembled characters */ +static char *out_buf_end = out_buf+line_length; /* end of |out_buf| */ +static char *out_ptr; /* last character in |out_buf| */ +static int out_line; /* number of next line to be output */ @ The |flush_buffer| routine empties the buffer up to a given breakpoint, and moves any remaining characters to the beginning of the next line. @@ -1716,8 +1716,8 @@ same initial letter; these subscripts are assigned from left to right. @d begin_arg 61 /* \.{@@[} */ @d end_arg 62 /* \.{@@]} */ -@<Glo...@>= -char cat_name[256][12]; +@<Private...@>= +static char cat_name[256][12]; @ @<Set in...@>= {int c; for (c=0;c<256;c++) strcpy(cat_name[c],"UNKNOWN");} @@ -2104,15 +2104,15 @@ typedef scrap *scrap_pointer; @ @d trans trans_plus.Trans /* translation texts of scraps */ -@<Global...@>= -scrap scrap_info[max_scraps]; /* memory array for scraps */ -scrap_pointer scrap_info_end=scrap_info+max_scraps-1; /* end of |scrap_info| */ -scrap_pointer scrap_base; /* beginning of the current scrap sequence */ -scrap_pointer scrap_ptr; /* ending of the current scrap sequence */ -scrap_pointer max_scr_ptr; /* largest value assumed by |scrap_ptr| */ -scrap_pointer pp; /* current position for reducing productions */ -scrap_pointer lo_ptr; /* last scrap that has been examined */ -scrap_pointer hi_ptr; /* first scrap that has not been examined */ +@<Private...@>= +static scrap scrap_info[max_scraps]; /* memory array for scraps */ +static scrap_pointer scrap_info_end=scrap_info+max_scraps-1; /* end of |scrap_info| */ +static scrap_pointer scrap_base; /* beginning of the current scrap sequence */ +static scrap_pointer scrap_ptr; /* ending of the current scrap sequence */ +static scrap_pointer max_scr_ptr; /* largest value assumed by |scrap_ptr| */ +static scrap_pointer pp; /* current position for reducing productions */ +static scrap_pointer lo_ptr; /* last scrap that has been examined */ +static scrap_pointer hi_ptr; /* first scrap that has not been examined */ @ @<Set init...@>= scrap_base=scrap_info+1; @@ -2265,8 +2265,8 @@ productions as they were listed earlier. @d app(a) *(tok_ptr++)=(token)(a) @d app1(a) *(tok_ptr++)=(token)(tok_flag+(int)((a)->trans-tok_start)) -@<Global...@>= -int cur_mathness, init_mathness; +@<Private...@>= +static int cur_mathness, init_mathness; @ @<Predecl...@>= static void app_str(const char *);@/ @@ -3114,8 +3114,8 @@ current stack categories will be printed out when |tracing| is set to 2; a sequence of two or more irreducible scraps will be printed out when |tracing| is set to 1. -@<Global...@>= -int tracing; /* can be used to show parsing details */ +@<Private...@>= +static int tracing; /* can be used to show parsing details */ @ @<Print a snapsh...@>= { scrap_pointer k_l; /* pointer into |scrap_info| */ @@ -3604,12 +3604,12 @@ typedef output_state *stack_pointer; @d cur_mode cur_state.mode_field /* current mode of interpretation */ @d init_stack stack_ptr=stack;cur_mode=outer /* initialize the stack */ -@<Global...@>= -output_state cur_state; /* |cur_end|, |cur_tok|, |cur_mode| */ -output_state stack[stack_size]; /* info for non-current levels */ -stack_pointer stack_end=stack+stack_size-1; /* end of |stack| */ -stack_pointer stack_ptr; /* first unused location in the output state stack */ -stack_pointer max_stack_ptr; /* largest value assumed by |stack_ptr| */ +@<Private...@>= +static output_state cur_state; /* |cur_end|, |cur_tok|, |cur_mode| */ +static output_state stack[stack_size]; /* info for non-current levels */ +static stack_pointer stack_end=stack+stack_size-1; /* end of |stack| */ +static stack_pointer stack_ptr; /* first unused location in the output state stack */ +static stack_pointer max_stack_ptr; /* largest value assumed by |stack_ptr| */ @ @<Set init...@>= max_stack_ptr=stack; @@ -3658,8 +3658,8 @@ by a complex routine that might generate additional levels of output). In these cases |cur_name| points to the identifier or section name in question. -@<Global...@>= -name_pointer cur_name; +@<Private...@>= +static name_pointer cur_name; @ @d res_word 0201 /* returned by |get_output| for reserved words */ @d section_code 0200 /* returned by |get_output| for section names */ @@ -4017,14 +4017,14 @@ and `|emit_space_if_needed|' are able to handle the situation: space_checked=true; @.\\Y@> -@<Global...@>= -int save_line; /* former value of |out_line| */ -char *save_place; /* former value of |out_ptr| */ -int sec_depth; /* the integer, if any, following \.{@@*} */ -boolean space_checked; /* have we done |emit_space_if_needed|? */ -boolean format_visible; /* should the next format declaration be output? */ -boolean doing_format=false; /* are we outputting a format declaration? */ -boolean group_found=false; /* has a starred section occurred? */ +@<Private...@>= +static int save_line; /* former value of |out_line| */ +static char *save_place; /* former value of |out_ptr| */ +static int sec_depth; /* the integer, if any, following \.{@@*} */ +static boolean space_checked; /* have we done |emit_space_if_needed|? */ +static boolean format_visible; /* should the next format declaration be output? */ +static boolean doing_format=false; /* are we outputting a format declaration? */ +static boolean group_found=false; /* has a starred section occurred? */ @ @<Translate the current section@>= { section_count++; @@ -4202,8 +4202,8 @@ it starts after we scan the matching `\.)'. |next_control>=begin_C|. We will make the global variable |this_section| point to the current section name, if it has a name. -@<Global...@>= -name_pointer this_section; /* the current section name, or zero */ +@<Private...@>= +static name_pointer this_section; /* the current section name, or zero */ @ @<Translate the \CEE/...@>= this_section=name_dir; @@ -4389,8 +4389,8 @@ check_complete(); /* was all of the change file used? */ @ Just before the index comes a list of all the changed sections, including the index section itself. -@<Global...@>= -sixteen_bits k_section; /* runs through the sections */ +@<Private...@>= +static sixteen_bits k_section; /* runs through the sections */ @ @<Tell about changed sections@>= { /* remember that the index is already marked as changed */ @@ -4415,10 +4415,10 @@ letters, since we want to have `$t<\\{TeX}<\&{to}$'.) The list for character |c| begins at location |bucket[c]| and continues through the |blink| array. -@<Global...@>= -name_pointer bucket[256]; -name_pointer next_name; /* successor of |cur_name| when sorting */ -name_pointer blink[max_names]; /* links in the buckets */ +@<Private...@>= +static name_pointer bucket[256]; +static name_pointer next_name; /* successor of |cur_name| when sorting */ +static name_pointer blink[max_names]; /* links in the buckets */ @ To begin the sorting, we go through all the hash lists and put each entry having a nonempty cross-reference list into the proper bucket. @@ -4458,11 +4458,11 @@ name_pointer Head; @d sort_ptr scrap_ptr /* ditto */ @d max_sorts max_scraps /* ditto */ -@<Global...@>= -eight_bits cur_depth; /* depth of current buckets */ -char *cur_byte; /* index into |byte_mem| */ -sixteen_bits cur_val; /* current cross-reference number */ -sort_pointer max_sort_ptr; /* largest value of |sort_ptr| */ +@<Private...@>= +static eight_bits cur_depth; /* depth of current buckets */ +static char *cur_byte; /* index into |byte_mem| */ +static sixteen_bits cur_val; /* current cross-reference number */ +static sort_pointer max_sort_ptr; /* largest value of |sort_ptr| */ @ @<Set init...@>= max_sort_ptr=scrap_info; @@ -4470,8 +4470,8 @@ max_sort_ptr=scrap_info; @ The desired alphabetic order is specified by the |collate| array; namely, $|collate|[0]<|collate|[1]<\cdots<|collate|[100]$. -@<Global...@>= -eight_bits collate[101+128]; /* collation order */ +@<Private...@>= +static eight_bits collate[101+128]; /* collation order */ @^high-bit character handling@> @ We use the order $\hbox{null}<\.\ <\hbox{other characters}<{}$\.\_${}< @@ -4635,8 +4635,8 @@ out('.'); finish_line(); @ List inversion is best thought of as popping elements off one stack and pushing them onto another. In this case |cur_xref| will be the head of the stack that we push things onto. -@<Global...@>= -xref_pointer next_xref, this_xref; +@<Private...@>= +static xref_pointer next_xref, this_xref; /* pointer variables for rearranging a list */ @ @<Invert the cross-reference list at |cur_name|, making |cur_xref| the head@>= |