beta-0.89.2
[luatex.git] / source / texk / web2c / cwebdir / cweav-w2c.ch
blob0fde9a7df494a374927cf9bc1126e443b54c926a
1 % Kpathsea changes for CWEB by Wlodek Bzyl and Olaf Weber
2 % Copyright 2002 Wlodek Bzyl and Olaf Weber
3 % This file is in the Public Domain.
6 @x l.32
7 \def\title{CWEAVE (Version 3.64)}
8 \def\topofcontents{\null\vfill
9   \centerline{\titlefont The {\ttitlefont CWEAVE} processor}
10   \vskip 15pt
11   \centerline{(Version 3.64)}
12   \vfill}
14 \def\Kpathsea/{{\mc KPATHSEA\spacefactor1000}}
15 \def\SQUARE{\vrule width 2pt depth -1pt height 3pt}
16 \def\sqitem{\item{\SQUARE}}
18 \def\title{CWEAVE (Version 3.64k)}
19 \def\topofcontents{\null\vfill
20   \centerline{\titlefont The {\ttitlefont CWEAVE} processor}
21   \vskip 15pt
22   \centerline{(Version 3.64k)}
23   \vfill}
26 This change can not be applied when `tie' is  used
27 (TOC file can not be typeset).
29 %@x l.51
30 %\let\maybe=\iftrue
31 %@y
32 %\let\maybe=\iffalse % print only changed modules
33 %@z
36 Section 1.
38 @x l.65
39 The ``banner line'' defined here should be changed whenever \.{CWEAVE}
40 is modified.
42 @d banner "This is CWEAVE (Version 3.64)\n"
43 @y 
44 The ``banner line'' defined here should be changed whenever \.{CWEAVE}
45 is modified.
47 @d banner "This is CWEAVE, Version 3.64"
51 Section 2.
53 @x l.77
54 @ We predeclare several standard system functions here instead of including
55 their system header files, because the names of the header files are not as
56 standard as the names of the functions. (For example, some \CEE/ environments
57 have \.{<string.h>} where others have \.{<strings.h>}.)
59 @<Predecl...@>=
60 extern int strlen(); /* length of string */
61 extern int strcmp(); /* compare strings lexicographically */
62 extern char* strcpy(); /* copy one string to another */
63 extern int strncmp(); /* compare up to $n$ string characters */
64 extern char* strncpy(); /* copy up to $n$ string characters */
68 Section 3.
70 @x l.98
71 int main (ac, av)
72 int ac; /* argument count */
73 char **av; /* argument values */
75 int main (int ac, char **av)
78 @x l.107 - Add Web2C version to banner.
79   if (show_banner) printf(banner); /* print a ``banner line'' */
81   if (show_banner) {
82      printf("%s%s\n", banner, versionstring); /* print a ``banner line'' */
83   }
86 @x l.112 - 'use' print_text(), used nowhere else
87   return wrap_up(); /* and exit gracefully */
89   if (0) print_text(text_ptr);
90   return wrap_up(); /* and exit gracefully */
93 @x l.120
94 @d max_bytes 90000 /* the number of bytes in identifiers,
96 @d max_bytes 1000000 /* the number of bytes in identifiers,
99 @x l.112
100 @d max_names 4000 /* number of identifiers, strings, section names;
102 @d max_names 10239 /* number of identifiers, strings, section names;
105 @x l.124
106 @d max_sections 2000 /* greater than the total number of sections */
107 @d hash_size 353 /* should be prime */
108 @d buf_size 100 /* maximum length of input line, plus one */
110 @d max_sections 10239 /* greater than the total number of sections */
111 @d hash_size 8501 /* should be prime */
112 @d buf_size 1000 /* maximum length of input line, plus one */
115 @x l.131
116 @d max_refs 20000 /* number of cross-references; must be less than 65536 */
117 @d max_toks 20000 /* number of symbols in \CEE/ texts being parsed;
119 @d max_refs 65535 /* number of cross-references; must be less than 65536 */
120 @d max_toks 65535 /* number of symbols in \CEE/ texts being parsed;
123 @x l.134
124 @d max_texts 4000 /* number of phrases in \CEE/ texts being parsed;
126 @d max_texts 10239 /* number of phrases in \CEE/ texts being parsed;
129 @x l.136
130 @d max_scraps 2000 /* number of tokens in \CEE/ texts being parsed */
132 @d max_scraps 10000 /* number of tokens in \CEE/ texts being parsed */
135 Section 5.
137 @x common.h l.30 - boolean comes from kpathsea.
138 typedef short boolean;
142 Section 6.
144 @x common.h l.36
145 #include <stdio.h>
147 #include <kpathsea/kpathsea.h>
148 #include <stdio.h>
151 @x common.h l.65
152 @d xisalpha(c) (isalpha(c)&&((eight_bits)c<0200))
153 @d xisdigit(c) (isdigit(c)&&((eight_bits)c<0200))
154 @d xisspace(c) (isspace(c)&&((eight_bits)c<0200))
155 @d xislower(c) (islower(c)&&((eight_bits)c<0200))
156 @d xisupper(c) (isupper(c)&&((eight_bits)c<0200))
157 @d xisxdigit(c) (isxdigit(c)&&((eight_bits)c<0200))
159 @d xisalpha(c) (isalpha((eight_bits)c)&&((eight_bits)c<0200))
160 @d xisdigit(c) (isdigit((eight_bits)c)&&((eight_bits)c<0200))
161 @d xisspace(c) (isspace((eight_bits)c)&&((eight_bits)c<0200))
162 @d xislower(c) (islower((eight_bits)c)&&((eight_bits)c<0200))
163 @d xisupper(c) (isupper((eight_bits)c)&&((eight_bits)c<0200))
164 @d xisxdigit(c) (isxdigit((eight_bits)c)&&((eight_bits)c<0200))
167 Section 9.
169 @x common.h l.109 - protos now all in cweb.h.
170 extern name_pointer id_lookup(); /* looks up a string in the identifier table */
171 extern name_pointer section_lookup(); /* finds section name */
172 extern void print_section_name(), sprint_section_name();
174 #include "cweb.h"
177 Section 10.
179 @x common.h l.123 - explicit types, protos now all in cweb.h.
180 extern history; /* indicates how bad this run was */
181 extern err_print(); /* print error message and context */
182 extern wrap_up(); /* indicate |history| and exit */
183 extern void fatal(); /* issue error message and die */
184 extern void overflow(); /* succumb because a table has overflowed */
186 extern int history; /* indicates how bad this run was */
189 Section 11.
191 @x common.h l.131 - max_file_name_length is way too small.
192 @d max_file_name_length 60
194 @d max_file_name_length 1024
197 @x common.h l.138 - explicit types.
198 extern include_depth; /* current level of nesting */
200 extern int include_depth; /* current level of nesting */
203 @x common.h l.148 - explicit types.
204 extern line[]; /* number of current line in the stacked files */
205 extern change_line; /* number of current line in change file */
207 extern int line[]; /* number of current line in the stacked files */
208 extern int change_line; /* number of current line in change file */
211 @x common.h l.153 - protos now all in cweb.h.
212 extern reset_input(); /* initialize to read the web file and change file */
213 extern get_line(); /* inputs the next line */
214 extern check_complete(); /* checks that all changes were picked up */
218 Section 15.
220 @x common.h l.192 - protos now all in cweb.h.
221 extern void common_init();
225 Section 21.
227 @x l.275
228 void
229 new_xref(p)
230 name_pointer p;
232 static void
233 new_xref (name_pointer p)
236 Section 22.
238 @x l.306
239 void
240 new_section_xref(p)
241 name_pointer p;
243 static void
244 new_section_xref (name_pointer p)
247 Section 23.
249 @x l.326
250 void
251 set_file_flag(p)
252 name_pointer p;
254 static void
255 set_file_flag (name_pointer p)
258 Section 27.
260 @x l.371
261 int names_match(p,first,l,t)
262 name_pointer p; /* points to the proposed match */
263 char *first; /* position of first character of string */
264 int l; /* length of identifier */
265 eight_bits t; /* desired ilk */
268 names_match (name_pointer p, const char *first, int l, char t)
271 @x l.383
272 init_p(p,t)
273 name_pointer p;
274 eight_bits t;
276 init_p (name_pointer p, char t)
279 @x l.391
280 init_node(p)
281 name_pointer p;
283 init_node (name_pointer p)
286 Section 34.
288 @x l.600
289 void   skip_limbo();
291 static void skip_limbo (void);
294 Section 35.
296 @x l.603
297 void
298 skip_limbo() {
300 static void
301 skip_limbo (void) {
304 Section 36.
306 @x l.625
307 unsigned
308 skip_TeX() /* skip past pure \TEX/ code */
310 static unsigned
311 skip_TeX (void) /* skip past pure \TEX/ code */
314 Section 38.
316 @x l.682 - Add declaration for versionstring.
317 #include <ctype.h> /* definition of |isalpha|, |isdigit| and so on */
321 Section 39.
323 @x l.696
324 eight_bits get_next();
326 static eight_bits get_next (void);
329 Section 40.
331 @x l.699
332 eight_bits
333 get_next() /* produces the next input token */
335 static eight_bits
336 get_next (void) /* produces the next input token */
339 Section 45.
341 @x l.780
342     else if (*loc=='>') if (*(loc+1)=='*') {loc++; compress(minus_gt_ast);}
343                         else compress(minus_gt); break;
345     else if (*loc=='>') {if (*(loc+1)=='*') {loc++; compress(minus_gt_ast);}
346                          else compress(minus_gt);} break;
349 @x l.800
350   while (isalpha(*++loc) || isdigit(*loc) || isxalpha(*loc) || ishigh(*loc));
352   while (isalpha((unsigned char)*++loc) || isdigit((unsigned char)*loc) || isxalpha(*loc) || ishigh(*loc));
355 @x l.835
356     *id_loc++='$'; *id_loc++=toupper(*loc); loc++;
358     *id_loc++='$'; *id_loc++=toupper((unsigned char)*loc); loc++;
361 Section 48.
363 @x l.870
364     if (c=='\\') if (loc>=limit) continue;
365       else if (++id_loc<=section_text_end) {
366         *id_loc = '\\'; c=*loc++;
367       }
369     if (c=='\\') {
370       if (loc>=limit) continue;
371       else if (++id_loc<=section_text_end) {
372         *id_loc = '\\'; c=*loc++;
373       }
374     }
377 Section 55.
379 @x l.971
380 void skip_restricted();
382 static void skip_restricted (void);
385 Section 56.
387 @x l.974
388 void
389 skip_restricted()
391 static void
392 skip_restricted (void)
395 Section 59.
397 @x l.1024
398 void phase_one();
400 static void phase_one (void);
403 Section 60.
405 @x l.1027
406 void
407 phase_one() {
409 static void
410 phase_one (void) {
413 Section 62.
415 @x l.1076
416 void C_xref();
418 static void C_xref (eight_bits);
421 Section 63.
423 @x l.1080
424 void
425 C_xref( spec_ctrl ) /* makes cross-references for \CEE/ identifiers */
426   eight_bits spec_ctrl;
428 static void
429 C_xref (eight_bits spec_ctrl) /* makes cross-references for \CEE/ identifiers */
432 Section 64.
434 @x l.1104
435 void outer_xref();
437 static void outer_xref (void);
440 Section 65.
442 @x l.1107
443 void
444 outer_xref() /* extension of |C_xref| */
446 static void
447 outer_xref (void) /* extension of |C_xref| */
450 Section 74.
452 @x l.1266
453 void section_check();
455 static void section_check (name_pointer);
458 Section 75.
460 @x l.1269
461 void
462 section_check(p)
463 name_pointer p; /* print anomalies in subtree |p| */
465 static void
466 section_check (name_pointer p) /* print anomalies in subtree |p| */
469 Section 78.
471 @x l.1322
472 void
473 flush_buffer(b,per_cent,carryover)
474 char *b;  /* outputs from |out_buf+1| to |b|,where |b<=out_ptr| */
475 boolean per_cent,carryover;
477 static void
478 flush_buffer (char *b, boolean per_cent, boolean carryover)
481 Section 79.
483 @x l.1351
484 void
485 finish_line() /* do this at the end of a line */
487 static void
488 finish_line (void) /* do this at the end of a line */
491 Section 81.
493 @x l.1383
494 void
495 out_str(s) /* output characters from |s| to end of string */
496 char *s;
498 static void
499 out_str (const char *s) /* output characters from |s| to end of string */
502 Section 83.
504 @x l.1402
505 void break_out();
507 static void break_out (void);
510 Section 84.
512 @x l.1405
513 void
514 break_out() /* finds a way to break the output line */
516 static void
517 break_out (void) /* finds a way to break the output line */
520 Section 86.
522 @x l.1440
523 void
524 out_section(n)
525 sixteen_bits n;
527 static void
528 out_section (sixteen_bits n)
531 Section 87.
533 @x l.1454
534 void
535 out_name(p,quote_xalpha)
536 name_pointer p;
537 boolean quote_xalpha;
539 static void
540 out_name (name_pointer p, boolean quote_xalpha)
543 Section 88.
545 @x l.1484
546 void
547 copy_limbo()
549 static void
550 copy_limbo (void)
553 Section 90.
555 @x l.1519
556 eight_bits
557 copy_TeX()
559 static eight_bits
560 copy_TeX (void)
563 Section 91.
565 @x l.1449
566 int copy_comment();
568 static int copy_comment (boolean, int);
571 Section 92.
573 @x l.1551
574 int copy_comment(is_long_comment,bal) /* copies \TEX/ code in comments */
575 boolean is_long_comment; /* is this a traditional \CEE/ comment? */
576 int bal; /* brace balance */
578 static int
579 copy_comment (boolean is_long_comment, int bal)
582 Section 93.
584 @x l.1608
585   if (phase==2) app_tok(*(loc++)) else loc++;
587   {if (phase==2) app_tok(*(loc++)) else loc++;}
590 Section 99.
592 @x l.1783
593 void
594 print_cat(c) /* symbolic printout of a category */
595 eight_bits c;
597 static void
598 print_cat (eight_bits c)
601 Section 106.
603 @x l.2138
604 void
605 print_text(p) /* prints a token list for debugging; not used in |main| */
606 text_pointer p;
608 static void
609 print_text (text_pointer p)
612 Section 109.
614 @x l.2263
615 void
616 app_str(s)
617 char *s;
619 static void
620 app_str (const char *s)
623 @x l.2270
624 void
625 big_app(a)
626 token a;
628 static void
629 big_app (token a)
632 @x l.2287
633 void
634 big_app1(a)
635 scrap_pointer a;
637 static void
638 big_app1 (scrap_pointer a)
641 Section 111.
643 @x l.2414
644 token_pointer
645 find_first_ident(p)
646 text_pointer p;
648 static token_pointer
649 find_first_ident (text_pointer p)
652 Section 112.
654 @x l.2446
655 void
656 make_reserved(p) /* make the first identifier in |p->trans| like |int| */
657 scrap_pointer p;
659 static void
660 make_reserved (scrap_pointer p)
663 Section 113.
665 @x l.2477
666 void
667 make_underlined(p)
668 /* underline the entry for the first identifier in |p->trans| */
669 scrap_pointer p;
671 static void
672 make_underlined (scrap_pointer p)
675 Section 114.
677 @x l.2495
678 void  underline_xref();
680 static void underline_xref (name_pointer);
683 Section 115.
685 @x l.2498
686 void
687 underline_xref(p)
688 name_pointer p;
690 static void
691 underline_xref (name_pointer p)
694 Section 164.
696 @x l.3003
697 void
698 reduce(j,k,c,d,n)
699 scrap_pointer j;
700 eight_bits c;
701 short k, d, n;
703 static void
704 reduce (scrap_pointer j, short k, eight_bits c, short d, short n)
707 Section 165.
709 @x l.3029
710 void
711 squash(j,k,c,d,n)
712 scrap_pointer j;
713 eight_bits c;
714 short k, d, n;
716 static void
717 squash (scrap_pointer j, short k, eight_bits c, short d, short n)
720 Section 169.
722 @x l.3096 -- rename local var, not to shadow param
723 { scrap_pointer k; /* pointer into |scrap_info| */
724   if (tracing==2) {
725     printf("\n%d:",n);
726     for (k=scrap_base; k<=lo_ptr; k++) {
727       if (k==pp) putxchar('*'); else putxchar(' ');
728       if (k->mathness %4 ==  yes_math) putchar('+');
729       else if (k->mathness %4 ==  no_math) putchar('-');
730       print_cat(k->cat);
731       if (k->mathness /4 ==  yes_math) putchar('+');
732       else if (k->mathness /4 ==  no_math) putchar('-');
734 { scrap_pointer k_l; /* pointer into |scrap_info| */
735   if (tracing==2) {
736     printf("\n%d:",n);
737     for (k_l=scrap_base; k_l<=lo_ptr; k_l++) {
738       if (k_l==pp) putxchar('*'); else putxchar(' ');
739       if (k_l->mathness %4 ==  yes_math) putchar('+');
740       else if (k_l->mathness %4 ==  no_math) putchar('-');
741       print_cat(k_l->cat);
742       if (k_l->mathness /4 ==  yes_math) putchar('+');
743       else if (k_l->mathness /4 ==  no_math) putchar('-');
746 Section 170.
748 @x l.3125
749 text_pointer
750 translate() /* converts a sequence of scraps */
752 static text_pointer
753 translate (void) /* converts a sequence of scraps */
756 Section 174.
758 @x l.3190
759 void
760 C_parse(spec_ctrl) /* creates scraps from \CEE/ tokens */
761   eight_bits spec_ctrl;
763 static void
764 C_parse (eight_bits spec_ctrl) /* creates scraps from \CEE/ tokens */
767 Section 181.
769 @x l.3421
770 void app_cur_id();
772 static void app_cur_id (boolean);
775 Section 182.
777 @x l.3424
778 void
779 app_cur_id(scrapping)
780 boolean scrapping; /* are we making this into a scrap? */
782 static void
783 app_cur_id (boolean scrapping)
786 Section 183.
788 @x l.3449
789 text_pointer
790 C_translate()
792 static text_pointer
793 C_translate (void)
796 Section 184.
798 @x l.3479
799 void
800 outer_parse() /* makes scraps from \CEE/ tokens and comments */
802 static void
803 outer_parse (void) /* makes scraps from \CEE/ tokens and comments */
806 Section 189.
808 @x l.3585
809 void
810 push_level(p) /* suspends the current level */
811 text_pointer p;
813 static void
814 push_level (text_pointer p) /* suspends the current level */
817 Section 190.
819 @x l.3605
820 void
821 pop_level()
823 static void
824 pop_level (void)
827 Section 192.
829 @x l.3627
830 eight_bits
831 get_output() /* returns the next token of output */
833 static eight_bits
834 get_output (void) /* returns the next token of output */
837 Section 193.
839 @x l.3664
840 void
841 output_C() /* outputs the current token list */
843 static void
844 output_C (void) /* outputs the current token list */
847 Section 194.
849 @x l.3687
850 void make_output();
852 static void make_output (void);
855 Section 195.
857 @x l.3690
858 void
859 make_output() /* outputs the equivalents of tokens */
861 static void
862 make_output (void) /* outputs the equivalents of tokens */
865 Section 202.
867 @x l.3927
868     if (b=='\'' || b=='"')
869       if (delim==0) delim=b;
870       else if (delim==b) delim=0;
872     if (b=='\'' || b=='"') {
873       if (delim==0) delim=b;
874       else if (delim==b) delim=0;
875     }
878 Section 205.
880 @x l.3951
881 void phase_two();
883 static void phase_two (void);
886 Section 206.
888 @x l.3955
889 void
890 phase_two() {
892 static void
893 phase_two (void) {
896 Section 212.
898 @x l.4074
899 void finish_C();
901 static void finish_C (boolean);
904 Section 213.
906 @x l.4077
907 void
908 finish_C(visible) /* finishes a definition or a \CEE/ part */
909   boolean visible; /* nonzero if we should produce \TEX/ output */
911 static void
912 finish_C (boolean visible) /* finishes a definition or a \CEE/ part */
915 Section 212.
917 @x l.4092
918         if (*out_ptr=='6') out_ptr-=2;
919         else if (*out_ptr=='7') *out_ptr='Y';
921       {
922         if (*out_ptr=='6') out_ptr-=2;
923         else if (*out_ptr=='7') *out_ptr='Y';
924       }
927 Section 221.
929 @x l.4245
930 void footnote();
932 static void footnote (sixteen_bits);
935 Section 222.
937 @x l.4248
938 void
939 footnote(flag) /* outputs section cross-references */
940 sixteen_bits flag;
942 static void
943 footnote (sixteen_bits flag) /* outputs section cross-references */
946 Section 225.
948 @x l.4294
949 void phase_three();
951 static void phase_three (void);
954 Section 226.
956 @x l.4297
957 void
958 phase_three() {
960 static void
961 phase_three (void) {
964 @x l.4309 Use binary mode for output files
965   if ((idx_file=fopen(idx_file_name,"w"))==NULL)
967   if ((idx_file=fopen(idx_file_name,"wb"))==NULL)
970 @x l.4324 Use binary mode for output files
971   if ((scn_file=fopen(scn_file_name,"w"))==NULL)
973   if ((scn_file=fopen(scn_file_name,"wb"))==NULL)
976 Section 235.
978 @x l.4440
979 strcpy(collate+1," \1\2\3\4\5\6\7\10\11\12\13\14\15\16\17");
980 /* 16 characters + 1 = 17 */
981 strcpy(collate+17,"\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37");
982 /* 16 characters + 17 = 33 */
983 strcpy(collate+33,"!\42#$%&'()*+,-./:;<=>?@@[\\]^`{|}~_");
984 /* 32 characters + 33 = 65 */
985 strcpy(collate+65,"abcdefghijklmnopqrstuvwxyz0123456789");
986 /* (26 + 10) characters + 65 = 101 */
987 strcpy(collate+101,"\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217");
988 /* 16 characters + 101 = 117 */
989 strcpy(collate+117,"\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237");
990 /* 16 characters + 117 = 133 */
991 strcpy(collate+133,"\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257");
992 /* 16 characters + 133 = 149 */
993 strcpy(collate+149,"\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277");
994 /* 16 characters + 149 = 165 */
995 strcpy(collate+165,"\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317");
996 /* 16 characters + 165 = 181 */
997 strcpy(collate+181,"\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337");
998 /* 16 characters + 181 = 197 */
999 strcpy(collate+197,"\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357");
1000 /* 16 characters + 197 = 213 */
1001 strcpy(collate+213,"\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377");
1003 strcpy((char *)collate+1," \1\2\3\4\5\6\7\10\11\12\13\14\15\16\17");
1004 /* 16 characters + 1 = 17 */
1005 strcpy((char *)collate+17,"\20\21\22\23\24\25\26\27\30\31\32\33\34\35\36\37");
1006 /* 16 characters + 17 = 33 */
1007 strcpy((char *)collate+33,"!\42#$%&'()*+,-./:;<=>?@@[\\]^`{|}~_");
1008 /* 32 characters + 33 = 65 */
1009 strcpy((char *)collate+65,"abcdefghijklmnopqrstuvwxyz0123456789");
1010 /* (26 + 10) characters + 65 = 101 */
1011 strcpy((char *)collate+101,"\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217");
1012 /* 16 characters + 101 = 117 */
1013 strcpy((char *)collate+117,"\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237");
1014 /* 16 characters + 117 = 133 */
1015 strcpy((char *)collate+133,"\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257");
1016 /* 16 characters + 133 = 149 */
1017 strcpy((char *)collate+149,"\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277");
1018 /* 16 characters + 149 = 165 */
1019 strcpy((char *)collate+165,"\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317");
1020 /* 16 characters + 165 = 181 */
1021 strcpy((char *)collate+181,"\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337");
1022 /* 16 characters + 181 = 197 */
1023 strcpy((char *)collate+197,"\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357");
1024 /* 16 characters + 197 = 213 */
1025 strcpy((char *)collate+213,"\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377");
1028 Section 237.
1030 @x l.4474
1031 void  unbucket();
1033 static void unbucket (eight_bits);
1036 Section 238.
1038 @x l.4477
1039 void
1040 unbucket(d) /* empties buckets having depth |d| */
1041 eight_bits d;
1043 static void
1044 unbucket (eight_bits d) /* empties buckets having depth |d| */
1047 Section 246.
1049 @x l.4594
1050 void section_print();
1052 static void section_print (name_pointer);
1055 Section 247.
1057 @x l.4597
1058 void
1059 section_print(p) /* print all section names in subtree |p| */
1060 name_pointer p;
1062 static void
1063 section_print (name_pointer p) /* print all section names in subtree |p| */
1066 Section 249.
1068 @x l.4620
1069 print_stats() {
1071 print_stats (void) {
1074 Section 250. (added)
1076 @x l.4643 - declare print_text(), so it can be 'used' in main.
1077 @** Index.
1079 @ @<Predecl...@>=
1080 static void print_text (text_pointer p);
1082 @** Index.