texlive[55647] Build/source/texk/web2c/cwebdir: [CTWILL] Add

commits+ascherer at tug.org commits+ascherer at tug.org
Wed Jun 24 14:01:54 CEST 2020


Revision: 55647
          http://tug.org/svn/texlive?view=revision&revision=55647
Author:   ascherer
Date:     2020-06-24 14:01:54 +0200 (Wed, 24 Jun 2020)
Log Message:
-----------
[CTWILL] Add editorial material for 'ctwill.pdf'.

It's a long and winded road to run CTWILL on its own source code in
order to produce a nice and user-friendly rendering in PDF.  :o)

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/cwebdir/ChangeLog
    trunk/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch

Added Paths:
-----------
    trunk/Build/source/texk/web2c/cwebdir/ctwill-mini.ch
    trunk/Build/source/texk/web2c/cwebdir/ctwill.bux
    trunk/Build/source/texk/web2c/cwebdir/prod-mini.ch
    trunk/Build/source/texk/web2c/cwebdir/system.bux

Modified: trunk/Build/source/texk/web2c/cwebdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ChangeLog	2020-06-24 05:54:34 UTC (rev 55646)
+++ trunk/Build/source/texk/web2c/cwebdir/ChangeLog	2020-06-24 12:01:54 UTC (rev 55647)
@@ -1,3 +1,12 @@
+2020-06-24  Andreas Scherer  <https://ascherer.github.io>
+
+	* ctwill-w2c.ch,
+	* ctwill-mini.ch,
+	* ctwill.bux,
+	* system.bux,
+	* prod-mini.ch: Add editorial material to produce 'ctwill.pdf'
+	with CTWILL itself.
+
 2020-06-23  Andreas Scherer  <https://ascherer.github.io>
 
 	* prod-twill.w: Roll back editorial changes.

Added: trunk/Build/source/texk/web2c/cwebdir/ctwill-mini.ch
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctwill-mini.ch	                        (rev 0)
+++ trunk/Build/source/texk/web2c/cwebdir/ctwill-mini.ch	2020-06-24 12:01:54 UTC (rev 55647)
@@ -0,0 +1,772 @@
+ at x
+@** Introduction.
+ at y
+\ifacro \ifx\undefined\pdfpagewidth\else
+  \pdfpagewidth=\pagewd  \advance\pdfpagewidth by 2cm
+  \pdfpageheight=\pageht \advance\pdfpageheight by 5cm
+  \ifpdftex \pdfhorigin=1cm \pdfvorigin=1cm
+  \else \global\hoffset=-1.54cm \global\voffset=-1.54cm \fi
+\fi\fi
+
+@** Introduction.
+ at z
+
+ at x
+@ Here is a sort of user manual for \.{CTWILL}---which is exactly like
+ at y
+@* \.{CTWILL} user manual.
+Here is a sort of user manual for \.{CTWILL}---which is exactly like
+ at z
+
+ at x
+give it the necessary hints in other places via your change file.
+ at y
+give it the necessary hints in other places via your change file.
+ at -f@>
+ at -x@>
+ at z
+
+ at x
+The current meaning of every identifier is initially `\.{\\uninitialized}'.
+ at y
+@ The current meaning of every identifier is initially `\.{\\uninitialized}'.
+ at z
+
+ at x
+must have fewer than 50 characters. If the \TeX\ part starts
+ at y
+must have fewer than 50 characters.
+
+ at d max_tex_chars 50 /* limit on the \TeX\ part of a meaning */
+
+@ If the \TeX\ part starts
+ at z
+
+ at x
+ at d max_tex_chars 50 /* limit on the \TeX\ part of a meaning */
+ at y
+ at z
+
+ at x
+you have to change them also in the file |"common.w"|.
+ at y
+you have to change them also in file |"common.w"|.
+ at z
+
+ at x
+@ The next few sections contain stuff from the file |"common.w"| that must
+ at y
+ at r @ The next few sections contain stuff from the file |"common.w"| that must
+ at z
+
+ at x
+internationalization.
+ at y
+internationalization.
+ at -A@>
+ at -HAVE_GETTEXT@>
+ at -STRING@>
+ at z
+
+ at x
+@ Code related to input routines:
+ at y
+@ Code related to input routines:
+ at -c@>
+ at z
+
+ at x
+@ Code related to identifier and section name storage:
+ at y
+@ Code related to identifier and section name storage:
+ at -c@>
+ at z
+
+ at x
+@ Code related to error handling:
+ at y
+@ Code related to error handling:
+ at -s@>
+ at z
+
+ at x
+@ Code related to section numbers:
+ at y
+ at r @ Code related to section numbers:
+ at z
+
+ at x
+@ Code relating to output:
+ at y
+@ Code relating to output:
+ at -a@>
+ at -b@>
+ at -c@>
+ at z
+
+ at x
+@* Data structures exclusive to {\tt CWEAVE}.
+ at y
+@* Data structures exclusive to {\tt CWEAVE}.
+ at -a@>
+ at z
+
+ at x
+@ The other large memory area in \.{CWEAVE} keeps the cross-reference data.
+ at y
+@ The other large memory area in \.{CWEAVE} keeps the cross-reference data.
+ at -p@>
+ at -x@>
+ at z
+
+ at x
+@ \.{CTWILL} also has special data structures to keep track of current
+ at y
+ at r @ \.{CTWILL} also has special data structures to keep track of current
+ at z
+
+ at x
+@ The |new_meaning| routine changes the current ``permanent meaning''
+ at y
+ at r @ The |new_meaning| routine changes the current ``permanent meaning''
+ at z
+
+ at x
+@ A new cross-reference for an identifier is formed by calling |new_xref|,
+ at y
+@ A new cross-reference for an identifier is formed by calling |new_xref|,
+ at -a@>
+ at -c@>
+ at z
+
+ at x
+id_lookup("do",NULL,do_like);
+ at y
+@ @<Store all...@>=
+id_lookup("do",NULL,do_like);
+ at z
+
+ at x
+id_lookup("undef",NULL,if_like);
+ at y
+@ @<Store all...@>=
+id_lookup("undef",NULL,if_like);
+ at z
+
+ at x
+@ Control codes are converted to \.{CWEAVE}'s internal
+ at y
+ at r @ Control codes are converted to \.{CWEAVE}'s internal
+ at z
+
+ at x
+\yskip\hang |xref_roman|, |xref_wildcard|, |xref_typewriter|, |TeX_string|,
+|meaning|, |suppress|,
+|verbatim|: The values of |id_first| and |id_loc| will have been set to
+the beginning and ending-plus-one locations in the buffer.
+
+\yskip\hang |section_name|: In this case the global variable |cur_section| will
+point to the |byte_start| entry for the section name that has just been scanned.
+The value of |cur_section_char| will be |'('| if the section name was
+preceded by \.{@@(} instead of \.{@@<}.
+ at y
+{\raggedright
+\yskip\hang |xref_roman|, |xref_wildcard|, |xref_typewriter|, |TeX_string|,
+|meaning|, |suppress|,
+and |verbatim|: The values of |id_first| and |id_loc| will have been set to
+the beginning and ending-plus-one locations in the buffer.
+
+\yskip\hang |section_name|: In this case the global variable |cur_section| will
+point to the\hfil\break |byte_start| entry for the section name that has just been scanned.
+The value of |cur_section_char| will be |'('| if the section name was
+preceded by \.{@@(} instead of \.{@@<}.\par}
+ at z
+
+ at x
+@ As one might expect, |get_next| consists mostly of a big switch
+ at y
+@ As one might expect, |get_next| consists mostly of a big switch
+ at -c@>
+ at z
+
+ at x
+@ The following code assigns values to the combinations \.{++},
+ at y
+@ The following code assigns values to the combinations \.{++},
+ at -c@>
+ at z
+
+ at x
+@ @<Put section name...@>=
+ at y
+ at r @ @<Put section name...@>=
+ at z
+
+ at x
+with |next_control!='|'| and ends with |next_control>=format_code|. Thus, it
+ at y
+with |next_control| |{}!='|'| and ends with |next_control>=format_code|.
+Thus, it
+ at z
+
+ at x
+@ Finally, when the \TEX/ and definition parts have been treated, we have
+|next_control>=begin_C|.
+ at y
+@ Finally, when the \TEX/ and definition parts have been treated, we have
+\hfil\break|next_control>=begin_C|.
+ at z
+
+ at x
+@ The |flush_buffer| routine empties the buffer up to a given breakpoint,
+ at y
+@ The |flush_buffer| routine empties the buffer up to a given breakpoint,
+ at -c@>
+ at z
+
+ at x
+@ When we are copying \TEX/ source material, we retain line breaks
+ at y
+ at r @ When we are copying \TEX/ source material, we retain line breaks
+ at z
+
+ at x
+@ When we wish to append one character |c| to the output buffer, we write
+ at y
+@ When we wish to append one character |c| to the output buffer, we write
+ at -c@>
+ at z
+
+ at x
+@ We get to this section only in the unusual case that the entire output line
+ at y
+ at r @ We get to this section only in the unusual case that the entire output line
+ at z
+
+ at x
+@ The |copy_comment| function issues a warning if more braces are opened than
+ at y
+@ The |copy_comment| function issues a warning if more braces are opened than
+ at -t@>
+ at z
+
+ at x
+@ @<Copy special things when |c=='@@'...@>=
+ at y
+ at r @ @<Copy special things when |c=='@@'...@>=
+ at z
+
+ at x
+@ Here is a list of the category codes that scraps can have.
+ at y
+ at r @ Here is a list of the category codes that scraps can have.
+ at z
+
+ at x
+@ The token lists for translated \TEX/ output contain some special control
+ at y
+ at r @ The token lists for translated \TEX/ output contain some special control
+ at -n@>
+ at z
+
+ at x
+\yskip\noindent All of these tokens are removed from the \TEX/ output that
+ at y
+@ All of these tokens are removed from the \TEX/ output that
+ at z
+
+ at x
+|n| is the section number.
+ at y
+|n| is the section number.
+ at -n@>
+ at z
+
+ at x
+@ The raw input is converted into scraps according to the following table,
+ at y
+@* From raw input to scraps.
+ at -c@>
+\advance \hsize by 4cm
+\ifx\undefined\pdfpagewidth \else \advance \pdfpagewidth by 4cm \fi
+The raw input is converted into scraps according to the following table,
+ at z
+
+ at x
+\yskip\halign{\quad#\hfil&\quad#\hfil&\quad\hfil#\hfil\cr
+ at y
+\yskip\halign{\quad#\hfil&\quad\hbox to11cm{#\hfil}&\quad\hfil#\hfil\cr
+ at z
+
+ at x
+\.>&|prerangle|: \.{\\rangle}&yes\cr
+ at y
+\.>&|prerangle|: \.{\\rangle}&yes\cr}
+
+@ Cont.
+
+\yskip\halign{\quad#\hfil&\quad#\hfil&\quad\hfil#\hfil\cr
+%\vskip\halign{\quad#\hfil&\quad\hbox to11cm{#\hfil}&\quad\hfil#\hfil\cr
+ at z
+
+ at x
+\.{continue}&|case_like|: \stars&maybe\cr
+ at y
+\.{continue}&|case_like|: \stars&maybe\cr}
+
+ at r @ Cont.
+
+\yskip\halign{\quad#\hfil&\quad#\hfil&\quad\hfil#\hfil\cr
+%\vskip\halign{\quad#\hfil&\quad\hbox to11cm{#\hfil}&\quad\hfil#\hfil\cr
+ at z
+
+ at x
+\.{long}&|raw_int|: \stars&maybe\cr
+ at y
+\.{long}&|raw_int|: \stars&maybe\cr}
+
+@ Cont.
+
+\yskip\halign{\quad#\hfil&\quad#\hfil&\quad\hfil#\hfil\cr
+%\vskip\halign{\quad#\hfil&\quad\hbox to11cm{#\hfil}&\quad\hfil#\hfil\cr
+ at z
+
+ at x
+\.{try}&|else_like|: \stars&maybe\cr
+ at y
+\.{try}&|else_like|: \stars&maybe\cr}
+
+ at r @ Cont.
+
+\yskip\halign{\quad#\hfil&\quad#\hfil&\quad\hfil#\hfil\cr
+%\vskip\halign{\quad#\hfil&\quad\hbox to11cm{#\hfil}&\quad\hfil#\hfil\cr
+ at z
+
+ at x
+ at i prod-twill.w
+ at y
+ at i prod-twill.w
+ at -any@>
+ at -any_other@>
+ at -g@>
+ at -in@>
+ at -z@>
+ at z
+
+ at x
+@* Implementing the productions.
+ at y
+@* Implementing the productions.  \advance \hsize by -4cm
+\ifx\undefined\pdfpagewidth \else \advance \pdfpagewidth by -4cm \fi
+ at z
+
+ at x
+the category codes |pp->cat,@,@,(pp+1)->cat|$,\,\,\ldots\,$
+ at y
+the category codes |pp->cat|, |(pp+1)->cat|, $\,\ldots\,$
+ at z
+
+ at x
+@ @<Set init...@>=
+ at y
+ at r @ @<Set init...@>=
+ at z
+
+ at x
+@ Token lists in |@!tok_mem| are composed of the following kinds of
+ at y
+@ Token lists in |@!tok_mem| are composed of the following kinds of
+ at -p@>
+ at z
+
+ at x
+#ifdef DEAD_CODE /* not used in |main| */
+ at y
+@ Debugging routine, use at your own risk.
+ at -DEAD_CODE@>
+
+ at c
+#ifdef DEAD_CODE /* not used in |main| */
+ at z
+
+ at x
+@ @<Print token |r|...@>=
+ at y
+ at r @ @<Print token |r|...@>=
+ at z
+
+ at x
+@ The production rules listed above are embedded directly into \.{CWEAVE},
+ at y
+@ The production rules listed above are embedded directly into \.{CWEAVE},
+ at -a@>
+ at -c@>
+ at -d@>
+ at -j@>
+ at -k@>
+ at -n@>
+ at -pp@>
+ at z
+
+ at x
+The code below is an exact translation of the production rules into
+ at y
+ at r @ The code below is an exact translation of the production rules into
+ at -a@>
+ at z
+
+ at x
+@ Let us consider the big switch for productions now, before looking
+ at y
+ at r @ Let us consider the big switch for productions now, before looking
+ at z
+
+ at x
+  switch (pp->cat) {
+    case exp: @<Cases for |exp|@>; @+break;
+    case lpar: @<Cases for |lpar|@>; @+break;
+    case unop: @<Cases for |unop|@>; @+break;
+    case ubinop: @<Cases for |ubinop|@>; @+break;
+    case binop: @<Cases for |binop|@>; @+break;
+    case cast: @<Cases for |cast|@>; @+break;
+    case sizeof_like: @<Cases for |sizeof_like|@>; @+break;
+    case int_like: @<Cases for |int_like|@>; @+break;
+    case public_like: @<Cases for |public_like|@>; @+break;
+    case colcol: @<Cases for |colcol|@>; @+break;
+    case decl_head: @<Cases for |decl_head|@>; @+break;
+    case decl: @<Cases for |decl|@>; @+break;
+    case base: @<Cases for |base|@>; @+break;
+    case struct_like: @<Cases for |struct_like|@>; @+break;
+    case struct_head: @<Cases for |struct_head|@>; @+break;
+    case fn_decl: @<Cases for |fn_decl|@>; @+break;
+    case function: @<Cases for |function|@>; @+break;
+    case lbrace: @<Cases for |lbrace|@>; @+break;
+    case if_like: @<Cases for |if_like|@>; @+break;
+    case else_like: @<Cases for |else_like|@>; @+break;
+    case else_head: @<Cases for |else_head|@>; @+break;
+    case if_clause: @<Cases for |if_clause|@>; @+break;
+    case if_head: @<Cases for |if_head|@>; @+break;
+    case do_like: @<Cases for |do_like|@>; @+break;
+    case case_like: @<Cases for |case_like|@>; @+break;
+    case catch_like: @<Cases for |catch_like|@>; @+break;
+    case tag: @<Cases for |tag|@>; @+break;
+    case stmt: @<Cases for |stmt|@>; @+break;
+    case semi: @<Cases for |semi|@>; @+break;
+    case lproc: @<Cases for |lproc|@>; @+break;
+    case section_scrap: @<Cases for |section_scrap|@>; @+break;
+    case insert: @<Cases for |insert|@>; @+break;
+    case prelangle: @<Cases for |prelangle|@>; @+break;
+    case prerangle: @<Cases for |prerangle|@>; @+break;
+    case langle: @<Cases for |langle|@>; @+break;
+    case template_like: @<Cases for |template_like|@>; @+break;
+    case new_like: @<Cases for |new_like|@>; @+break;
+    case new_exp: @<Cases for |new_exp|@>; @+break;
+    case ftemplate: @<Cases for |ftemplate|@>; @+break;
+    case for_like: @<Cases for |for_like|@>; @+break;
+    case raw_ubin: @<Cases for |raw_ubin|@>; @+break;
+    case const_like: @<Cases for |const_like|@>; @+break;
+    case raw_int: @<Cases for |raw_int|@>; @+break;
+    case operator_like: @<Cases for |operator_like|@>; @+break;
+    case typedef_like: @<Cases for |typedef_like|@>; @+break;
+    case delete_like: @<Cases for |delete_like|@>; @+break;
+    case question: @<Cases for |question|@>; @+break;
+  }
+  pp++; /* if no match was found, we move to the right */
+}
+ at y
+  switch (pp->cat) {
+    @<Cases for |pp->cat|@>@;
+  }
+  pp++; /* if no match was found, we move to the right */
+}
+
+@ @<Cases for |pp->cat|@>=
+    case exp: @<Cases for |exp|@>; @+break;
+    case lpar: @<Cases for |lpar|@>; @+break;
+    case unop: @<Cases for |unop|@>; @+break;
+    case ubinop: @<Cases for |ubinop|@>; @+break;
+    case binop: @<Cases for |binop|@>; @+break;
+    case cast: @<Cases for |cast|@>; @+break;
+    case sizeof_like: @<Cases for |sizeof_like|@>; @+break;
+    case int_like: @<Cases for |int_like|@>; @+break;
+    case public_like: @<Cases for |public_like|@>; @+break;
+    case colcol: @<Cases for |colcol|@>; @+break;
+    case decl_head: @<Cases for |decl_head|@>; @+break;
+    case decl: @<Cases for |decl|@>; @+break;
+    case base: @<Cases for |base|@>; @+break;
+    case struct_like: @<Cases for |struct_like|@>; @+break;
+    case struct_head: @<Cases for |struct_head|@>; @+break;
+    case fn_decl: @<Cases for |fn_decl|@>; @+break;
+    case function: @<Cases for |function|@>; @+break;
+    case lbrace: @<Cases for |lbrace|@>; @+break;
+    case if_like: @<Cases for |if_like|@>; @+break;
+    case else_like: @<Cases for |else_like|@>; @+break;
+    case else_head: @<Cases for |else_head|@>; @+break;
+    case if_clause: @<Cases for |if_clause|@>; @+break;
+    case if_head: @<Cases for |if_head|@>; @+break;
+    case do_like: @<Cases for |do_like|@>; @+break;
+    case case_like: @<Cases for |case_like|@>; @+break;
+    case catch_like: @<Cases for |catch_like|@>; @+break;
+    case tag: @<Cases for |tag|@>; @+break;
+    case stmt: @<Cases for |stmt|@>; @+break;
+    case semi: @<Cases for |semi|@>; @+break;
+    case lproc: @<Cases for |lproc|@>; @+break;
+    case section_scrap: @<Cases for |section_scrap|@>; @+break;
+    case insert: @<Cases for |insert|@>; @+break;
+    case prelangle: @<Cases for |prelangle|@>; @+break;
+    case prerangle: @<Cases for |prerangle|@>; @+break;
+    case langle: @<Cases for |langle|@>; @+break;
+    case template_like: @<Cases for |template_like|@>; @+break;
+    case new_like: @<Cases for |new_like|@>; @+break;
+    case new_exp: @<Cases for |new_exp|@>; @+break;
+    case ftemplate: @<Cases for |ftemplate|@>; @+break;
+    case for_like: @<Cases for |for_like|@>; @+break;
+    case raw_ubin: @<Cases for |raw_ubin|@>; @+break;
+    case const_like: @<Cases for |const_like|@>; @+break;
+    case raw_int: @<Cases for |raw_int|@>; @+break;
+    case operator_like: @<Cases for |operator_like|@>; @+break;
+    case typedef_like: @<Cases for |typedef_like|@>; @+break;
+    case delete_like: @<Cases for |delete_like|@>; @+break;
+    case question: @<Cases for |question|@>; @+break;
+ at z
+
+ at x
+of identifiers in case labels.
+
+If the first identifier is the keyword `\&{operator}', we give up;
+ at y
+of identifiers in case labels.
+If the first identifier is the keyword `\&{operator}', we give up;
+ at z
+
+ at x
+@ The scraps currently being parsed must be inspected for any
+ at y
+ at r @ The scraps currently being parsed must be inspected for any
+ at z
+
+ at x
+|make_reserved|, hence |tok_loc| has been set.
+ at y
+\hfil\break|make_reserved|, hence |tok_loc| has been set.
+ at z
+
+ at x
+@ The trickiest part of \.{CTWILL} is the procedure |make_ministring(l)|,
+ at y
+@ The trickiest part of \.{CTWILL} is the procedure |make_ministring(l)|,
+ at -b@>
+ at z
+
+ at x
+@ @<Cases for |lpar|@>=
+ at y
+ at r @ @<Cases for |lpar|@>=
+ at z
+
+ at x
+@ Outdent after parameter declarations with option \.{-i}.
+ at y
+ at r @ Outdent after parameter declarations with option \.{-i}.
+ at z
+
+ at x
+@ Here's the |squash| procedure, which
+ at y
+ at r @ Here's the |squash| procedure, which
+ at z
+
+ at x
+@ The following macro is used to append a scrap whose tokens have just
+ at y
+@ The following macro is used to append a scrap whose tokens have just
+ at -b@>
+ at -c@>
+ at z
+
+ at x
+@ @d cur_end cur_state.end_field /* current ending location in |tok_mem| */
+ at y
+ at r @ @d cur_end cur_state.end_field /* current ending location in |tok_mem| */
+ at z
+
+ at x
+called when |stack_ptr==1|.
+ at y
+called when |stack_ptr| |==1|.
+ at z
+
+ at x
+  text_pointer save_text_ptr;
+  sixteen_bits save_next_control; /* values to be restored */
+  text_pointer p; /* translation of the \CEE/ text */
+ at y
+  text_pointer save_text_ptr, p; /* translation of the \CEE/ text */
+  sixteen_bits save_next_control; /* values to be restored */
+ at z
+
+ at x
+@ An identifier of length one does not have to be enclosed in braces, and it
+ at y
+ at r @ An identifier of length one does not have to be enclosed in braces, and it
+ at z
+
+ at x
+else @<Look ahead for strongest line break, |goto reswitch|@>
+ at y
+else {@<Look ahead for strongest line break, |goto reswitch|@>}
+ at z
+
+ at x
+@<Look ahead for st...@>= {
+ at y
+@<Look ahead for st...@>=
+ at z
+
+ at x
+}
+ at y
+ at z
+
+ at x
+@ @<Output saved...@>=
+ at y
+ at r @ @<Output saved...@>=
+ at z
+
+ at x
+@ The output file will contain the control sequence \.{\\Y} between non-null
+ at y
+ at r @ The output file will contain the control sequence \.{\\Y} between non-null
+ at z
+
+ at x
+@<Translate the \T...@>= do {
+ at y
+@<Translate the \T...@>= do {@+
+ at z
+
+ at x
+|next_control>=begin_C|. We will make the global variable |this_section|
+ at y
+\hfil\break|next_control>=begin_C|. We will make the global variable |this_section|
+ at z
+
+ at x
+@ @<Translate the \CEE/...@>=
+ at y
+ at r @ @<Translate the \CEE/...@>=
+ at z
+
+ at x
+@ The |footnote| procedure gives cross-reference information about
+ at y
+ at r @ The |footnote| procedure gives cross-reference information about
+ at z
+
+ at x
+@ @<Flag the usage of this identifier, for the mini-index@>=
+ at y
+@<Flag the usage of this identifier, for the mini-index@>=
+ at z
+
+ at x
+@ @<Output information about usage of id's defined in other sections@>=
+ at y
+ at r @ @<Output information about usage of id's defined in other sections@>=
+ at z
+
+ at x
+the index section itself---NOT!
+
+@<Global...@>=
+sixteen_bits k_section; /* runs through the sections */
+ at y
+the index section itself---NOT!
+ at z
+
+ at x
+@ A left-to-right radix sorting method is used, since this makes it easy to
+ at y
+@ A left-to-right radix sorting method is used, since this makes it easy to
+ at -c@>
+ at z
+
+ at x
+name_pointer blink[max_names]; /* links in the buckets */
+ at y
+name_pointer blink[max_names]; /* links in the buckets */
+sixteen_bits k_section; /* runs through the sections */
+ at z
+
+ at x
+@ During the sorting phase we shall use the |cat| and |trans| arrays from
+ at y
+@ During the sorting phase we shall use the |cat| and |trans| arrays from
+ at -j@>
+ at -k@>
+ at z
+
+ at x
+$|collate|[0]<|collate|[1]<\cdots<|collate|[100]$.
+ at y
+|collate[0]| $<$|collate[1]|$<\cdots<$|collate[100]|.
+ at z
+
+ at x
+    else {char *j;
+ at y
+    else {@+char *j;
+ at z
+
+ at x
+@ Because on some systems the difference between two pointers is a |long|
+ at y
+ at r @ Because on some systems the difference between two pointers is a |long|
+ at z
+
+ at x
+care for keeping the original section numbering intact.}
+ at y
+care for keeping the original section numbering intact.
+\smallskip
+\noindent Moreover, this heavily redacted version of \.{\itt ctwill.pdf} had to
+meddle with the section numbering even more, spreading tabular material over
+several sections and splitting long sections into smaller chunks in order to
+fix overful pages---both horizontally and vertically---, to make the overall
+appearance of the \.{\itt CTWILL} documentation most pleasing to the
+reader's~eye.
+
+Please do not try to compare this \.{\itt ctwill.pdf} to the one created by
+\.{\itt CWEAVE} instead of \.{\itt CTWILL}; the section numbering will be
+even more ``off'' from \.{\itt cweave.w}.  Care has been taken to give a
+faithful overall rendering of \.{\itt CTWILL}'s code, though.
+\bigskip
+\noindent Enjoy!}
+ at z
+
+ at x
+@* Function declarations.  Here are declarations---conforming to
+ at y
+@* Function declarations.  Here are declarations---conforming to
+ at -DEAD_CODE@>
+ at z
+
+ at x
+extern const char *use_language; /* prefix to \.{cwebmac.tex} in \TEX/ output */
+ at y
+extern const char *use_language; /* prefix to \.{ctwimac.tex} in \TEX/ output */
+ at z
+
+ at x
+@** Index.
+If you have read and understood the code for Phase III above, you know what
+is in this index and how it got here. All sections in which an identifier is
+used are listed with that identifier, except that reserved words are
+indexed only when they appear in format definitions, and the appearances
+of identifiers in section names are not indexed. Underlined entries
+correspond to where the identifier was declared. Error messages, control
+sequences put into the output, and a few
+other things like ``recursion'' are indexed here too.
+ at y
+ at z


Property changes on: trunk/Build/source/texk/web2c/cwebdir/ctwill-mini.ch
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch	2020-06-24 05:54:34 UTC (rev 55646)
+++ trunk/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch	2020-06-24 12:01:54 UTC (rev 55647)
@@ -1308,6 +1308,12 @@
 @z
 
 @x
+@ @f copy_TeX TeX
+ at y
+ at f copy_TeX TeX
+ at z
+
+ at x
 eight_bits
 copy_TeX()
 @y
@@ -2881,6 +2887,12 @@
 @z
 
 @x
+@ @<Rest of |trans_plus| union@>=
+ at y
+@<Rest of |trans_plus| union@>=
+ at z
+
+ at x
 collate[0]=0;
 strcpy(collate+1," \1\2\3\4\5\6\7\10\11\12\13\14\15\16\17");
 /* 16 characters + 1 = 17 */
@@ -3108,9 +3120,11 @@
 make \.{CWEB} adhere to modern coding standards and introduce new or improved
 features.
 
-Care has been taken to keep the original section numbering intact, so this new
-section should have the same number as the original ``\&{275.~Index},'' and
-additional material follows below.
+\bigskip
+\font\itt=cmitt10
+{\noindent \it Although \.{\itt CTWILL} is based on \.{\itt cweave.w}, new and
+modified material is incorporated all over the place, without taking special
+care for keeping the original section numbering intact.}
 
 @* Set {\tt CWEAVE} flags.
 At least one of these is already used in \.{COMMON}.

Added: trunk/Build/source/texk/web2c/cwebdir/ctwill.bux
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctwill.bux	                        (rev 0)
+++ trunk/Build/source/texk/web2c/cwebdir/ctwill.bux	2020-06-24 12:01:54 UTC (rev 55647)
@@ -0,0 +1,90 @@
+@$program {COMMON.W}2 \&{int}@>
+@$ctangle {COMMON.W}2 \&{int}@>
+@$ctwill {COMMON.W}2 \&{int}@>
+@$cweave {COMMON.W}2 \&{int}@>
+@$phase {COMMON.W}3 \&{int}@>
+@$common_init {COMMON.W}4 \&{void} (\,)@>
+@$id_first {COMMON.W}6 \&{char} ${*}$@>
+@$id_loc {COMMON.W}6 \&{char} ${*}$@>
+@$section_text {COMMON.W}6 \&{char} [\,][\,]@>
+@$section_text_end {COMMON.W}6 \&{char} ${*}$@>
+@$buffer {COMMON.W}7 \&{char} [\,]@>
+@$buffer_end {COMMON.W}7 \&{char} ${*}$@>
+@$limit {COMMON.W}7 \&{char} ${*}$@>
+@$loc {COMMON.W}7 \&{char} ${*}$@>
+
+@$include_depth {COMMON.W}10 \&{int}@>
+@$file {COMMON.W}10 \&{FILE} ${*}$ [\,]@>
+@$change_file {COMMON.W}10 \&{FILE} ${*}$@>
+@$file_name {COMMON.W}10 \&{char} [\,][\,]@>
+@$change_file_name {COMMON.W}10 \&{char} [\,]@>
+@$alt_file_name {COMMON.W}10 \&{char} [\,]@>
+@$line {COMMON.W}10 \&{int} [\,]@>
+@$change_line {COMMON.W}10 \&{int}@>
+@$change_depth {COMMON.W}10 \&{int}@>
+@$input_has_ended {COMMON.W}10 \&{boolean}@>
+@$changing {COMMON.W}10 \&{boolean}@>
+@$web_file_open {COMMON.W}10 \&{boolean}@>
+
+@$reset_input {COMMON.W}18 \&{void} (\,)@>
+
+@$section_count {COMMON.W}20 \&{sixteen\_bits}@>
+@$changed_section {COMMON.W}20 \&{boolean} [\,]@>
+@$change_pending {COMMON.W}20 \&{boolean}@>
+@$print_where {COMMON.W}20 \&{boolean}@>
+@$get_line {COMMON.W}21 \&{boolean} (\,)@>
+
+@$check_complete {COMMON.W}26 \&{void} (\,)@>
+@$byte_mem {COMMON.W}27 \&{char} [\,]@>
+@$byte_mem_end {COMMON.W}27 \&{char} ${*}$@>
+@$name_dir {COMMON.W}27 \&{name\_info} [\,]@>
+@$name_dir_end {COMMON.W}27 \&{name\_pointer}@>
+
+@$byte_ptr {COMMON.W}29 \&{char} ${*}$@>
+@$name_ptr {COMMON.W}29 \&{name\_pointer}@>
+
+@$h {COMMON.W}32 \&{hash\_pointer}@>
+@$hash {COMMON.W}32 \&{name\_pointer} [\,]@>
+@$hash_end {COMMON.W}32 \&{hash\_pointer}@>
+
+@$id_lookup {COMMON.W}35 \&{name\_pointer} (\,)@>
+
+@$print_section_name {COMMON.W}42 \&{void} (\,)@>
+@$sprint_section_name {COMMON.W}43 \&{void} (\,)@>
+@$print_prefix_name {COMMON.W}44 \&{void} (\,)@>
+
+@$section_lookup {COMMON.W}49 \&{name\_pointer} (\,)@>
+
+@$history {COMMON.W}56 \&{int}@>
+
+@$err_print {COMMON.W}58 \&{void} (\,)@>
+
+@$wrap_up {COMMON.W}60 \&{int} (\,)@>
+
+@$fatal {COMMON.W}64 \&{void} (\,)@>
+@$overflow {COMMON.W}65 \&{void} (\,)@>
+
+@$argc {COMMON.W}67 \&{int}@>
+@$argv {COMMON.W}67 \&{char} ${**}$@>
+@$C_file_name {COMMON.W}67 \&{char} [\,]@>
+@$tex_file_name {COMMON.W}67 \&{char} [\,]@>
+@$idx_file_name {COMMON.W}67 \&{char} [\,]@>
+@$scn_file_name {COMMON.W}67 \&{char} [\,]@>
+@$check_file_name {COMMON.W}67 \&{char} [\,]@>
+@$flags {COMMON.W}67 \&{boolean} [\,]@>
+@$use_language {COMMON.W}67 \&{const char} ${*}$@>
+
+@$C_file {COMMON.W}77 \&{FILE} ${*}$@>
+@$tex_file {COMMON.W}77 \&{FILE} ${*}$@>
+@$idx_file {COMMON.W}77 \&{FILE} ${*}$@>
+@$scn_file {COMMON.W}77 \&{FILE} ${*}$@>
+@$check_file {COMMON.W}77 \&{FILE} ${*}$@>
+@$active_file {COMMON.W}77 \&{FILE} ${*}$@>
+
+@$cb_banner {COMMON.W}86 \&{char} [\,]@>
+
+@$cb_show_banner {COMMON.W}95 \&{void} (\,)@>
+
+@$versionstring "<lib/lib.h>" \zip@>
+
+@$skip_comment {}108 =\\{copy\_comment}@>

Added: trunk/Build/source/texk/web2c/cwebdir/prod-mini.ch
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/prod-mini.ch	                        (rev 0)
+++ trunk/Build/source/texk/web2c/cwebdir/prod-mini.ch	2020-06-24 12:01:54 UTC (rev 55647)
@@ -0,0 +1,232 @@
+ at x l.7
+@ Here is a table of all the productions.  Each production that
+ at y
+@* Table of all productions.  Each production that
+ at z
+
+TeX reports 'extra \fi' when running on twilled 'ctwill.w'.
+
+ at x l.14
+\fi \newcount\prodno \newdimen\midcol \let\+\relax \ifon
+ at y
+\newcount\prodno \newdimen\midcol \let\+\relax
+ at z
+
+ at x l.78
+\+& |lpar| |rpar| & |exp| \hfill $L\.{\\,}R$ & functions, declarations\cr
+ at y
+\+& |lpar| |rpar| & |exp| \hfill $L\.{\\,}R$ & functions, declarations\cr
+\endgroup
+ at -in@>@-f@>@-x@>@-y@>
+
+ at r @ Cont.
+\begingroup \lineskip=4pt
+\def\alt #1 #2
+{$\displaystyle\Bigl\{\!\matrix{\strut\hbox{#1}\cr
+   \strut\hbox{#2}\cr}\!\Bigr\}$ }
+\def\altt #1 #2 #3
+{$\displaystyle\Biggl\{\!\matrix{\strut\hbox{#1}\cr\hbox{#2}\cr
+   \strut\hbox{#3}\cr}\!\Biggr\}$ }
+\def\malt #1 #2
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\strut\hbox{#2}\hfill\cr}$}
+\def\maltt #1 #2 #3
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\hbox{#2}\hfill\cr
+   \strut\hbox{#3}\hfill\cr}$}
+\yskip at -in@>@-x@>@-y@>
+\prodno=13 \midcol=2.5in
+\def\theprodno{\number\prodno \global\advance\prodno by1\enspace}
+\def\dagit{\dag\theprodno}
+\def\+#1&#2&#3&#4\cr{\def\next{#1}%
+ \line{\hbox to 2em{\hss
+  \ifx\next\empty\theprodno\else\next\fi}\strut
+  \ignorespaces#2\hfil\hbox to\midcol{$\RA$
+  \ignorespaces#3\hfil}\quad \hbox to1.45in{\ignorespaces#4\hfil}}}
+ at z
+
+ at x l.45
+         |int_like| \alt|raw_int| |struct_like| & |extern "Ada" int|\cr
+ at y
+         |int_like| \alt|raw_int| |struct_like| & |extern "Ada" int|\cr
+\endgroup
+
+@ Cont.
+\begingroup \lineskip=4pt
+\def\alt #1 #2
+{$\displaystyle\Bigl\{\!\matrix{\strut\hbox{#1}\cr
+   \strut\hbox{#2}\cr}\!\Bigr\}$ }
+\def\altt #1 #2 #3
+{$\displaystyle\Biggl\{\!\matrix{\strut\hbox{#1}\cr\hbox{#2}\cr
+   \strut\hbox{#3}\cr}\!\Biggr\}$ }
+\def\malt #1 #2
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\strut\hbox{#2}\hfill\cr}$}
+\def\maltt #1 #2 #3
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\hbox{#2}\hfill\cr
+   \strut\hbox{#3}\hfill\cr}$}
+\yskip at -in@>
+\prodno=27 \midcol=2.5in
+\def\theprodno{\number\prodno \global\advance\prodno by1\enspace}
+\def\dagit{\dag\theprodno}
+\def\+#1&#2&#3&#4\cr{\def\next{#1}%
+ \line{\hbox to 2em{\hss
+  \ifx\next\empty\theprodno\else\next\fi}\strut
+  \ignorespaces#2\hfil\hbox to\midcol{$\RA$
+  \ignorespaces#3\hfil}\quad \hbox to1.45in{\ignorespaces#4\hfil}}}
+ at z
+
+ at x l.75
+              \&{struct} \&{name\_info} $\{$\cr
+ at y
+              \&{struct} \&{name\_info} $\{$\cr
+\endgroup
+
+ at r @ Cont. at -z@>@-in@>
+\begingroup \lineskip=4pt
+\def\alt #1 #2
+{$\displaystyle\Bigl\{\!\matrix{\strut\hbox{#1}\cr
+   \strut\hbox{#2}\cr}\!\Bigr\}$ }
+\def\altt #1 #2 #3
+{$\displaystyle\Biggl\{\!\matrix{\strut\hbox{#1}\cr\hbox{#2}\cr
+   \strut\hbox{#3}\cr}\!\Biggr\}$ }
+\def\malt #1 #2
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\strut\hbox{#2}\hfill\cr}$}
+\def\maltt #1 #2 #3
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\hbox{#2}\hfill\cr
+   \strut\hbox{#3}\hfill\cr}$}
+\yskip at -in@>
+\prodno=47 \midcol=2.5in
+\def\theprodno{\number\prodno \global\advance\prodno by1\enspace}
+\def\dagit{\dag\theprodno}
+\def\+#1&#2&#3&#4\cr{\def\next{#1}%
+ \line{\hbox to 2em{\hss
+  \ifx\next\empty\theprodno\else\next\fi}\strut
+  \ignorespaces#2\hfil\hbox to\midcol{$\RA$
+  \ignorespaces#3\hfil}\quad \hbox to1.45in{\ignorespaces#4\hfil}}}
+ at z
+
+ at x l.164
+       $|force|\,E\,\\{in}\,\\{bsp}\,S\,\\{out}\,|force|$ & |else x=0;|\cr
+ at y
+       $|force|\,E\,\\{in}\,\\{bsp}\,S\,\\{out}\,|force|$ & |else x=0;|\cr
+\endgroup
+
+@ Cont.
+\begingroup \lineskip=4pt
+\def\alt #1 #2
+{$\displaystyle\Bigl\{\!\matrix{\strut\hbox{#1}\cr
+   \strut\hbox{#2}\cr}\!\Bigr\}$ }
+\def\altt #1 #2 #3
+{$\displaystyle\Biggl\{\!\matrix{\strut\hbox{#1}\cr\hbox{#2}\cr
+   \strut\hbox{#3}\cr}\!\Biggr\}$ }
+\def\malt #1 #2
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\strut\hbox{#2}\hfill\cr}$}
+\def\maltt #1 #2 #3
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\hbox{#2}\hfill\cr
+   \strut\hbox{#3}\hfill\cr}$}
+\yskip at -any@>@-z@>@-g@>@-a@>@-x@>@-y@>@-f@>
+\prodno=61 \midcol=2.5in
+\def\theprodno{\number\prodno \global\advance\prodno by1\enspace}
+\def\dagit{\dag\theprodno}
+\def\+#1&#2&#3&#4\cr{\def\next{#1}%
+ \line{\hbox to 2em{\hss
+  \ifx\next\empty\theprodno\else\next\fi}\strut
+  \ignorespaces#2\hfil\hbox to\midcol{$\RA$
+  \ignorespaces#3\hfil}\quad \hbox to1.45in{\ignorespaces#4\hfil}}}
+\advance\midcol20pt
+ at z
+
+ at x l.211
+\+& |prerangle| & |binop| \hfill \.> & $>$ not in template\cr
+ at y
+\+& |prerangle| & |binop| \hfill \.> & $>$ not in template\cr
+\endgroup
+
+ at r @ Cont.
+\begingroup \lineskip=4pt
+\def\alt #1 #2
+{$\displaystyle\Bigl\{\!\matrix{\strut\hbox{#1}\cr
+   \strut\hbox{#2}\cr}\!\Bigr\}$ }
+\def\altt #1 #2 #3
+{$\displaystyle\Biggl\{\!\matrix{\strut\hbox{#1}\cr\hbox{#2}\cr
+   \strut\hbox{#3}\cr}\!\Biggr\}$ }
+\def\malt #1 #2
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\strut\hbox{#2}\hfill\cr}$}
+\def\maltt #1 #2 #3
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\hbox{#2}\hfill\cr
+   \strut\hbox{#3}\hfill\cr}$}
+\yskip at -any@>@-z@>@-g@>@-a@>
+\prodno=86 \midcol=2.5in
+\def\theprodno{\number\prodno \global\advance\prodno by1\enspace}
+\def\dagit{\dag\theprodno}
+\def\+#1&#2&#3&#4\cr{\def\next{#1}%
+ \line{\hbox to 2em{\hss
+  \ifx\next\empty\theprodno\else\next\fi}\strut
+  \ignorespaces#2\hfil\hbox to\midcol{$\RA$
+  \ignorespaces#3\hfil}\quad \hbox to1.45in{\ignorespaces#4\hfil}}}
+ at z
+
+ at x l.232
+\+\dagit& |new_exp| & |exp| & |new int;|\cr
+ at y
+\+\dagit& |new_exp| & |exp| & |new int;|\cr
+\endgroup
+
+@ Cont.
+\begingroup \lineskip=4pt
+\def\alt #1 #2
+{$\displaystyle\Bigl\{\!\matrix{\strut\hbox{#1}\cr
+   \strut\hbox{#2}\cr}\!\Bigr\}$ }
+\def\altt #1 #2 #3
+{$\displaystyle\Biggl\{\!\matrix{\strut\hbox{#1}\cr\hbox{#2}\cr
+   \strut\hbox{#3}\cr}\!\Biggr\}$ }
+\def\malt #1 #2
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\strut\hbox{#2}\hfill\cr}$}
+\def\maltt #1 #2 #3
+{$\displaystyle\matrix{\strut\hbox{#1}\hfill\cr\hbox{#2}\hfill\cr
+   \strut\hbox{#3}\hfill\cr}$}
+\yskip at -any_other@>@-z@>@-f@>@-x@>@-p@>
+\prodno=100 \midcol=2.5in
+\def\theprodno{\number\prodno \global\advance\prodno by1\enspace}
+\def\dagit{\dag\theprodno}
+\def\+#1&#2&#3&#4\cr{\def\next{#1}%
+ \line{\hbox to 2em{\hss
+  \ifx\next\empty\theprodno\else\next\fi}\strut
+  \ignorespaces#2\hfil\hbox to\midcol{$\RA$
+  \ignorespaces#3\hfil}\quad \hbox to1.45in{\ignorespaces#4\hfil}}}
+\advance\midcol20pt
+ at z
+
+ at x
+\advance\midcol-3pt
+\+\dag200\enspace& |typedef_like| |decl_head| \alt|exp| |int_like| &
+      |typedef_like| |decl_head| \hfill $D=D$\alt $E^{**}$ $I^{**}$ \unskip &
+          \&{typedef} \&{char} \&{ch};\cr
+\advance\midcol+3pt
+\+201\enspace& |typedef_like| |decl_head| |semi| & |decl| \hfill $T\.\ D$ &
+                                             \&{typedef} \&{int} $\&x,\&y$;\cr
+\+\dag202\enspace& |typedef_like| |int_like| |raw_int| & |typedef_like| |int_like| |exp| &
+  \&{typedef} \&{int} \&{foo}\cr
+ at y
+ at z
+
+ at x l.272
+\+& |any_other| |end_arg| & |end_arg| &    \&{char}$*$\.{@@]}\cr
+\yskip
+\yskip
+\yskip
+\parindent=0pt
+\dag{\bf Notes}
+ at y
+\+& |any_other| |end_arg| & |end_arg| &    \&{char}$*$\.{@@]}\cr
+\advance\midcol-3pt
+\+\dag200\enspace& |typedef_like| |decl_head| \alt|exp| |int_like| &
+      |typedef_like| |decl_head| \hfill $D=D$\alt $E^{**}$ $I^{**}$ \unskip &
+          \&{typedef} \&{char} \&{ch};\cr
+\advance\midcol+3pt
+\+201\enspace& |typedef_like| |decl_head| |semi| & |decl| \hfill $T\.\ D$ &
+                                             \&{typedef} \&{int} $\&x,\&y$;\cr
+\+\dag202\enspace& |typedef_like| |int_like| |raw_int| & |typedef_like| |int_like| |exp| &
+  \&{typedef} \&{int} \&{foo}\cr
+\endgroup
+
+ at r @-any_other@>@-z@>@ \begingroup\dag{\bf Notes}
+ at z


Property changes on: trunk/Build/source/texk/web2c/cwebdir/prod-mini.ch
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Build/source/texk/web2c/cwebdir/system.bux
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/system.bux	                        (rev 0)
+++ trunk/Build/source/texk/web2c/cwebdir/system.bux	2020-06-24 12:01:54 UTC (rev 55647)
@@ -0,0 +1,47 @@
+@$memcmp "<string.h>" \zip@>
+@$strcat "<string.h>" \zip@>
+@$strcmp "<string.h>" \zip@>
+@$strcpy "<string.h>" \zip@>
+@$strlen "<string.h>" \zip@>
+@$strncmp "<string.h>" \zip@>
+@$strncpy "<string.h>" \zip@>
+
+@$BUFSIZ "<stdio.h>" \zip@>
+@$fclose "<stdio.h>" \zip@>
+@$feof "<stdio.h>" \zip@>
+@$fflush "<stdio.h>" \zip@>
+@$fopen "<stdio.h>" \zip@>
+@$fprintf "<stdio.h>" \zip@>
+@$fputs "<stdio.h>" \zip@>
+@$fread "<stdio.h>" \zip@>
+@$fwrite "<stdio.h>" \zip@>
+@$printf "<stdio.h>" \zip@>
+@$putc "<stdio.h>" \zip@>
+@$putchar "<stdio.h>" \zip@>
+@$puts "<stdio.h>" \zip@>
+@$rename "<stdio.h>" \zip@>
+@$remove "<stdio.h>" \zip@>
+@$sprintf "<stdio.h>" \zip@>
+@$stdout "<stdio.h>" \zip@>
+
+@$exit "<stdlib.h>" \zip@>
+
+@$isalpha "<ctype.h>" \zip@>
+@$isdigit "<ctype.h>" \zip@>
+@$islower "<ctype.h>" \zip@>
+@$isspace "<ctype.h>" \zip@>
+@$isupper "<ctype.h>" \zip@>
+@$isxdigit "<ctype.h>" \zip@>
+@$tolower "<ctype.h>" \zip@>
+@$toupper "<ctype.h>" \zip@>
+
+@$gettext "<libintl.h>" \zip@>
+@$textdomain "<libintl.h>" \zip@>
+
+@$bool "<stdbool.h>" \zip@>
+@$false "<stdbool.h>" \zip@>
+@$true "<stdbool.h>" \zip@>
+@$ptrdiff_t "<stddef.h>" \zip@>
+@$size_t "<stddef.h>" \zip@>
+@$uint8_t "<stdint.h>" \zip@>
+@$uint16_t "<stdint.h>" \zip@>



More information about the tex-live-commits mailing list.