texlive[67487] Build/source/texk/web2c/cwebdir: [CWEB] Use

commits+ascherer at tug.org commits+ascherer at tug.org
Tue Jun 27 00:06:12 CEST 2023


Revision: 67487
          http://tug.org/svn/texlive?view=revision&revision=67487
Author:   ascherer
Date:     2023-06-27 00:06:12 +0200 (Tue, 27 Jun 2023)
Log Message:
-----------
[CWEB] Use 'ctwill-hint.ch' stand-alone.

This is a slim twin of 'ctwill-mini.ch' with the section numbers of
CWEAVE up to section 271. HiTeX's dynamic page layout permits very long
sections.

Modified Paths:
--------------
    trunk/Build/source/texk/web2c/cwebdir/ChangeLog
    trunk/Build/source/texk/web2c/cwebdir/ctwill-hint.ch
    trunk/Build/source/texk/web2c/cwebdir/ctwill-proofsort
    trunk/Build/source/texk/web2c/cwebdir/ctwill.test

Modified: trunk/Build/source/texk/web2c/cwebdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ChangeLog	2023-06-26 20:22:20 UTC (rev 67486)
+++ trunk/Build/source/texk/web2c/cwebdir/ChangeLog	2023-06-26 22:06:12 UTC (rev 67487)
@@ -1,9 +1,15 @@
+2023-06-23  Andreas Scherer  <https://ascherer.github.io>
+
+	* ctwill-hint.ch: Stand-alone twin of ctwill-mini.ch.
+	* ctwill-proofsort: Don't print bare '$0'.
+	* ctwill.test: Test ctwill-proofsort last.
+
 2023-06-26  Karl Berry  <karl at freefriends.org>
 
 	* ctwill-proofsort: Unicode::Collate is required but may not be
 	available.
 	* ctwill.test: exit 0 if Unicode::Collate is not available,
-        so we don't fail in environments without it.
+	so we don't fail in environments without it.
 
 2023-06-23  Andreas Scherer  <https://ascherer.github.io>
 

Modified: trunk/Build/source/texk/web2c/cwebdir/ctwill-hint.ch
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctwill-hint.ch	2023-06-26 20:22:20 UTC (rev 67486)
+++ trunk/Build/source/texk/web2c/cwebdir/ctwill-hint.ch	2023-06-26 22:06:12 UTC (rev 67487)
@@ -1,17 +1,935 @@
-Section 328.
+ at x
+The ``banner line'' defined here should be changed whenever \.{CTWILL} is
+ at y
+The ``banner line'' defined here should be changed whenever \.{CTWILL} is
+ at -banner@>
+@$banner {CTWILL}1 =\.{"This\ is\ CTWILL"}@>
+ at z
 
+Section 2.
+
 @x
-}@+else fatal(_("! Filename too long\n"), found_filename);
+@ \.{CWEAVE} has a fairly straightforward outline.  It operates in
 @y
-}@+else fatal(_("! Filename too long\n"), found_filename);
+@ \.{CWEAVE} has a fairly straightforward outline.  It operates in
+@%
+@$show_banner {CTWILL}14 =\\{flags}[\.{'b'}]@>
+@$show_progress {CTWILL}14 =\\{flags}[\.{'p'}]@>
+ at z
 
-@** 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.
+Section 4.
+
+ at x
+ at d _(s) gettext(s)
+ at y
+ at d _(s) gettext(s)
+ at -s@>
+ at -a@>
+ at -HAVE_GETTEXT@>
 @z
+
+Section 5.
+
+ at x
+ at d compress(c) if (loc++<=limit) return c
+ at y
+ at d compress(c) if (loc++<=limit) return c
+ at -c@>
+ at z
+
+Section 6.
+
+ at x
+@ Code related to input routines:
+ at y
+@ Code related to input routines:
+ at -c@>
+ at z
+
+Section 7.
+
+ at x
+ at d cur_line line[include_depth] /* number of current line in current file */
+ at y
+ at d cur_line line[include_depth] /* number of current line in current file */
+ at -cur_file@>
+ at -cur_file_name@>
+ at -cur_line@>
+@$cur_file {CTWILL}7 =\\{file}[\\{include\_depth}]@>
+@$cur_file_name {CTWILL}7 =\hfil\break\\{file\_name}[\\{include\_depth}]@>
+@$cur_line {CTWILL}7 =\\{line}[\\{include\_depth}]@>
+ at z
+
+Section 10.
+
+ at x
+@ Code related to identifier and section name storage:
+ at y
+@ Code related to identifier and section name storage:
+ at -c@>
+ at -llink@>
+ at -rlink@>
+ at -root@>
+@$llink {CTWILL}10 =\\{link}@>
+@$rlink {CTWILL}10 =\\{dummy}.\\{Rlink}@>
+@$root {CTWILL}10 =\\{name\_dir}$\MG$\\{rlink}@>
+ at z
+
+Section 12.
+
+ at x
+@ Code related to error handling:
+ at y
+@ Code related to error handling:
+ at -s@>
+ at z
+
+Section 14.
+
+ 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 -show_banner@>
+ at -show_progress@>
+ at -show_happiness@>
+ at -show_stats@>
+ at -make_xrefs@>
+ at -check_for_change@>
+@$show_banner {CTWILL}14 =\\{flags}[\.{'b'}]@>
+@$show_progress {CTWILL}14 =\\{flags}[\.{'p'}]@>
+@$show_happiness {CTWILL}14 =\\{flags}[\.{'h'}]@>
+@$show_stats {CTWILL}14 =\\{flags}[\.{'s'}]@>
+@$make_xrefs {CTWILL}14 =\\{flags}[\.{'x'}]@>
+@$check_for_change {CTWILL}14 =\\{flags}[\.{'c'}]@>
+ at z
+
+Section 15.
+
+ at x
+@ Code related to output:
+ at y
+@ Code related to output:
+ at -a@>
+ at -b@>
+ at -c@>
+ at -update_terminal@>
+ at -new_line@>
+@$update_terminal {CTWILL}15 =\\{fflush}(\\{stdout})@>
+@$new_line {CTWILL}15 =\\{putchar}(\.{'\\n'})@>
+ at z
+
+Section 17.
+
+ at x
+ at d long_buf_size (buf_size+longest_name) /* for \.{CWEAVE} */
+ at y
+ at d long_buf_size (buf_size+longest_name) /* for \.{CWEAVE} */
+ at -long_buf_size@>
+@$long_buf_size {CTWILL}17 =$\\{buf\_size}+\\{longest\_name}$@>
+ at z
+
+Section 20.
+
+ at x
+@* Data structures exclusive to {\tt CWEAVE}.
+ at y
+@* Data structures exclusive to {\tt CWEAVE}.
+ at -a@>
+ at -ilk@>
+@$ilk {CTWILL}20 =\\{dummy}.\\{Ilk}@>
+ at z
+
+Section 22.
+
+ 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
+
+Section 24.
+
+ at x
+ at d file_flag (3*cite_flag)
+ at y
+ at -file_flag@>
+ at -def_flag@>
+ at -xref@>
+@$file_flag {CTWILL}24 =$\T{3}*\\{cite\_flag}{}$@>
+@$def_flag {CTWILL}24 =$\T{2}*\\{cite\_flag}{}$@>
+@$xref {CTWILL}24 =\\{equiv\_or\_xref}@>
+ at d file_flag (3*cite_flag)
+ at z
+
+Section 25.
+
+ 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 -p@>
+ at -no_xref@>
+@$no_xref {CTWILL}25 =$\R\\{make\_xrefs}$@>
+ at z
+
+Section 36.
+
+ at x
+ at d underline '\n' /* this code will be intercepted without confusion */
+ at y
+ at d underline '\n' /* this code will be intercepted without confusion */
+ at -begin_comment@>
+ at -underline@>
+@$begin_comment {CTWILL}36 =\.{'\\t'}@>
+@$underline {CTWILL}36 =\.{'\\n'}@>
+ at z
+
+Section 42.
+
+CTWILL hickups on comment and produces unmatched '$' in mini-index.
+
+ at x l.646
+skip_TeX(void) /* skip past pure \TEX/ code */
+ at y
+skip_TeX(void)
+ at z
+
+Section 44.
+
+ 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@>
+@$c {CTWILL}44 \&{eight\_bits}@>
+ at z
+
+Section 45.
+
+ at x
+@ @<Predecl...@>=@+static eight_bits get_next(void);
+ at y
+@ @<Predecl...@>=@+static eight_bits get_next(void);
+ at -get_next@>
+ at z
+
+Section 46.
+
+ at x
+ at d left_preproc ord /* begins a preprocessor command */
+ at y
+ at -left_preproc@>
+@$left_preproc {CTWILL}46 =\\{ord}@>
+ at d left_preproc ord /* begins a preprocessor command */
+ at z
+
+Section 52.
+
+ at x
+  id_first=--loc;
+  do
+    ++loc;
+  while (isalpha((int)*loc) || isdigit((int)*loc) @|
+      || isxalpha(*loc) || ishigh(*loc));
+  id_loc=loc; return identifier;
+ at y
+  id_first=--loc;@/
+  do
+    ++loc;
+  while (isalpha((int)*loc) || isdigit((int)*loc) @|
+      || isxalpha(*loc) || ishigh(*loc));@/
+  id_loc=loc;@/
+  return identifier;
+ at z
+
+Section 53.
+
+ at x
+ at d gather_digits_while(t) while ((t) || *loc=='\'')
+ at y
+ at d gather_digits_while(t) while ((t) || *loc=='\'')
+ at -t@>
+ at z
+
+Section 65.
+
+ at x
+@ @<Predecl...@>=@+static void skip_restricted(void);
+ at y
+@ @<Predecl...@>=@+static void skip_restricted(void);
+ at -skip_restricted@>
+ at z
+
+Section 69.
+
+ at x
+@ @<Predecl...@>=@+static void phase_one(void);
+ at y
+@ @<Predecl...@>=@+static void phase_one(void);
+ at -phase_one@>
+ at z
+
+Section 72.
+
+ at x
+C_xref( /* makes cross-references for \CEE/ identifiers */
+  eight_bits spec_ctrl)
+ at y
+C_xref( /* makes cross-references for \CEE/ identifiers */
+  eight_bits spec_ctrl)
+ at -C_xref@>
+@$C_xref {CTWILL}72 \&{static} \&{void} (\,)@>
+ at z
+
+Section 86.
+
+ 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 -b@>
+ at -c@>
+ at -tex_new_line@>
+@$tex_new_line {CTWILL}86 =$\\{putc}(\.{'\\n'},\39\\{active\_file})$@>
+ at z
+
+Section 89.
+
+ at x
+ at d proofing flags['P']
+ at y
+ at d proofing flags['P']
+ at -proofing@>
+@$proofing {CTWILL}89 =\\{flags}[\.{'P'}]@>
+ at z
+
+Section 90.
+
+ 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 -s@>
+ at z
+
+Section 91.
+
+ at x
+out_str( /* output characters from |s| to end of string */
+const char*s)
+ at y
+out_str( /* output characters from |s| to end of string */
+const char*s)
+ at -out_str@>
+@$out_str {CTWILL}91 \&{static} \&{void} (\,)@>
+ at z
+
+Section 101.
+
+ 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 -c@>
+ at -t@>
+ at -copy_comment@>
+@$copy_comment {CTWILL}101 \&{static} \&{int} (\,)@>
+ at z
+
+Section 108.
+
+ at x
+ at d print_cat(c) fputs(cat_name[c],stdout) /* symbolic printout of a category */
+ at y
+ at d print_cat(c) fputs(cat_name[c],stdout) /* symbolic printout of a category */
+ at -c@>
+ at z
+
+Section 109.
+
+ at x
+@ The token lists for translated \TEX/ output contain some special control
+ at y
+@ 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
+\yskip\noindent All of these tokens are removed from the \TEX/ output that
+ at -n@>
+ at z
+
+Section 110.
+
+ at x
+@ The raw input is converted into scraps according to the following table,
+ at y
+@* From raw input to scraps.
+ at -c@>
+The raw input is converted into scraps according to the following table,
+ at z
+
+Sections 111.
+
+ at x l.7 line numbers refer to 'prod.w'
+@ Here is a table of all the productions.  Each production that
+ at y
+@* Table of all productions.  Each production that
+ at -time@>
+ at -in@>@-f@>@-x@>@-y@>
+ at -any@>@-z@>@-g@>@-a@>
+ at -any_other@>@-p@>
+ at -deprecated@>
+ at -fallthrough@>
+ at -likely@>
+ at -nodiscard@>
+ at -unlikely@>
+ at -s@>
+ at z
+
+Section 113.
+
+ at x
+@ @d trans trans_plus.Trans /* translation texts of scraps */
+ at y
+@ @d trans trans_plus.Trans /* translation texts of scraps */
+ at -trans@>
+@$trans {CTWILL}113 =\\{trans\_plus}.\\{Trans}@>
+ at z
+
+Section 115.
+
+ 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 -res_flag@>
+ at -section_flag@>
+ at -tok_flag@>
+ at -inner_tok_flag@>
+@$res_flag {CTWILL}115 =$\T{2}*\\{id\_flag}$@>
+@$section_flag {CTWILL}115 =$\T{3}*\\{id\_flag}$@>
+@$tok_flag {CTWILL}115 =$\T{3}*\\{id\_flag}$@>
+@$inner_tok_flag {CTWILL}115 =$\T{4}*\\{id\_flag}$@>
+ at z
+
+Section 118.
+
+ 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
+
+Section 121.
+
+ at x
+@ Let us consider the big switch for productions now, before looking
+ at y
+@ Let us consider the big switch for productions now, before looking
+ at -cat1@>
+ at -cat2@>
+ at -cat3@>
+@$cat1 {CTWILL}121 =$(\\{pp}+\T{1})\MG\\{cat}$@>
+@$cat2 {CTWILL}121 =$(\\{pp}+\T{2})\MG\\{cat}$@>
+@$cat3 {CTWILL}121 =$(\\{pp}+\T{3})\MG\\{cat}$@>
+ at z
+
+Section 122.
+
+ at x
+`\.{@@!@@:operator+=\}\{\\\&\{operator\} \$+\{=\}\$@@>}').
+ at y
+`\.{@@!@@:operator+=\}\{\\\&\{operator\} \$+\{=\}\$@@>}').
+ at -find_first_ident@>
+ at -make_reserved@>
+ at -make_underlined@>
+ at -underline_xref@>
+ at -no_ident_found@>
+ at -case_found@>
+ at -operator_found@>
+@$no_ident_found {CTWILL}122 =\hfil\break(\&{token\_pointer}) 0@>
+@$case_found {CTWILL}122 =\hfil\break(\&{token\_pointer}) 1@>
+@$operator_found {CTWILL}122 =\hfil\break(\&{token\_pointer}) 2@>
+ at z
+
+Section 124.
+
+ at x
+make_reserved( /* make the first identifier in |p->trans| like |int| */
+scrap_pointer p)
+ at y
+make_reserved( /* make the first identifier in |p->trans| like |int| */
+scrap_pointer p)
+ at -make_reserved@>
+@$make_reserved {CTWILL}124 \&{static} \&{void} (\,)@>
+ at z
+
+Section 125.
+
+ at x
+make_underlined(
+/* underline the entry for the first identifier in |p->trans| */
+scrap_pointer p)
+ at y
+make_underlined(
+/* underline the entry for the first identifier in |p->trans| */
+scrap_pointer p)
+ at -make_underlined@>
+@$make_underlined {CTWILL}125 \&{static} \&{void} (\,)@>
+ at z
+
+ at x
+    return; /* this happens, for example, in |case found:| */
+ at y
+    return; /* this happens, for example, in \&{case} \\{found}: */
+ at z
+
+Section 155.
+
+ at x
+ at d force_lines flags['f'] /* should each statement be on its own line? */
+ at y
+ at d force_lines flags['f'] /* should each statement be on its own line? */
+ at -force_lines@>
+@$force_lines {CTWILL}155 =\\{flags}[\.{'f'}]@>
+ at z
+
+Section 187.
+
+ at x
+@ @<Print a snapsh...@>=
+ at y
+@ @<Print a snapsh...@>=
+ at -n@>
+@%
+@$n {CTWILL}182 \&{short}@>
+@$n {CTWILL}183 \&{short}@>
+ at z
+
+Section 189.
+
+ at x
+@ @<Predecl...@>=@+static text_pointer translate(void);
+ at y
+@ @<Predecl...@>=@+static text_pointer translate(void);
+ at -translate@>
+ at z
+
+Section 193.
+
+ at x
+    if (next_control=='|' || next_control==begin_comment ||
+        next_control==begin_short_comment) return;
+ at y
+ at -C_parse@>
+@$C_parse {CTWILL}193 \&{static} \&{void} (\,)@>
+    if (next_control=='|' || next_control==begin_comment @| ||
+        next_control==begin_short_comment) return;
+ at z
+
+Section 194.
+
+ at x
+@ @<Predecl...@>=@+static void C_parse(eight_bits);
+ at y
+@ @<Predecl...@>=@+static void C_parse(eight_bits);
+ at -C_parse@>
+ at z
+
+Section 195.
+
+ 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
+
+Section 204.
+
+ at x
+ at d make_pb flags['e']
+ at y
+ at d make_pb flags['e']
+ at -make_pb@>
+@$make_pb {CTWILL}204 =\\{flags}[\.{'e'}]@>
+ at z
+
+Section 208.
+
+ at x
+ at d cur_mode cur_state.mode_field /* current mode of interpretation */
+ at y
+ at d cur_mode cur_state.mode_field /* current mode of interpretation */
+ at -cur_end@>
+ at -cur_tok@>
+ at -cur_mode@>
+@$cur_end {CTWILL}208 =\\{cur\_state}.\\{end\_field}]@>
+@$cur_tok {CTWILL}208 =\\{cur\_state}.\\{tok\_field}]@>
+@$cur_mode {CTWILL}208 =\\{cur\_state}.\\{mode\_field}]@>
+ at z
+
+Section 211.
+
+ at x
+push_level( /* suspends the current level */
+text_pointer p)
+ at y
+push_level( /* suspends the current level */
+text_pointer p)
+ at -push_level@>
+@$push_level {CTWILL}211 \&{static} \&{void} (\,)@>
+ at z
+
+Section 228.
+
+ at x
+@ @<Predecl...@>=@+static void phase_two(void);
+ at y
+@ @<Predecl...@>=@+static void phase_two(void);
+ at -phase_two@>
+ at z
+
+Section 230.
+
+ at x
+@ @d usage_sentinel (struct perm_meaning *)1
+ at y
+@ @d usage_sentinel (struct perm_meaning *)1
+ at -usage_sentinel@>
+@$usage_sentinel {CTWILL}230 =(\&{struct} \&{perm\_meaning} ${}{*}{}$) \T{1}@>
+ at z
+
+Section 234.
+
+ at x
+finish_C( /* finishes a definition or a \CEE/ part */
+  boolean visible) /* |true| if we should produce \TeX\ output */
+ at y
+finish_C( /* finishes a definition or a \CEE/ part */
+  boolean visible) /* |true| if we should produce \TeX\ output */
+ at -finish_C@>
+@$finish_C {CTWILL}234 \&{static} \&{void} (\,)@>
+ at z
+
+Section 235.
+
+ at x
+@ @<Predecl...@>=@+static void finish_C(boolean);
+ at y
+@ @<Predecl...@>=@+static void finish_C(boolean);
+ at -finish_C@>
+ at z
+
+Section 243.
+
+ at x
+footnote( /* outputs section cross-references */
+sixteen_bits flag)
+ at y
+footnote( /* outputs section cross-references */
+sixteen_bits flag)
+ at -footnote@>
+@$footnote {CTWILL}243 \&{static} \&{void} (\,)@>
+ at z
+
+Section 244.
+
+ at x
+@ @<Predecl...@>=@+static void footnote(sixteen_bits);
+ at y
+@ @<Predecl...@>=@+static void footnote(sixteen_bits);
+ at -footnote@>
+ at z
+
+Section 248.
+
+ at x
+@ @<Predecl...@>=@+static void phase_three(void);
+ at y
+@ @<Predecl...@>=@+static void phase_three(void);
+ at -phase_three@>
+ at z
+
+Section 251.
+
+ 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
+
+Section 253.
+
+ at x
+@<Rest of |trans_plus| union@>=
+ at y
+@<Rest of |trans_plus| union@>=
+ at -j@>
+ at -k@>
+ at z
+
+Section 254.
+
+ at x
+@ @d depth cat /* reclaims memory that is no longer needed for parsing */
+ at y
+@ @d depth cat /* reclaims memory that is no longer needed for parsing */
+ at -depth@>
+ at -head@>
+ at -sort_ptr@>
+ at -max_sorts@>
+@$depth {CTWILL}254 =\\{cat}@>
+@$head {CTWILL}254 =\\{trans\_plus}.\\{Head}@>
+@$sort_ptr {CTWILL}254 =\\{scrap\_ptr}@>
+ at z
+
+Section 258.
+
+ at x
+@ Procedure |unbucket| goes through the buckets and adds nonempty lists
+ at y
+@ Procedure |unbucket| goes through the buckets and adds nonempty lists
+ at -unbucket@>
+@$unbucket {CTWILL}258 \&{static} \&{void} (\,)@>
+ at z
+
+Section 259.
+
+ at x
+@ @<Predecl...@>=@+static void unbucket(eight_bits);
+ at y
+@ @<Predecl...@>=@+static void unbucket(eight_bits);
+ at -unbucket@>
+ at z
+
+Section 261.
+
+ at x
+  next_name=sort_ptr->head;
+ at y
+  next_name=sort_ptr->head;@/
+ at z
+
+Section 262.
+
+ at x
+  cur_name=sort_ptr->head;
+ at y
+  cur_name=sort_ptr->head;@/
+ at z
+
+Section 268.
+
+ at x
+@ @<Predecl...@>=@+static void section_print(name_pointer);
+ at y
+@ @<Predecl...@>=@+static void section_print(name_pointer);
+ at -section_print@>
+ at z
+
+Section 270.
+
+ at x
+  puts(_("\nMemory usage statistics:"));
+ at .Memory usage statistics:@>
+  printf(_("%td names (out of %ld)\n"),
+            (ptrdiff_t)(name_ptr-name_dir),(long)max_names);
+  printf(_("%td cross-references (out of %ld)\n"),
+            (ptrdiff_t)(xref_ptr-xmem),(long)max_refs);
+  printf(_("%td bytes (out of %ld)\n"),
+            (ptrdiff_t)(byte_ptr-byte_mem),(long)max_bytes);
+  printf(_("%td temp meanings (out of %ld)\n"),
+            (ptrdiff_t)(max_temp_meaning_ptr-temp_meaning_stack),
+            (long)max_meanings);
+  printf(_("%td titles (out of %ld)\n"),
+            (ptrdiff_t)(title_code_ptr-title_code),(long)max_titles);
+  puts(_("Parsing:"));
+  printf(_("%td scraps (out of %ld)\n"),
+            (ptrdiff_t)(max_scr_ptr-scrap_info),(long)max_scraps);
+  printf(_("%td texts (out of %ld)\n"),
+            (ptrdiff_t)(max_text_ptr-tok_start),(long)max_texts);
+  printf(_("%td tokens (out of %ld)\n"),
+            (ptrdiff_t)(max_tok_ptr-tok_mem),(long)max_toks);
+  printf(_("%td levels (out of %ld)\n"),
+            (ptrdiff_t)(max_stack_ptr-stack),(long)stack_size);
+  puts(_("Sorting:"));
+  printf(_("%td levels (out of %ld)\n"),
+            (ptrdiff_t)(max_sort_ptr-scrap_info),(long)max_scraps);
+ at y
+  puts(_("\nMemory usage statistics:"));@/
+ at .Memory usage statistics:@>
+  printf(_("%td names (out of %ld)\n"),
+            (ptrdiff_t)(name_ptr-name_dir),@/
+            @t\5\5\5\5@>(long)max_names);@/
+  printf(_("%td cross-references (out of %ld)\n"),
+            (ptrdiff_t)(xref_ptr-xmem),(long)max_refs);@/
+  printf(_("%td bytes (out of %ld)\n"),
+            (ptrdiff_t)(byte_ptr-byte_mem),@/
+            @t\5\5\5\5@>(long)max_bytes);@/
+  printf(_("%td temp meanings (out of %ld)\n"),
+            (ptrdiff_t)(max_temp_meaning_ptr-temp_meaning_stack),@/
+            @t\5\5\5\5@>(long)max_meanings);@/
+  printf(_("%td titles (out of %ld)\n"),
+            (ptrdiff_t)(title_code_ptr-title_code),@/
+            @t\5\5\5\5@>(long)max_titles);@/
+  puts(_("Parsing:"));@/
+  printf(_("%td scraps (out of %ld)\n"),
+            (ptrdiff_t)(max_scr_ptr-scrap_info),@/
+            @t\5\5\5\5@>(long)max_scraps);@/
+  printf(_("%td texts (out of %ld)\n"),
+            (ptrdiff_t)(max_text_ptr-tok_start),@/
+            @t\5\5\5\5@>(long)max_texts);@/
+  printf(_("%td tokens (out of %ld)\n"),
+            (ptrdiff_t)(max_tok_ptr-tok_mem),@/
+            @t\5\5\5\5@>(long)max_toks);@/
+  printf(_("%td levels (out of %ld)\n"),
+            (ptrdiff_t)(max_stack_ptr-stack),@/
+            @t\5\5\5\5@>(long)stack_size);@/
+  puts(_("Sorting:"));@/
+  printf(_("%td levels (out of %ld)\n"),
+            (ptrdiff_t)(max_sort_ptr-scrap_info),@/
+            @t\5\5\5\5@>(long)max_scraps);
+ at z
+
+Section 272.
+
+ at x
+ at q Section 2->272. @>
+@* {\tentex CTWILL} user manual.
+ at y
+@* {\tentex CTWILL} user manual.
+ at -s@>
+ at -f@>
+ at -x@>
+ at -printf@>
+ at z
+
+Section 274.
+
+ at x
+static struct perm_meaning {
+ at y
+static struct perm_meaning {
+ at -perm_meaning@>
+@$perm_meaning {CTWILL}274 \&{static} \&{struct}@>
+ at z
+
+Section 283.
+
+ at x
+@ @<Predec...@>=@+static boolean app_supp(text_pointer);
+ at y
+@ @<Predec...@>=@+static boolean app_supp(text_pointer);
+ at -app_supp@>
+ at z
+
+Section 284.
+
+ at x
+@ The trickiest part of \.{CTWILL} is the procedure |make_ministring(pp+l)|,
+ at y
+@ The trickiest part of \.{CTWILL} is the procedure |make_ministring(pp+l)|,
+ at -a@>
+ at -b@>
+ at -c@>
+ at -l@>
+ at -make_ministring@>
+@$make_ministring {CTWILL}284 \&{static} \&{void} (\,)@>
+ at z
+
+Section 285.
+
+ at x
+@ @<Predec...@>=@+static void make_ministring(scrap_pointer);
+ at y
+@ @<Predec...@>=@+static void make_ministring(scrap_pointer);
+ at -make_ministring@>
+ at z
+
+Section 293.
+
+ at x
+@ @<Write the new meaning to the \.{.aux} file@>=
+ at y
+@ @<Write the new meaning to the \.{.aux} file@>=
+@%
+@$p {CTWILL}277 \&{name\_pointer}@>
+@$q {CTWILL}277 \&{struct perm\_meaning} ${}{*}{}$@>
+ at z
+
+Section 294.
+
+ at x
+@<Flag the usage of this identifier, for the mini-index@>=
+ at y
+@<Flag the usage of this identifier, for the mini-index@>=
+@%
+@$p {CTWILL}202 \&{name\_pointer}@>
+ at z
+
+Section 297.
+
+ at x
+@ @<Predec...@>=@+static void out_mini(meaning_struct *);
+ at y
+@ @<Predec...@>=@+static void out_mini(meaning_struct *);
+ at -out_mini@>
+ at z
+
+Section 300.
+
+ at x
+@ @<Predec...@>=@+static sixteen_bits title_lookup(void);
+ at y
+@ @<Predec...@>=@+static sixteen_bits title_lookup(void);
+ at -title_lookup@>
+ at z
+
+Section 303.
+
+ at x
+ at d indent_param_decl flags['i'] /* should formal parameter declarations be indented? */
+ at y
+ at d indent_param_decl flags['i'] /* should formal parameter declarations be indented? */
+ at -indent_param_decl@>
+@$indent_param_decl {CTWILL}303 =\\{flags}[\.{'i'}]@>
+ at z
+
+Section 304.
+
+ at x
+ at d order_decl_stmt flags['o'] /* should declarations and statements be separated? */
+ at y
+ at d order_decl_stmt flags['o'] /* should declarations and statements be separated? */
+ at -order_decl_stmt@>
+@$order_decl_stmt {CTWILL}304 =\\{flags}[\.{'o'}]@>
+ at z
+
+Section 310.
+
+ at x l.116 of CTWILL-TEXLIVE.CH
+ at d kpse_find_cweb(name) kpse_find_file(name,kpse_cweb_format,true)
+ at y
+ at d kpse_find_cweb(name) kpse_find_file(name,kpse_cweb_format,true)
+ at -name@>
+ at z

Modified: trunk/Build/source/texk/web2c/cwebdir/ctwill-proofsort
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctwill-proofsort	2023-06-26 20:22:20 UTC (rev 67486)
+++ trunk/Build/source/texk/web2c/cwebdir/ctwill-proofsort	2023-06-26 22:06:12 UTC (rev 67487)
@@ -1,5 +1,6 @@
 #!/usr/bin/env perl
 # $Id$
+# $Id$
 # Public domain.  Originally written by Andreas Scherer, 2023.
 
 use strict;
@@ -9,15 +10,16 @@
 use Getopt::Long qw(:config no_ignore_case bundling);
 use Pod::Usage;
 
+my $progname = basename $0;
+
 BEGIN {
   # Unicode::Collate has been around a long time,
   # but it's not part of core Perl.
   my $rc = eval { require Unicode::Collate; };
-  die "$0: the Unicode::Collate module is required\n" unless $rc;
+  die "$progname: the Unicode::Collate module is required\n" unless $rc;
 }
 
 # We expect a TeX file as the single command-line parameter.
-my $progname = basename $0;
 my $usage = "Usage: $progname input_file\n";
 if (@ARGV > 1) {
   my $first = shift @ARGV;

Modified: trunk/Build/source/texk/web2c/cwebdir/ctwill.test
===================================================================
--- trunk/Build/source/texk/web2c/cwebdir/ctwill.test	2023-06-26 20:22:20 UTC (rev 67486)
+++ trunk/Build/source/texk/web2c/cwebdir/ctwill.test	2023-06-26 22:06:12 UTC (rev 67487)
@@ -14,6 +14,10 @@
 ./ctwill-refsort < $testdir/ham.ref > ham.sref || exit 1
 diff ham.sref $testdir/ham.sref || exit 1
 
+# Test CTWILL-TWINX
+./ctwill-twinx ham.tex > index.tex
+diff index.tex $testdir/index.tex || exit 1
+
 # Test CTWILL-PROOFSORT
 # Perl script not available in builddir, and requires Unicode::Collate;
 # if that module is not available, just quit testing.
@@ -21,8 +25,4 @@
 $testdir/../ctwill-proofsort ham.tex > ham-sorted.tex || exit 1
 diff ham-sorted.tex $testdir/ham-sorted.tex || exit 1
 
-# Test CTWILL-TWINX
-./ctwill-twinx ham.tex > index.tex
-diff index.tex $testdir/index.tex || exit 1
-
 exit 0



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