OSDN Git Service

get rid of tex.pool.
authormaqiyuan <maqiyuan@users.sourceforge.jp>
Mon, 10 Mar 2014 07:07:40 +0000 (15:07 +0800)
committermaqiyuan <maqiyuan@users.sourceforge.jp>
Mon, 10 Mar 2014 07:07:40 +0000 (15:07 +0800)
12 files changed:
src/texsourc/common.h
src/texsourc/itex.c
src/texsourc/local.c
src/texsourc/makefile
src/texsourc/openinou.c
src/texsourc/pascal.h
src/texsourc/subroute.c
src/texsourc/tex8.c
src/texsourc/tex9.c
src/texsourc/texd.h
src/texsourc/texmfmem.h
src/texsourc/yandy_pool.c [new file with mode: 0644]

index 4748cd5..ec3ec30 100644 (file)
@@ -67,9 +67,9 @@
    This type is set automatically to `float' by configure if a small TeX
    is built.  */
 #ifndef GLUERATIO_TYPE
-#define GLUERATIO_TYPE double
+  #define GLUERATIO_TYPE double
 #endif
-typedef GLUERATIO_TYPE glueratio;
+  typedef GLUERATIO_TYPE glueratio;
 #endif
 \f
 /* Declarations for the routines we provide ourselves.  */
@@ -77,31 +77,12 @@ typedef GLUERATIO_TYPE glueratio;
 extern integer zround (double);                        /* extern integer zround(); */
 
 /* File routines.  */
-extern FILE *xfopen_pas (unsigned char *, char *);     /* extern FILE *xfopen_pas(); */
-extern bool test_eof (FILE *);
-extern bool eoln (FILE *);                     /* extern bool eoln(); */
-extern bool open_input (FILE **, path_constant_type, char *);
-/* extern bool open_input(); */
-extern bool open_output (FILE **, char *);
-/* extern bool open_output(); */
-extern void fprintreal (FILE *, double, int, int);
-/* extern void fprintreal(); */
-extern void printpascalstring (char *); /* extern void printpascalstring(); */
-extern void errprintpascalstring (char *); /* extern void errprintpascalstring(); */
-extern integer inputint (FILE *);      /* extern integer inputint(); */
-extern void zinput3ints (integer *, integer *, integer *);
-/* extern void zinput3ints(); */
-extern void set_paths (int);           /* extern void set_paths(); */
-// extern void check_fclose (FILE *);  /* in openinou.c 93/Nov/20 */
-extern int check_fclose (FILE *);      /* in openinou.c 93/Nov/20 */
-
-/* String routines.  */
-/* extern void makesuffixpas(); */ /* not defined, not used ? bkph */
-extern void make_c_string (char **); /* extern void make_c_string(); */
-extern void make_pascal_string (char **); /* extern void make_pascal_string(); */
-extern void null_terminate (char *); /* extern void null_terminate(); */
-extern void space_terminate (char *); /* extern void space_terminate(); */
-
+extern bool test_eof (FILE * file);
+extern bool eoln (FILE * file);
+extern bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode);
+extern bool open_output (FILE **f, char *fopen_mode);
+extern void set_paths (int path_bits);
+extern int check_fclose (FILE * f);    /* in openinou.c 93/Nov/20 */
 
 /* Argument handling, etc.  */
 /* extern int argc; */
index 8f0671a..2a29429 100644 (file)
@@ -2193,7 +2193,7 @@ void show_frozen (void)
 /* void texbody()  */
 int texbody (void)          /* now returns a value --- bkph */
 { 
-  history = 3; 
+  history = 3;
 
   set_paths(TEXFORMATPATHBIT + TEXINPUTPATHBIT + TEXPOOLPATHBIT + TFMFILEPATHBIT); 
 
@@ -2703,6 +2703,7 @@ void do_initex (void)
 /* adjusted to try both "tex.pool" and "tex.poo" 95/Feb/19               */
 /* I have added a texpool file, but I need merge the pool to the binary  */
 /* lots of things updates the kpathsea sources -- Clerk Ma               */
+
 bool get_strings_started (void)
 {
   register bool Result;
@@ -2723,35 +2724,45 @@ bool get_strings_started (void)
     for_end = 255;
     if (k <= for_end) 
       do {
-        if (((k < 32) || (k > 126))) {
+        if (((k < 32) || (k > 126)))
+        {
           append_char('^');
           append_char('^');
           if (k < 64)
             append_char(k + 64);
           else if (k < 128)
             append_char(k - 64);
-          else {
+          else
+          {
             l = k / 16;
-            if (l < 10) {
-              str_pool[pool_ptr] = l + 48; /* '0' */
+            if (l < 10)
+            {
+              str_pool[pool_ptr] = l + '0';
               incr(pool_ptr);
-            } else {
+            }
+            else
+            {
               str_pool[pool_ptr] = l + 87; /* 'a' - 10 */
               incr(pool_ptr);
             }
             l = k % 16;
-            if (l < 10) {
-              str_pool[pool_ptr] = l + 48; /* '0' */
+            if (l < 10)
+            {
+              str_pool[pool_ptr] = l + '0';
               incr(pool_ptr);
-            } else {
+            }
+            else
+            {
               str_pool[pool_ptr] = l + 87; /* 'a' - 10 */
               incr(pool_ptr);
             }
           }
-        } else append_char(k);
+        }
+        else append_char(k);
         g = make_string();
       } while(k++ < for_end);
   }
+#ifdef STDPOOL
   vstrcpy((char *) name_of_file + 1, pool_name);
   name_of_file[0] = ' ';
   name_of_file[strlen(pool_name) + 1] = ' '; 
@@ -2772,15 +2783,10 @@ bool get_strings_started (void)
     c = false;
     do {
       {
-/* if (eof(pool_file)) */ /* feof(pool_file)??? */
         if (test_eof(pool_file)) {
-          ;
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
           show_line("! string pool file has no check sum.\n", 1);
-/* added following bit of explanation 96/Jan/16 */
           if (! knuth_flag)
             bad_formator_pool(string_file, "the pool file", "TEXPOOL");
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
           (void) a_close(pool_file);
           Result = false;
           return(Result);
@@ -2792,14 +2798,10 @@ bool get_strings_started (void)
           a = 0;
           k = 1;
           while (true) {
-            if ((xord[n]< 48)||(xord[n]> 57)) {
-              ; 
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
+            if ((xord[n]< 48) || (xord[n]> 57)) {
               show_line("! string pool file check sum doesn't have nine digits.\n", 1);
-/* added following bit of explanation 96/Jan/16 */
               if (!knuth_flag)
                 bad_formator_pool(string_file, "the pool file", "TEXPOOL");
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
               (void) a_close(pool_file);
               Result = false;
               return(Result);
@@ -2814,37 +2816,31 @@ bool get_strings_started (void)
 lab30: 
           if (a != BEGINFMTCHECKSUM) {
             ; 
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
             show_line("! string pool check sum doesn't match; tangle me again.\n", 1);
-/* added following bit of explanation 96/Jan/16 */
             if (!knuth_flag)
               bad_formator_pool(string_file, "the pool file", "TEXPOOL");
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
             (void) a_close(pool_file);
             Result = false;
             return(Result);
           }
           c = true;
         } else {
-          if ((xord[m] < 48)||(xord[m] > 57)||(xord[n] < 48)||(xord[n] > 57)) 
+          if ((xord[m] < 48) || (xord[m] > 57) || (xord[n] < 48) || (xord[n] > 57)) 
           {
-            ; 
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
             show_line("! string pool line doesn't begin with two digits.\n", 1);
-/* added following bit of explanation 96/Jan/16 */
             if (! knuth_flag)
               bad_formator_pool(string_file, "the pool file", "TEXPOOL");
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
             (void) a_close(pool_file);
             Result = false;
             return(Result);
           }
-          l = xord[m]* 10 + xord[n]- 48 * 11;
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
+          l = xord[m] * 10 + xord[n] - 48 * 11;
+
 #ifdef ALLOCATESTRING
 /* can freely extend memory, so we need not be paranoid - stringvacancies */
 /* if (pool_ptr + l + stringvacancies > current_pool_size)*/
-          if (pool_ptr + l + stringmargin > current_pool_size) {
+          if (pool_ptr + l + stringmargin > current_pool_size)
+          {
             if (trace_flag)
               show_line("String margin reallocation\n", 0);
 /* str_pool =  realloc_str_pool (pool_ptr + l + stringvacancies */
@@ -2885,8 +2881,6 @@ lab30:
     (void) a_close(pool_file);
     Result = true;
   } else {
-    ; 
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
     sprintf(log_line, "! I can't read %s.\n", pool_name);
     show_line(log_line, 1);
     if (!knuth_flag)
@@ -2895,6 +2889,15 @@ lab30:
     Result = false;
     return(Result); 
   }
+#endif
+  g = load_pool_strings (pool_size - stringvacancies);
+  if (g == 0)
+  {
+    fprintf(stdout , "%s\n",  "! You have to increase POOLSIZE." );
+    Result = false;
+    return Result;
+  }
+  Result = true;
   return Result;
 }
 #endif /* INITEX */
index 73b600a..730c637 100644 (file)
@@ -499,14 +499,16 @@ int read_xchr_file (char *filename, int flag, char *argv[])
 /* Following may be useful if link without floating point emulation */
 
 #ifdef DEBUG
-void testfloating (void) {
+void testfloating (void)
+{
 /*  double x = 1.0; */
 /*  double dx = DBL_EPSILON; */
   double dx = 1.0;
   double dxold = 0.0;
   int k = 0;
 /*  while (x + dx != 1.0) { */
-  while (1.0 + dx != 1.0) {
+  while (1.0 + dx != 1.0)
+  {
     dxold = dx;
     dx = dx / 2.0;
     k++;
@@ -782,11 +784,13 @@ int allocate_tries (int trie_max)
   trie_trl = (halfword *) malloc (roundup(nl));
   trie_tro = (halfword *) malloc (roundup(no));
   trie_trc = (quarterword *) malloc (roundup(nc));
-  if (trie_trl == NULL || trie_tro == NULL || trie_trc == NULL) {
+  if (trie_trl == NULL || trie_tro == NULL || trie_trc == NULL)
+  {
     memory_error("hyphen trie", n);
     return -1;
   }
-  if (trace_flag) {
+  if (trace_flag)
+  {
     sprintf(log_line, "Addresses trie_trl %d trie_tro %d trie_trc %d\n", trie_trl, trie_tro, trie_trc);
     show_line(log_line, 0);
   }
@@ -816,7 +820,7 @@ int realloc_hyphen (int hyphen_prime)
 
   if (!prime(hyphen_prime))
   {
-    sprintf(log_line, "ERROR: non-prime hyphen exception number (%d)\n", hyphen_prime); 
+    sprintf(log_line, "ERROR: non-prime hyphen exception number (%d)\n", hyphen_prime);
     show_line(log_line, 1);
 //    exit (1);
     return -1;
@@ -835,11 +839,14 @@ int realloc_hyphen (int hyphen_prime)
 /*  initially hyph_list will be NULL so this acts like malloc */
 /*  hyph_list = (halfword *) malloc (nl); */
   hyph_list = (halfword *) REALLOC (hyph_list, nl);   /* 94/Mar/24 */
-  if (hyph_word == NULL || hyph_list == NULL) {
+
+  if (hyph_word == NULL || hyph_list == NULL)
+  {
     memory_error("hyphen exception", n);
     return -1;
   }
-  if (trace_flag) {
+  if (trace_flag)
+  {
     sprintf(log_line, "Addresses hyph_word %d hyph_list %d\n", hyph_word, hyph_list);
     show_line(log_line, 0);
   }
@@ -855,18 +862,18 @@ int realloc_hyphen (int hyphen_prime)
   for (k = 0; k <= hyphen_prime; k++) hyph_list[k]= 0; 
 #endif
   hyph_count = 0;   /* or use reset_hyphen() in itex.c */
-  if (current_prime != 0) {
-    update_statistics ((int) hyph_word, nw, 
-      (current_prime + 1) * sizeof(str_number));
-    update_statistics ((int) hyph_list, nl, 
-      (current_prime + 1) * sizeof(halfword));
+  if (current_prime != 0)
+  {
+    update_statistics ((int) hyph_word, nw, (current_prime + 1) * sizeof(str_number));
+    update_statistics ((int) hyph_list, nl, (current_prime + 1) * sizeof(halfword));
   }
-  else {
+  else
+  {
     update_statistics ((int) hyph_word, nw, 0);
     update_statistics ((int) hyph_list, nl, 0);
   }
   current_prime = hyphen_prime;
-  if (trace_flag)  probe_show();     /* 94/Mar/25 */
+  if (trace_flag) probe_show();     /* 94/Mar/25 */
   return 0;               // success
 }
 #endif
@@ -890,7 +897,8 @@ memory_word *allocate_main_memory (int size)
 /*  Could we avoid this by detecting presence of & before allocating ? */
 /*  Also, if its already large enough, maybe we can avoid this ? */
 /*  don't bother if current_mem_size == mem_max - mem_start ? */
-  if (mainmemory != NULL) {
+  if (mainmemory != NULL)
+  {
 /*    free(mainmemory); */
 /*    mainmemory = NULL; */
     if (trace_flag) show_line("Reallocating initial memory allocation\n", 1);
index 131e135..924c23d 100644 (file)
@@ -41,7 +41,7 @@ LFLAGS=/MAP /MACHINE:X86
 
 objs = texmf.obj itex.obj openinou.obj subroute.obj local.obj \
        tex0.obj tex1.obj tex2.obj tex3.obj tex4.obj \
-       tex5.obj tex6.obj tex7.obj tex8.obj tex9.obj yandytex.res
+       tex5.obj tex6.obj tex7.obj tex8.obj tex9.obj yandy_pool.obj yandytex.res
 
 # ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ###
 # # LIBHARU
@@ -49,7 +49,7 @@ objs = texmf.obj itex.obj openinou.obj subroute.obj local.obj \
 
 texmf.exe: $(objs) 
        $(LINK) $(LFLAGS) texmf itex openinou subroute local \
-       tex0 tex1 tex2 tex3 tex4 tex5 tex6 tex7 tex8 tex9 yandytex.res
+       tex0 tex1 tex2 tex3 tex4 tex5 tex6 tex7 tex8 tex9 yandy_pool yandytex.res
        copy texmf.exe yandytex.exe
        del ..\yandy\bin\texmf.exe
        copy texmf.exe ..\yandy\bin\texmf.exe
@@ -109,6 +109,9 @@ tex8.obj: tex8.c \
 tex9.obj: tex9.c \
        texd.h texmf.h texmfmem.h coerce.h lib.h config.h common.h
 
+yandy_pool.obj: yandy_pool.c \
+       texd.h texmf.h texmfmem.h coerce.h lib.h config.h common.h
+
 .SUFFIXES:
 .SUFFIXES: .obj .c
 
index b0ff369..f1ea82a 100644 (file)
@@ -100,12 +100,14 @@ char *xconcat3 (char *buffer, char *s1, char *s2, char *s3)
   int n1 = strlen(s1);
   int n2 = strlen(s2);
   int n3 = strlen(s3);
-  if (buffer == s3) {     /* treat special case of overlap */
+  if (buffer == s3)
+  {     /* treat special case of overlap */
     memmove (buffer + n1 + n2, buffer, n3 + 1); /* trailing null ! */
     strncpy (buffer, s1, n1);
     strncpy (buffer + n1, s2, n2);
   }
-  else {
+  else
+  {
     strcpy(buffer, s1);
     strcat(buffer + n1, s2);
     strcat(buffer + n1 + n2, s3);
@@ -218,7 +220,7 @@ void retwiddle (unsigned char *s)
    string. We return whether or not the open succeeded.  If it did, we
    also set `name_length' to the length of the full pathname that we
    opened.  */
-
+/* in lib/openclose.c */
 bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode)
 {
   bool openable = false;
@@ -284,7 +286,7 @@ bool open_input (FILE **f, path_constant_type path_index, char *fopen_mode)
   
   if (open_trace_flag)
   {
-    sprintf(log_line, " Open `%s' for input ", name_of_file+1); /* Pascal */
+    sprintf(log_line, " Open `%s' for input ", name_of_file + 1); /* Pascal */
     show_line(log_line, 0);
   }
 
index f9fcecc..e45aa5e 100644 (file)
@@ -27,7 +27,7 @@
    Specifically, a test in diag_round (in Metafont) on a quarterword
    comes out differently without the cast, thus causing the trap test to
    fail.  (A path at line 86 is constructed slightly differently).  */
-#define        abs(x) ((integer)(x)>=0?(integer)(x):(integer)-(x))
+#define        abs(x) ((integer)(x) >= 0 ? (integer)(x) : (integer)-(x))
 
 /* above conflicts with math.h ... */
 
@@ -39,9 +39,6 @@
 #define trunc(x)       ((integer) (x))
 
 /* File routines.  */
-#define        reset(f, n, mode)       ((f) ? fclose (f) : 0), \
-                        (f) = xfopen_pas ((char *) (n), "r" mode)
-#define rewrite(f, n, mode)    (f) = xfopen_pas ((char *) (n), "w" mode)
 #define flush(f)       (void) fflush (f)
 
 /* flush - used only in itex.c and conflicts with io.h -- bkph 93/Nov/26 */
 #define        decr(x)         --(x)
 #define        incr(x)         ++(x)
 
-/* PatGen 2 uses this.  */
-#define        input2ints(a, b)  zinput2ints (&a, &b)
-
-/* We need this routine only if TeX is being debugged.  */
-#define        input3ints(a, b, c)  zinput3ints (&a, &b, &c)
-
 /* Pascal has no address-of operator, and we need pointers to integers
    to set up the option table.  */
 /* #define addressofint(x)     ((int *) &(x)) */ /* not used */
@@ -70,9 +61,6 @@
 
 /* above conflicts with math.h ... */
 
-/* The fixwrites program outputs this.  */
-#define        Fputs(f, s)     (void) fputs (s, f)
-
 /* Tangle removes underscores from names, but the `struct option'
    structure has a field name with an underscore.  So we have to put it
    back.  Ditto for the other names.  */
@@ -85,9 +73,6 @@
 /* We need a new type for the argument parsing, too.  */
 typedef struct option getoptstruct;
 
-#define printreal(r, n, m)  fprintreal (stdout, r, n, m)
-#define        putbyte(x, f)   putc ((char) (x) & 255, f)
-
 #define        toint(x)        ((integer) (x))
 
 /* For throwing away input from the file F.  */
@@ -132,10 +117,4 @@ typedef FILE *text, *file_ptr, *alpha_file;
 /* #define a_close(f)  if (f) (void) check_fclose (f) */
 #define a_close(f)     check_fclose (f)
 
-#ifdef BibTeX
-/* See bibtex.ch for why these are necessary.  */
-extern FILE *standardinput;
-extern FILE *standardoutput;
-#endif
-
 #endif /* not PASCAL_H */
index a28d9e1..4f70b36 100644 (file)
@@ -97,7 +97,7 @@ char *map_lookup (map_type map, char *key);
 
 // the following do *not* use MALLOC
 
-extern char * xconcat  (char *buffer, char *s1, char *s2);            /* openinou.c */
+extern char * xconcat  (char *buffer, char *s1, char *s2);           /* openinou.c */
 extern char * xconcat3 (char *buffer, char *s1, char *s2, char *s3); /* openinou.c */
 
 /////////////////////////////////////////////////////////////////////////
@@ -129,7 +129,6 @@ void uexit (int unix_code)
 /*<----*/
   exit(final_code);
 }
-
 // round a double being careful about very large and very small values
 // used only in tex0.c, a Pascal function
 /* texk/web2c/lib/zround.c */
@@ -164,9 +163,7 @@ integer zround (double r)
 
   return i;
 }
-
 /****************************************************************************/
-
 // malloc with error checking and error message
 /* kpathsea/xmalloc.c */
 void * xmalloc (unsigned size)
@@ -282,7 +279,6 @@ string concat3 (string s1, string s2, string s3)
 #endif
   return answer;
 }
-
 /***********************************************************************/
 // following used only in itex.c on pool file
 /* Return true if we're at the end of FILE, else false.  This implements */
@@ -369,7 +365,6 @@ int xfclose (FILE *f, char *filename)
   }
   return 0;
 }
-
 /********************************************************************************/
 // following used only in map_lookup
 // return pointer to start of extension --- or NULL if there isn't one
@@ -426,7 +421,7 @@ string extend_filename (string name, string default_suffix)
 #define BLOCK_SIZE 64
 
 // this returns newly allocated character string
-
+/* kpathsea/line.c */
 char *read_line (FILE * f)
 {
   int c;
@@ -675,7 +670,7 @@ void set_paths (int path_bits)
 
 /*  changed to take C string 97/June/5 - used to take Pascal strings */
 /*  now expects null terminated strings */
-
+/* used only in open_input.*/
 bool test_read_access (unsigned char *name, int path_index)
 { 
 #ifdef BUILDNAMEDIRECT
@@ -807,17 +802,13 @@ bool test_read_access (unsigned char *name, int path_index)
 }
 
 /********************************************************************/
-
-#define STREQ(s1, s2) (strcmp (s1, s2) == 0)
-
 /* from fontmap.c */
-
 /* Fontname mapping.  We use a straightforward hash table.  */
 
 #define MAP_SIZE 199
 
 /* The hash function.  We go for simplicity here.  */
-
+/* NOT USED! */
 static unsigned map_hash (char * key)
 {
   unsigned n = 0;
@@ -830,14 +821,14 @@ static unsigned map_hash (char * key)
 }
 
 /* Look up STR in MAP.  Return the corresponding `value' or NULL.  */
-
+/* NOT USED! */
 static char *map_lookup_str (map_type map, char *key)
 {
   map_element_type *p;
   unsigned n = map_hash (key);
 
   for (p = map[n]; p != NULL; p = p->next)
-    if (STREQ (key, p->key)) return p->value;
+    if (strcmp(key, p->key) == 0) return p->value;
 
   return NULL;
 }
@@ -845,7 +836,7 @@ static char *map_lookup_str (map_type map, char *key)
 
 /* Look up KEY in MAP; if it's not found, remove any suffix from KEY and
    try again.  */
-
+/* NOT USED! */
 char *map_lookup (map_type map, char *key)
 {
   string suffix = find_suffix (key);
@@ -875,14 +866,14 @@ char *map_lookup (map_type map, char *key)
 
 /* If KEY is not already in MAP, insert it and VALUE.  */
 /* This was very buggy (when hash codes collided) - rewritten 94/March/18 */
-
+/* NOT USED! */
 void map_insert (map_type map, char *key, char *value)
 {
   unsigned n = map_hash (key);
   map_element_type **ptr = &map[n];
 /*  map_element_type ***trailer = &p; */
 
-  while (*ptr != NULL && ! STREQ (key, (*ptr)->key)) {
+  while (*ptr != NULL && !(strcmp(key, (*ptr)->key) == 0)) {
 /*       *p = (*p)->next; */
     ptr = &((*ptr)->next);
 /*       trailer = &p; */
@@ -915,7 +906,7 @@ void map_insert (map_type map, char *key, char *value)
 #ifndef MALLOCLINE
   #define MAXLINE 256
 #endif
-
+/* NOT USED! */
 int map_file_parse (map_type map, char *map_filename)
 {
   char *l;
@@ -981,14 +972,13 @@ int map_file_parse (map_type map, char *map_filename)
   (void) fclose (f);    // we don't care about errors at this stage
   return 0;       // success
 }
-
+/* NOT USED! */
 void unshroud_string (char *, char *, int); /* in texmf.c */
-
 /* Look for the file `texfonts.map' in each of the directories in
    DIR_LIST.  Entries in earlier files override later files.  */
 
 /* This is probably quite silly - but what the hell lets leave it in */
-
+/* NOT USED! */
 map_type map_create (string *dir_list)
 {
   map_type map = (map_type) xcalloc (MAP_SIZE, sizeof (map_element_type *));
@@ -1023,7 +1013,6 @@ map_type map_create (string *dir_list)
   }
   return map;
 }
-
 /**********************************************************************/
 
 /* #pragma optimize ("g", off) *//* try and avoid compiler bug here _dos_find */
@@ -1035,7 +1024,7 @@ map_type map_create (string *dir_list)
 /* see whether a file exists, is readable and is not a directory */
 /* 1994/Feb/13 may be faster than `access' in `readable' */
 /* returns NULL or the name filename passed in ??? */
-
+/* kpathsea/file_p.c */
 char *file_p (string fn)
 {
   struct _finddata_t fi;
@@ -1097,7 +1086,7 @@ char *file_p (string fn)
 
 /* NOTE: _dos_find... prevents running under Windows NT ??? */
 /* and presently dir_method = true so we do use this _dos_find_first */
-
+/* kpathsea/dir.c */
 bool dir_p (string fn)
 {
   FILE *test;
@@ -1226,7 +1215,7 @@ bool dir_p (string fn)
 #ifdef BUILDNAMEDIRECT
 
 /* this string allocation / concatination is silly - use fixed buffer! */
-
+/* NOT USED£¡ */
 int xfind_path_filename (string buffer, string filename, string * dir_list)
 {
   string found_name = NULL;
@@ -1343,9 +1332,7 @@ int xfind_path_filename (string buffer, string filename, string * dir_list)
 }
 
 #else
-
 /* We are dealing with a C string here for filename presumably ... */
-
 /* Also, this returns a string that was allocated --- */
 /* unless it happens to equal the filename sent in ... */
 /* this needs to be freed later - unless it happens to be ... */
@@ -1478,6 +1465,7 @@ string find_path_filename (string filename,  string * dir_list)
 /* returns NULL or the file name passed in ??? */
 
 /* static string readable (name) */
+/* kpathsea/readable.c */
 string readable (string name)
 {
   string ret;
@@ -2025,7 +2013,7 @@ static unsigned saved_paths_length = 0;
    unlikely to ever be more than a dozen or so elements long.  We don't
    bother to check here if PATH has already been saved; we always add it
    to our list.  */
-
+/* NOT USED! */
 void save_dir_list (string path,  string *dir_list)
 {
 //  saved_paths_length++;
@@ -2036,7 +2024,7 @@ void save_dir_list (string path,  string *dir_list)
 }
 
 /* When we retrieve, just check the list in order.  */
-
+/* NOT USED! */
 string *find_dir_list (string path)
 {
   unsigned p;
@@ -2056,7 +2044,7 @@ string *find_dir_list (string path)
 }
 
 /* Unixify filename and path (turn \ into /) --- assumes null terminated */
-
+/* NEED HACK! */
 char *unixify (char * t)
 {
   char * s = t;
@@ -2756,4 +2744,4 @@ int getopt (int argc, char *const *argv, const char *optstring)
 /* clean up command line option error output */
 /* disallow all the weird combinations like -- */
 
-//////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////
\ No newline at end of file
index c4ccfb7..fa2b1c5 100644 (file)
@@ -730,7 +730,7 @@ void new_font_(small_number a)
 
 /* paragraph 1258 */
   name_in_progress = true; 
-  if (scan_keyword("at"))  /* at */
+  if (scan_keyword("at"))
   {
     scan_dimen(false, false, false); 
     s = cur_val; 
@@ -745,10 +745,10 @@ void new_font_(small_number a)
       s = 10 * 65536L;    /* 10pt */
     } 
   } 
-  else if (scan_keyword("scaled")) /* scaled */
+  else if (scan_keyword("scaled"))
   {
-    scan_int(); 
-    s = - (integer) cur_val; 
+    scan_int();
+    s = - (integer) cur_val;
     if ((cur_val <= 0) || (cur_val > 32768L))
     {
       print_err("Illegal magnification has been changed to 1000");
@@ -758,10 +758,13 @@ void new_font_(small_number a)
     }
   }
   else
-    s = -1000; 
-  name_in_progress = false; 
+    s = -1000;
+/* scan_keyword("weight"); */
+/* scan_keyword("style");*/
+/* scan_keyword("") */
+  name_in_progress = false;
 
-  flushablestring = str_ptr - 1; 
+  flushablestring = str_ptr - 1;
   if (trace_flag)
   {         /* debugging stuff only 98/Oct/5 */
     int i, k1, k2, l1, l2;
@@ -863,16 +866,21 @@ lab50:
   hash[(hash_size + hash_extra + 524) + f].v.RH = t; /* 96/Jan/10 */
 }
 /* sec 1265 */
-void new_interaction (void) 
-{ 
-  print_ln(); 
-  interaction = cur_chr; 
-  if (interaction == batch_mode) selector = 16; 
-  else selector = 17; 
-  if (log_opened) selector = selector + 2; 
+void new_interaction (void)
+{
+  print_ln();
+  interaction = cur_chr;
+
+  if (interaction == batch_mode)
+    selector = 16; 
+  else
+    selector = 17;
+
+  if (log_opened)
+    selector = selector + 2;
 }
 /* sec 1270 */
-void do_assignments (void) 
+void do_assignments (void)
 {
   while (true)
   {
index a0f90cd..6d4a8c9 100644 (file)
 
 /* end of the old tex8.c */
 /* sec 1284 */
-void give_err_help (void) 
+void give_err_help (void)
 {
-  token_show(err_help); 
+  token_show(err_help);
 }
 /* sec 0524 */
-bool open_fmt_file (void) 
+bool open_fmt_file (void)
 {
   register bool Result;
   integer j;
   j = cur_input.loc_field;
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
+
 /* For Windows NT, lets allow + instead of & for format specification */
-/* if (buffer[cur_input.loc_field]== 38) */  /* 95/Jan/22 */
+/*  User specified a format name on the command line                  */
   if (buffer[cur_input.loc_field]== '&' || buffer[cur_input.loc_field]== '+')
   {
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-/*  User specified a format name on the command line */
     incr(cur_input.loc_field);
     j = cur_input.loc_field;
-    buffer[last]= 32;
-    while (buffer[j]!= 32) incr(j);
+    buffer[last]= ' ';
+    while (buffer[j] != ' ')
+      incr(j);
     pack_buffered_name(0, cur_input.loc_field, j - 1);
+
     if (w_open_in(fmt_file))
       goto lab40;  // format file opened OK
   
 //  format file open failed
-  if (knuth_flag) {
+  if (knuth_flag)
+  {
     (void) sprintf(log_line, "%s;%s\n", "Sorry, I can't find that format", " will try the default.");
     show_line(log_line, 1);
-  } else {
+  }
+  else
+  {
     char *s = log_line;
     name_of_file[name_length + 1] = '\0';
     (void) sprintf(s, "%s (%s);%s\n", "Sorry, I can't find that format", name_of_file+1, " will try the default."); 
@@ -66,26 +69,33 @@ bool open_fmt_file (void)
     s += strlen(s);
     {
       char *t;            /* extra info 97/June/13 */
-      if ((t = grabenv("TEXFORMATS")) != NULL) {
+      if ((t = grabenv("TEXFORMATS")) != NULL)
+      {
           sprintf(s, "(%s=%s)\n", "TEXFORMATS", t);
-      } else {
+      }
+      else
+      {
         sprintf(s, "%s environment variable not set\n", "TEXFORMATS");
       }
     }
     show_line(log_line, 1); // show all three lines at once
   }
 #ifndef _WINDOWS
-    fflush(stdout); 
+    fflush(stdout);
 #endif
-  } 
-/*  Try the default format (either because no format specified or failed) */
-  pack_buffered_name(format_default_length - 4, 1, 0); 
-  if (! w_open_in(fmt_file)) {
-    ;
-    if (knuth_flag) {
+  }
+/* Try the default format (either because no format specified or failed) */
+  pack_buffered_name(format_default_length - 4, 1, 0);
+
+  if (!w_open_in(fmt_file))
+  {
+    if (knuth_flag)
+    {
       (void) sprintf(log_line, "%s!\n", "I can't find the default format file");
       show_line(log_line, 1);
-    } else {
+    }
+    else
+    {
       char *s = log_line;
       name_of_file[name_length + 1] = '\0';
       (void) sprintf(s, "%s (%s)!\n", "I can't find the default format file", name_of_file + 1);
@@ -95,16 +105,19 @@ bool open_fmt_file (void)
       s += strlen(s);
       {
         char *t;            /* extra info 97/June/13 */
-        if ((t = grabenv("TEXFORMATS")) != NULL) {
+        if ((t = grabenv("TEXFORMATS")) != NULL)
+        {
           sprintf(s, "(%s=%s)\n", "TEXFORMATS", t);
-        } else {
+        }
+        else
+        {
           sprintf(s, "%s environment variable not set\n", "TEXFORMATS");
         }
       }
       show_line(log_line, 1);   // show all three lines at once
     }
     Result = false;
-    return(Result); 
+    return(Result);
   }
 lab40:
   cur_input.loc_field = j;
@@ -114,8 +127,8 @@ lab40:
 /**************************************************************************/
 void print_char_string (unsigned char *s)
 {
-  // 2000 Jun 18
-  while (*s > 0) print_char(*s++);
+  while (*s > 0)
+    print_char(*s++);
 }
 void show_font_info (void);   // now in local.c
 extern int closed_already;     // make sure we don't try this more than once
@@ -123,138 +136,135 @@ extern int closed_already;     // make sure we don't try this more than once
 /* done in closefilesandterminate_regmem  in coerce.h */
 /* sec 1333 */
 void close_files_and_terminate (void)
-{ 
+{
   integer k; 
 
-  if (closed_already++) {
+  if (closed_already++)
+  {
     show_line("close_files_and_terminated already ", 0);
     return;     // sanity check
   }
+
   if (trace_flag)
     show_line("\nclose_files_and_terminate ", 0);
 //  close all open files
   for (k = 0; k <= 15; k++)
-    if (write_open[k]) {
+    if (write_open[k])
+    {
       (void) a_close(write_file[k]);
     }
 
 #ifdef STAT
 /* if tracing_stats>0 then @<Output statistics about this job@>; */
 /*  if (eqtb[(hash_size + 3194)].cint > 0) */
-  if (tracing_stats > 0 ||
-     verbose_flag != 0)  /* 93/Nov/30 - bkph */
-  if (log_opened) {
+  if (tracing_stats > 0 || verbose_flag != 0)  /* 93/Nov/30 - bkph */
+    if (log_opened)
+    {
 /*   used to output paragraph breaking statistics here */
-    (void) fprintf(log_file, "%c\n", ' ');
-    (void) fprintf(log_file, "\n");
-    (void) fprintf(log_file, "%s%s\n", "Here is how much of TeX's memory", " you used:"); 
-    (void) fprintf(log_file, "%c%ld%s", ' ', (long)str_ptr - init_str_ptr, " string"); 
-    if (str_ptr != init_str_ptr + 1)
-      (void) putc('s',  log_file);
+      (void) fprintf(log_file, "%c\n", ' ');
+      (void) fprintf(log_file, "\n");
+      (void) fprintf(log_file, "%s%s\n", "Here is how much of TeX's memory", " you used:");
+      (void) fprintf(log_file, "%c%ld%s", ' ', (long)str_ptr - init_str_ptr, " string");
+      if (str_ptr != init_str_ptr + 1)
+        (void) putc('s',  log_file);
 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
 #ifdef ALLOCATESTRING
-  if (show_current)
-    (void) fprintf(log_file, "%s%ld\n", " out of ", (long) current_max_strings - init_str_ptr); 
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%s%ld\n", " out of ", (long) current_max_strings - init_str_ptr);
+      else
 #endif
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-    (void) fprintf(log_file, "%s%ld\n", " out of ", (long) max_strings - init_str_ptr); 
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
+        (void) fprintf(log_file, "%s%ld\n", " out of ", (long) max_strings - init_str_ptr);
 #ifdef ALLOCATESTRING
-  if (show_current)
-    (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long) pool_ptr - init_pool_ptr, " string characters out of ", (long) current_pool_size - init_pool_ptr);
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long) pool_ptr - init_pool_ptr, " string characters out of ", (long) current_pool_size - init_pool_ptr);
+      else
 #endif
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-    (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long) pool_ptr - init_pool_ptr, " string characters out of ", (long) pool_size - init_pool_ptr);
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
+        (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long) pool_ptr - init_pool_ptr, " string characters out of ", (long) pool_size - init_pool_ptr);
 #ifdef ALLOCATEMAIN
-  if (show_current)
-    (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long)lo_mem_max - mem_min + mem_end - hi_mem_min + 2, " words of memory out of ", (long)current_mem_size);
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long)lo_mem_max - mem_min + mem_end - hi_mem_min + 2, " words of memory out of ", (long)current_mem_size);
+      else
 #endif
-    (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long)lo_mem_max - mem_min + mem_end - hi_mem_min + 2, " words of memory out of ", (long)mem_end + 1 - mem_min);
-/*  (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long)lo_mem_max - mem_min + mem_end - hi_mem_min + 2, " words of memory out of ", (long)max_mem_size); */
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-    (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long)cs_count, " multiletter control sequences out of ", (long)(hash_size + hash_extra));
-    (void) fprintf(log_file, "%c%ld%s%ld%s", ' ', (long)fmem_ptr, " words of font info for ", (long)font_ptr - 0, " font");
-    if (font_ptr != 1)
-      (void) putc('s',  log_file);
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
+        (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long)lo_mem_max - mem_min + mem_end - hi_mem_min + 2, " words of memory out of ", (long)mem_end + 1 - mem_min);
+      (void) fprintf(log_file, "%c%ld%s%ld\n", ' ', (long)cs_count, " multiletter control sequences out of ", (long)(hash_size + hash_extra));
+      (void) fprintf(log_file, "%c%ld%s%ld%s", ' ', (long)fmem_ptr, " words of font info for ", (long)font_ptr - 0, " font");
+      if (font_ptr != 1)
+        (void) putc('s',  log_file);
 #ifdef ALLOCATEFONT
-  if (show_current)
-    (void) fprintf(log_file, "%s%ld%s%ld\n", ", out of ", (long)current_font_mem_size, " for ", (long)font_max - 0); 
-   else
+      if (show_current)
+        (void) fprintf(log_file, "%s%ld%s%ld\n", ", out of ", (long)current_font_mem_size, " for ", (long)font_max - 0);
+      else
 #endif
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-    (void) fprintf(log_file, "%s%ld%s%ld\n", ", out of ", (long)font_mem_size, " for ", (long)font_max - 0); 
-    (void) fprintf(log_file, "%c%ld%s", ' ', (long)hyph_count, " hyphenation exception");
-    if (hyph_count != 1)
-      (void) putc('s',  log_file);
-/*  (void) fprintf(log_file, "%s%ld\n",  " out of ", (long)607);  */
-    (void) fprintf(log_file, "%s%ld\n",  " out of ", (long) hyphen_prime);
-    (void) fprintf(log_file, " ");
-    (void) fprintf(log_file, "%ld%s", (long)max_in_stack, "i,");
-    (void) fprintf(log_file, "%ld%s", (long)max_nest_stack, "n,");
-    (void) fprintf(log_file, "%ld%s", (long)max_param_stack, "p,");
-    (void) fprintf(log_file, "%ld%s", (long)max_buf_stack + 1, "b,");
-    (void) fprintf(log_file, "%ld%s", (long)max_save_stack + 6, "s");
-    (void) fprintf(log_file, " stack positions out of ");
+        (void) fprintf(log_file, "%s%ld%s%ld\n", ", out of ", (long)font_mem_size, " for ", (long)font_max - 0);
+      (void) fprintf(log_file, "%c%ld%s", ' ', (long)hyph_count, " hyphenation exception");
+      if (hyph_count != 1)
+        (void) putc('s',  log_file);
+      (void) fprintf(log_file, "%s%ld\n",  " out of ", (long) hyphen_prime);
+      (void) fprintf(log_file, " ");
+      (void) fprintf(log_file, "%ld%s", (long)max_in_stack, "i,");
+      (void) fprintf(log_file, "%ld%s", (long)max_nest_stack, "n,");
+      (void) fprintf(log_file, "%ld%s", (long)max_param_stack, "p,");
+      (void) fprintf(log_file, "%ld%s", (long)max_buf_stack + 1, "b,");
+      (void) fprintf(log_file, "%ld%s", (long)max_save_stack + 6, "s");
+      (void) fprintf(log_file, " stack positions out of ");
 #ifdef ALLOCATESAVESTACK
-  if (show_current)
-    (void) fprintf(log_file, "%ld%s", (long)current_stack_size, "i,");
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%ld%s", (long)current_stack_size, "i,");
+      else
 #endif
-    (void) fprintf(log_file, "%ld%s", (long)stack_size, "i,");
+        (void) fprintf(log_file, "%ld%s", (long)stack_size, "i,");
 #ifdef ALLOCATENESTSTACK
-  if (show_current)
-    (void) fprintf(log_file, "%ld%s", (long)current_nest_size, "n,");
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%ld%s", (long)current_nest_size, "n,");
+      else
 #endif
-    (void) fprintf(log_file, "%ld%s", (long)nest_size, "n,");
+        (void) fprintf(log_file, "%ld%s", (long)nest_size, "n,");
 #ifdef ALLOCATEPARAMSTACK
-  if (show_current)
-    (void) fprintf(log_file, "%ld%s", (long)current_param_size, "p,");
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%ld%s", (long)current_param_size, "p,");
+      else
 #endif
-    (void) fprintf(log_file, "%ld%s", (long)param_size, "p,");
+        (void) fprintf(log_file, "%ld%s", (long)param_size, "p,");
 #ifdef ALLOCATEBUFFER
-  if (show_current)
-    (void) fprintf(log_file, "%ld%s", (long)current_buf_size, "b,");
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%ld%s", (long)current_buf_size, "b,");
+      else
 #endif
-    (void) fprintf(log_file, "%ld%s", (long)buf_size, "b,");
+        (void) fprintf(log_file, "%ld%s", (long)buf_size, "b,");
 #ifdef ALLOCATESAVESTACK
-  if (show_current)
-    (void) fprintf(log_file, "%ld%s", (long)current_save_size, "s"); 
-  else
+      if (show_current)
+        (void) fprintf(log_file, "%ld%s", (long)current_save_size, "s");
+      else
 #endif
-    (void) fprintf(log_file, "%ld%s", (long)save_size, "s"); 
-  (void) fprintf(log_file, "\n");
+        (void) fprintf(log_file, "%ld%s", (long)save_size, "s");
+      (void) fprintf(log_file, "\n");
 /************************************************************************/
-  if (! knuth_flag)
-    fprintf(log_file, " (i = in_stack, n = nest_stack, p = param_stack, b = buf_stack, s = save_stack)\n");
+      if (!knuth_flag)
+        fprintf(log_file, " (i = in_stack, n = nest_stack, p = param_stack, b = buf_stack, s = save_stack)\n");
 /************************************************************************/
-  if (! knuth_flag)          /* 1999/Jan/17 */
-    fprintf(log_file,
-        " %d inputs open max out of %d\n",  /* (%d max parens open) */
-        high_in_open, max_in_open);             /* max_open_parens */
+      if (! knuth_flag)          /* 1999/Jan/17 */
+        fprintf(log_file,
+            " %d inputs open max out of %d\n",  /* (%d max parens open) */
+            high_in_open, max_in_open);             /* max_open_parens */
 /************************************************************************/
 /*  Modified 98/Jan/14 to leave out lines with zero counts */
-  if (show_line_break_stats && first_pass_count > 0) {     /* 96/Feb/8 */
+  if (show_line_break_stats && first_pass_count > 0)
+  {     /* 96/Feb/8 */
     int first_count, secondcount, thirdcount;
     (void) fprintf(log_file, "\nSuccess at breaking %d paragraph%s:", first_pass_count, (first_pass_count == 1) ? "" : "s");
     if (singleline > 0)
       (void) fprintf(log_file, "\n %d single line `paragraph%s'", singleline, (singleline == 1) ? "" : "s");  /* 96/Apr/23 */
     first_count = first_pass_count-singleline-second_pass_count;
-    if (first_count < 0) first_count = 0;       /* sanity check */
-    secondcount = second_pass_count-final_pass_count;
-    thirdcount = final_pass_count-paragraph_failed;
-    if (first_count != 0 || secondcount != 0 || thirdcount != 0) 
+    if (first_count < 0)
+      first_count = 0;       /* sanity check */
+    secondcount = second_pass_count - final_pass_count;
+    thirdcount = final_pass_count - paragraph_failed;
+    if (first_count != 0 || secondcount != 0 || thirdcount != 0)
       (void) fprintf(log_file, "\n %d first pass (\\pretolerance = %d)", first_count, pretolerance);
-    if (secondcount != 0 || thirdcount != 0) 
+    if (secondcount != 0 || thirdcount != 0)
       (void) fprintf(log_file, "\n %d second pass (\\tolerance = %d)", secondcount, tolerance);
-    if (final_pass_count > 0 || emergency_stretch > 0) {
+    if (final_pass_count > 0 || emergency_stretch > 0)
+    {
       (void) fprintf(log_file, "\n %d third pass (\\emergencystretch = %lgpt)", thirdcount, (double) emergency_stretch / 65536.0);
 /*      above converted from scaled points to printer's points */
     }
@@ -348,11 +358,13 @@ void close_files_and_terminate (void)
     print_string(" bytes).");
     b_close(dvi_file);
   } 
-  if (log_opened) {
+  if (log_opened)
+  {
     (void) putc ('\n', log_file);
     (void) a_close(log_file); 
     selector = selector - 2; 
-    if (selector == 17) {
+    if (selector == 17)
+    {
       print_nl("Transcript written on ");
       if (full_file_name_flag && log_file_name != NULL)
         print_char_string((unsigned char *) log_file_name);
@@ -362,7 +374,9 @@ void close_files_and_terminate (void)
     }
   }
   print_ln();
-  if ((edit_name_start != 0) && (interaction > 0)) {
+
+  if ((edit_name_start != 0) && (interaction > 0))
+  {
     call_edit(str_pool, edit_name_start, edit_name_length, edit_line);
   }
 } /* end of close_files_and_terminate */
index bd507fd..9e6c389 100644 (file)
@@ -204,27 +204,6 @@ EXTERN integer max_buf_stack;
 #endif
 
 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-/* param_size maximum number of simultaneous macro parameters */
-/* nest_size  maximum number of semantic levels simultaneously active */
-#ifdef INCREASEFIXED
-/* #define param_size 60 */     /* 3.14159 C version */
-/* #define param_size 120 */
-/* #define param_size 200 */    /* 1994/Oct/11 */
-/* #define param_size 300 */    /* 1995/May/15 */
-/* #define param_size 500 */    /* 1997/Jan/17 */
-/* #define nest_size 40 */      /* 3.14159 C version */
-/* #define nest_size 80 */
-/* #define nest_size 100  */    /* 1994/Oct/11 */
-/* #define nest_size 120 */     /* 1995/May/15 */
-/* #define nest_size 200 */     /* 1999/Jan/7 */
-#else
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
-/* #define param_size 60 */     /* Unix C default */
-/* #define nest_size 40 */      /* Unix C default */
-/* #define nest_size 100 */     /* Unix C default */
-#endif
-
-/* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */
 /* max_strings max number of strings */ /* (2^32 - 1) / sizeof (integer) */
 #ifdef ALLOCATESTRING
 /* #define max_strings 262140L */
@@ -347,13 +326,13 @@ typedef char glue_ord;
 
 typedef struct {
 /*  short mode_field;  */
-  int mode_field; 
-  halfword head_field, tail_field; 
-  integer pg_field, ml_field; 
-  memory_word aux_field; 
-} list_state_record; 
+  int mode_field;
+  halfword head_field, tail_field;
+  integer pg_field, ml_field;
+  memory_word aux_field;
+} list_state_record;
 
-typedef char group_code; 
+typedef char group_code;
 
 typedef struct {
   quarterword state_field, index_field; 
@@ -2140,6 +2119,7 @@ extern INLINE void dvi_out_ (ASCII_code op);
 extern INLINE void free_avail_(halfword p);
 #define free_avail(p) free_avail_((halfword) (p))
 extern INLINE void flush_string (void);
+extern int load_pool_strings (integer spare_size);
 #define help0()     tex_help(0)
 #define help1(...)  tex_help(1, __VA_ARGS__)
 #define help2(...)  tex_help(2, __VA_ARGS__)
index c8b15c3..4af6403 100644 (file)
@@ -75,7 +75,7 @@ typedef union
     halfword junk;
     quarterword B0, B1;
 #else /* not WORDS_BIGENDIAN */
-  /* If 32-bit TeX/MF, have to have an extra two bytes of junk.  
+  /* If 32-bit TeX/MF, have to have an extra two bytes of junk.
      I would like to break this line, but I'm afraid that some
      preprocessors don't properly handle backslash-newline in # commands.  */
 #if (defined (TeX) && !defined (SMALLTeX)) || !defined (TeX) && !defined (SMALLMF)
diff --git a/src/texsourc/yandy_pool.c b/src/texsourc/yandy_pool.c
new file mode 100644 (file)
index 0000000..c7c74c0
--- /dev/null
@@ -0,0 +1,1067 @@
+#include <setjmp.h>
+
+#define EXTERN extern
+
+#include "texd.h"
+
+static const char *pool_file_arr[] =
+{
+  "buffer size",
+  "pool size",
+  "number of strings",
+  "" "?" "?" "?",
+  "m2d5c2l5x2v5i",
+  "End of file on the terminal!",
+  "! ",
+  "(That makes 100 errors; please try again.)",
+  "" "? ",
+  "Type <return> to proceed, S to scroll future error messages,",
+  "R to run without stopping, Q to run quietly,",
+  "I to insert something, ",
+  "E to edit your file,",
+  "1 or ... or 9 to ignore the next 1 to 9 tokens of input,",
+  "H for help, X to quit.",
+  "OK, entering ",
+  "batchmode",
+  "nonstopmode",
+  "scrollmode",
+  "...",
+  "insert>",
+  "I have just deleted some text, as you asked.",
+  "You can now delete more, or insert, or whatever.",
+  "Sorry, I don't know how to help in this situation.",
+  "Maybe you should try asking a human" "?",
+  "Sorry, I already gave what help I could...",
+  "An error might have occurred before I noticed any problems.",
+  "``If all else fails, read the instructions.''",
+  " (",
+  "Emergency stop",
+  "TeX capacity exceeded, sorry [",
+  "If you really absolutely need more capacity,",
+  "you can ask a wizard to enlarge me.",
+  "This can't happen (",
+  "I'm broken. Please show this to someone who can fix can fix",
+  "I can't go on meeting you like this",
+  "One of your faux pas seems to have wounded me deeply...",
+  "in fact, I'm barely conscious. Please fix it and try again.",
+  "Interruption",
+  "You rang" "?",
+  "Try to insert some instructions for me (e.g.,`I\\showlists'),",
+  "unless you just want to quit by typing `X'.",
+  "main memory size",
+  "AVAIL list clobbered at ",
+  "Double-AVAIL list clobbered at ",
+  "Doubly free location at ",
+  "Bad flag at ",
+  "New busy locs:",
+  "LINK(",
+  "INFO(",
+  "[]",
+  "CLOBBERED.",
+  "foul",
+  "fil",
+  " plus ",
+  " minus ",
+  " []",
+  "Bad link, display aborted.",
+  "etc.",
+  "Unknown node type!",
+  "unset",
+  "box(",
+  ")x",
+  ", shifted ",
+  " columns)",
+  ", stretch ",
+  ", shrink ",
+  ", glue set ",
+  "- ",
+  "< -",
+  "rule(",
+  "insert",
+  ", natural size ",
+  "; split(",
+  "); float cost ",
+  "glue",
+  "nonscript",
+  "mskip",
+  "mu",
+  "",
+  "leaders ",
+  "kern",
+  " (for accent)",
+  "mkern",
+  "math",
+  "on",
+  "off",
+  ", surrounded ",
+  " (ligature ",
+  "penalty ",
+  "discretionary",
+  " replacing ",
+  "mark",
+  "vadjust",
+  "flushing",
+  "copying",
+  "vertical",
+  "horizontal",
+  "display math",
+  "no",
+  "internal vertical",
+  "restricted horizontal",
+  " mode",
+  "semantic nest size",
+  "### ",
+  " entered at line ",
+  " (language",
+  ":hyphenmin",
+  " (\\output routine)",
+  "### recent contributions:",
+  "prevdepth ",
+  "ignored",
+  ", prevgraf ",
+  " line",
+  "spacefactor ",
+  ", current language ",
+  "this will be denominator of:",
+  "lineskip",
+  "baselineskip",
+  "parskip",
+  "abovedisplayskip",
+  "belowdisplayskip",
+  "abovedisplayshortskip",
+  "belowdisplayshortskip",
+  "leftskip",
+  "rightskip",
+  "topskip",
+  "splittopskip",
+  "tabskip",
+  "spaceskip",
+  "xspaceskip",
+  "parfillskip",
+  "thinmuskip",
+  "medmuskip",
+  "thickmuskip",
+  "[unknown glue parameter!]",
+  "skip",
+  "muskip",
+  "pt",
+  "output",
+  "everypar",
+  "everymath",
+  "everydisplay",
+  "everyhbox",
+  "everyvbox",
+  "everyjob",
+  "everycr",
+  "errhelp",
+  "toks",
+  "parshape",
+  "box",
+  "void",
+  "current font",
+  "textfont",
+  "scriptfont",
+  "scriptscriptfont",
+  "catcode",
+  "lccode",
+  "uccode",
+  "sfcode",
+  "mathcode",
+  "pretolerance",
+  "tolerance",
+  "linepenalty",
+  "hyphenpenalty",
+  "exhyphenpenalty",
+  "clubpenalty",
+  "widowpenalty",
+  "displaywidowpenalty",
+  "brokenpenalty",
+  "binoppenalty",
+  "relpenalty",
+  "predisplaypenalty",
+  "postdisplaypenalty",
+  "interlinepenalty",
+  "doublehyphendemerits",
+  "finalhyphendemerits",
+  "adjdemerits",
+  "mag",
+  "delimiterfactor",
+  "looseness",
+  "time",
+  "day",
+  "month",
+  "year",
+  "showboxbreadth",
+  "showboxdepth",
+  "hbadness",
+  "vbadness",
+  "pausing",
+  "tracingonline",
+  "tracingmacros",
+  "tracingstats",
+  "tracingparagraphs",
+  "tracingpages",
+  "tracingoutput",
+  "tracinglostchars",
+  "tracingcommands",
+  "tracingrestores",
+  "uchyph",
+  "outputpenalty",
+  "maxdeadcycles",
+  "hangafter",
+  "floatingpenalty",
+  "globaldefs",
+  "fam",
+  "escapechar",
+  "defaulthyphenchar",
+  "defaultskewchar",
+  "endlinechar",
+  "newlinechar",
+  "language",
+  "lefthyphenmin",
+  "righthyphenmin",
+  "holdinginserts",
+  "errorcontextlines",
+  "[unknown integer parameter!]",
+  "count",
+  "delcode",
+  "parindent",
+  "mathsurround",
+  "lineskiplimit",
+  "hsize",
+  "vsize",
+  "maxdepth",
+  "splitmaxdepth",
+  "boxmaxdepth",
+  "hfuzz",
+  "vfuzz",
+  "delimitershortfall",
+  "nulldelimiterspace",
+  "scriptspace",
+  "predisplaysize",
+  "displaywidth",
+  "displayindent",
+  "overfullrule",
+  "hangindent",
+  "hoffset",
+  "voffset",
+  "emergencystretch",
+  "[unknown dimen parameter!]",
+  "dimen",
+  "EQUIV(",
+  "notexpanded:",
+  "hash size",
+  "csname",
+  "endcsname",
+  "IMPOSSIBLE.",
+  "NONEXISTENT.",
+  "accent",
+  "advance",
+  "afterassignment",
+  "aftergroup",
+  "begingroup",
+  "char",
+  "delimiter",
+  "divide",
+  "endgroup",
+  "expandafter",
+  "font",
+  "fontdimen",
+  "halign",
+  "hrule",
+  "ignorespaces",
+  "mathaccent",
+  "mathchar",
+  "mathchoice",
+  "multiply",
+  "noalign",
+  "noboundary",
+  "noexpand",
+  "omit",
+  "penalty",
+  "prevgraf",
+  "radical",
+  "read",
+  "relax",
+  "setbox",
+  "the",
+  "valign",
+  "vcenter",
+  "vrule",
+  "save size",
+  "grouping levels",
+  "curlevel",
+  "retaining",
+  "restoring",
+  "SAVE(",
+  "Incompatible magnification (",
+  ");",
+  " the previous value will be retained",
+  "I can handle only one magnification ratio per job. So I've",
+  "reverted to the magnification you used earlier on this run.",
+  "Illegal magnification has been changed to 1000",
+  "The magnification ratio must be between 1 and 32768.",
+  "ETC.",
+  "BAD.",
+  "->",
+  "begin-group character ",
+  "end-group character ",
+  "math shift character ",
+  "macro parameter character ",
+  "superscript character ",
+  "subscript character ",
+  "end of alignment template",
+  "blank space ",
+  "the letter ",
+  "the character ",
+  "[unknown command code!]",
+  ": ",
+  "Runaway ",
+  "definition",
+  "argument",
+  "preamble",
+  "text",
+  "<*>",
+  "<insert> ",
+  "<read ",
+  "l.",
+  "<argument> ",
+  "<template> ",
+  "<recently read> ",
+  "<to be read again> ",
+  "<inserted text> ",
+  "<output> ",
+  "<everypar> ",
+  "<everymath> ",
+  "<everydisplay> ",
+  "<everyhbox> ",
+  "<everyvbox> ",
+  "<everyjob> ",
+  "<everycr> ",
+  "<mark> ",
+  "<write> ",
+  "input stack size",
+  "write",
+  "(interwoven alignment preambles are not allowed)",
+  "text input levels",
+  "par",
+  "Incomplete ",
+  "; all text was ignored after line ",
+  "A forbidden control sequence occurred in skipped text.",
+  "This kind of error happens when you say `\\if...' and forget",
+  "the matching `\\fi'. I've inserted a `\\fi'; this might work.",
+  "The file ended while I was skipping conditional text.",
+  "File ended",
+  "Forbidden control sequence found",
+  " while scanning ",
+  " of ",
+  "I suspect you have forgotten a `}', causing me",
+  "to read past where you wanted me to stop.",
+  "I'll try to recover; but if the error is serious,",
+  "you'd better type `E' or `X' now and fix your file.",
+  "use",
+  "Text line contains an invalid character",
+  "A funny symbol that I can't read has just been input.",
+  "Continue, and I'll forget that it ever happened.",
+  "(Please type a command or say `\\end')",
+  "*** (job aborted, no legal \\end found)",
+  "=>",
+  "Undefined control sequence",
+  "The control sequence at the end of the top line",
+  "of your error message was never \\def'ed. If you have",
+  "misspelled it (e.g., `\\hobx'), type `I' and the correct",
+  "spelling (e.g., `I\\hbox'). Otherwise just continue,",
+  "and I'll forget about whatever was undefined.",
+  "Missing ",
+  " inserted",
+  "The control sequence marked <to be read again> should",
+  "not appear between \\csname and \\endcsname.",
+  "input",
+  "endinput",
+  "topmark",
+  "firstmark",
+  "botmark",
+  "splitfirstmark",
+  "splitbotmark",
+  "parameter stack size",
+  "Argument of ",
+  " has an extra }",
+  "I've run across a `}' that doesn't seem to match anything.",
+  "For example, `\\def\\a#1{...}' and `\\a}' would produce",
+  "this error. If you simply proceed now, the `\\par' that",
+  "I've just inserted will cause me to report a runaway",
+  "argument that might be the root of the problem. But if",
+  "your `}' was spurious, just type `2' and it will go away.",
+  "Paragraph ended before ",
+  " was complete",
+  "I suspect you've forgotten a `}', causing me to apply this",
+  "control sequence to too much text. How can we recover" "?",
+  "My plan is to forget the whole thing and hope for the best.",
+  "Use of ",
+  " doesn't match its definition",
+  "If you say, e.g., `\\def\\a1{...}', then you must always",
+  "put `1' after `\\a', since control sequence names are",
+  "made up of letters only. The macro here has not been",
+  "followed by the required stuff, so I'm ignoring it.",
+  "<-",
+  "Missing { inserted",
+  "A left brace was mandatory here, so I've put one in.",
+  "You might want to delete and/or insert some corrections",
+  "so that I will find a matching right brace soon.",
+  "(If you're confused by all this, try typing `I}' now.)",
+  "Incompatible glue units",
+  "I'm going to assume that 1mu=1pt when they're mixed.",
+  "Missing number, treated as zero",
+  "A number should have been here; I inserted `0'.",
+  "(If you can't figure out why I needed to see a number,",
+  "look up `weird error' in the index to The TeXbook.)",
+  "spacefactor",
+  "prevdepth",
+  "deadcycles",
+  "insertpenalties",
+  "wd",
+  "ht",
+  "dp",
+  "lastpenalty",
+  "lastkern",
+  "lastskip",
+  "inputlineno",
+  "badness",
+  "Improper ",
+  "You can refer to \\spacefactor only in horizontal mode;",
+  "you can refer to \\prevdepth only in vertical mode; and",
+  "neither of these is meaningful inside \\write. So",
+  "I'm forgetting what you said and using zero instead.",
+  "You can't use `",
+  "' after ",
+  "Bad register code",
+  "A register number must be between 0 and 255.",
+  "I changed this one to zero.",
+  "Bad character code",
+  "A character number must be between 0 and 255.",
+  "Bad number",
+  "Since I expected to read a number between 0 and 15,",
+  "Bad mathchar",
+  "A mathchar number must be between 0 and 32767.",
+  "Bad delimiter code",
+  "A numeric delimiter code must be between 0 and 2^{27}-1.",
+  "Improper alphabetic constant",
+  "A one-character control sequence belongs after a ` mark.",
+  "So I'm essentially inserting \\0 here.",
+  "Number too big",
+  "I can only go up to 2147483647='17777777777=\"7FFFFFFF,",
+  "so I'm using that number instead of yours.",
+  "true",
+  "Illegal unit of measure (",
+  "replaced by filll)",
+  "I dddon't go any higher than filll.",
+  "em",
+  "ex",
+  "mu inserted)",
+  "The unit of measurement in math glue must be mu.",
+  "To recover gracefully from this error, it's best to",
+  "delete the erroneous units; e.g., type `2' to delete",
+  "two letters. (See Chapter 27 of The TeXbook.)",
+  "in",
+  "pc",
+  "cm",
+  "mm",
+  "bp",
+  "dd",
+  "cc",
+  "sp",
+  "pt inserted)",
+  "Dimensions can be in units of em, ex, in, pt, pc,",
+  "cm, mm, dd, cc, bp, or sp; but yours is a new one!",
+  "I'll assume that you meant to say pt, for printer's points.",
+  "Dimension too large",
+  "I can't work with sizes bigger than about 19 feet.",
+  "Continue and I'll use the largest value I can.",
+  "plus",
+  "minus",
+  "width",
+  "height",
+  "depth",
+  "number",
+  "romannumeral",
+  "string",
+  "meaning",
+  "fontname",
+  "jobname",
+  " at ",
+  "Where was the left brace" "? You said something like `\\def\\a}',",
+  "which I'm going to interpret as `\\def\\a{}'.",
+  "You already have nine parameters",
+  "I'm going to ignore the # sign you just used.",
+  "Parameters must be numbered consecutively",
+  "I've inserted the digit you should have used after the #.",
+  "Type `1' to delete what you did use.",
+  "Illegal parameter number in definition of ",
+  "You meant to type ## instead of #, right" "?",
+  "Or maybe a } was forgotten somewhere earlier, and things",
+  "are all screwed up" "? I'm going to assume that you meant ##.",
+  "*** (cannot \\read from terminal in nonstop modes)",
+  "File ended within ",
+  "This \\read has unbalanced braces.",
+  "if",
+  "ifcat",
+  "ifnum",
+  "ifdim",
+  "ifodd",
+  "ifvmode",
+  "ifhmode",
+  "ifmmode",
+  "ifinner",
+  "ifvoid",
+  "ifhbox",
+  "ifvbox",
+  "ifx",
+  "ifeof",
+  "iftrue",
+  "iffalse",
+  "ifcase",
+  "fi",
+  "or",
+  "else",
+  "Extra ",
+  "I'm ignoring this; it doesn't match any \\if.",
+  "{true}",
+  "{false}",
+  "Missing = inserted for ",
+  "I was expecting to see `<', `=', or `>'. Didn't.",
+  "{case ",
+  ".fmt",
+  "input file name",
+  "I can't find file `",
+  "I can't write on file `",
+  "'.",
+  ".tex",
+  "Please type another ",
+  "*** (job aborted, file error in nonstop mode)",
+  ".dvi",
+  "file name for output",
+  "texput",
+  ".log",
+  "**",
+  "transcript file name",
+  "  ",
+  "nullfont",
+  "Font ",
+  " scaled ",
+  " not loadable: Bad metric (TFM) file",
+  " not loadable: Metric (TFM) file not found",
+  "I wasn't able to read the size data for this font,",
+  "so I will ignore the font specification.",
+  "[Wizards can fix TFM files using TFtoPL/PLtoTF.]",
+  "You might try inserting a different font spec;",
+  "e.g., type `I\\font<same font id>=<substitute font name>'.",
+  ".tfm",
+  " not loaded: Not enough room left",
+  "I'm afraid I won't be able to make use of this font,",
+  "because my memory for character-size data is too small.",
+  "If you're really stuck, ask a wizard to enlarge me.",
+  "Or maybe try `I\\font<same font id>=<name of loaded font>'.",
+  "Missing font identifier",
+  "I was looking for a control sequence whose",
+  "current meaning has been defined by \\font.",
+  " has only ",
+  " fontdimen parameters",
+  "To increase the number of font parameters, you must",
+  "use \\fontdimen immediately after the \\font is loaded.",
+  "font memory",
+  "Missing character: There is no ",
+  " in font ",
+  " TeX output ",
+  "vlistout",
+  "Completed box being shipped out",
+  "Memory usage before: ",
+  " after: ",
+  "; still untouched: ",
+  "Huge page cannot be shipped out",
+  "The page just created is more than 18 feet tall or",
+  "more than 18 feet wide, so I suspect something went wrong.",
+  "The following box has been deleted:",
+  "No pages of output.",
+  "Output written on ",
+  " page",
+  ", ",
+  " bytes).",
+  "to",
+  "spread",
+  "Underfull",
+  "Loose",
+  " \\hbox (badness ",
+  ") has occurred while \\output is active",
+  ") in paragraph at lines ",
+  ") in alignment at lines ",
+  "--",
+  ") detected at line ",
+  "Overfull \\hbox (",
+  "pt too wide",
+  "Tight \\hbox (badness ",
+  "vpack",
+  " \\vbox (badness ",
+  "Overfull \\vbox (",
+  "pt too high",
+  "Tight \\vbox (badness ",
+  "{}",
+  "displaystyle",
+  "textstyle",
+  "scriptstyle",
+  "scriptscriptstyle",
+  "Unknown style!",
+  "mathord",
+  "mathop",
+  "mathbin",
+  "mathrel",
+  "mathopen",
+  "mathclose",
+  "mathpunct",
+  "mathinner",
+  "overline",
+  "underline",
+  "left",
+  "right",
+  "limits",
+  "nolimits",
+  "fraction, thickness ",
+  "= default",
+  ", left-delimiter ",
+  ", right-delimiter ",
+  " is undefined (character ",
+  "Somewhere in the math formula just ended, you used the",
+  "stated character from an undefined font family. For example,",
+  "plain TeX doesn't allow \\it or \\sl in subscripts. Proceed,",
+  "and I'll try to forget that I needed that character.",
+  "mlist1",
+  "mlist2",
+  "mlist3",
+  "0234000122*4000133**3**344*0400400*000000234000111*1111112341011",
+  "mlist4",
+  " inside $$'s",
+  "Displays can use special alignments (like \\eqalignno)",
+  "only if nothing but the alignment itself is between $$'s.",
+  "So I've deleted the formulas that preceded this alignment.",
+  "span",
+  "cr",
+  "crcr",
+  "endtemplate",
+  "alignment tab character ",
+  "Missing # inserted in alignment preamble",
+  "There should be exactly one # between &'s, when an",
+  "\\halign or \\valign is being set up. In this case you had",
+  "none, so I've put one in; maybe that will work.",
+  "Only one # is allowed per tab",
+  "more than one, so I'm ignoring all but the first.",
+  "endv",
+  "Extra alignment tab has been changed to ",
+  "You have given more \\span or & marks than there were",
+  "in the preamble to the \\halign or \\valign now in progress.",
+  "So I'll assume that you meant to type \\cr instead.",
+  "256 spans",
+  "align1",
+  "align0",
+  "Infinite glue shrinkage found in a paragraph",
+  "The paragraph just ended includes some glue that has",
+  "infinite shrinkability, e.g., `\\hskip 0pt minus 1fil'.",
+  "Such glue doesn't belong there---it allows a paragraph",
+  "of any length to fit on one line. But it's safe to proceed,",
+  "since the offensive shrinkability has been made finite.",
+  "disc1",
+  "disc2",
+  "@@",
+  ": line ",
+  " t=",
+  " -> @@",
+  " via @@",
+  " b=",
+  " p=",
+  " d=",
+  "@firstpass",
+  "@secondpass",
+  "@emergencypass",
+  "paragraph",
+  "disc3",
+  "disc4",
+  "line breaking",
+  "HYPH(",
+  "hyphenation",
+  " will be flushed",
+  "Hyphenation exceptions must contain only letters",
+  "and hyphens. But continue; I'll forgive and forget.",
+  "Not a letter",
+  "Letters in \\hyphenation words must have \\lccode>0.",
+  "Proceed; I'll ignore the character I just read.",
+  "exception dictionary",
+  "pattern memory ops",
+  "pattern memory ops per language",
+  "pattern memory",
+  "Too late for ",
+  "patterns",
+  "All patterns must be given before typesetting begins.",
+  "Bad ",
+  "(See Appendix H.)",
+  "Nonletter",
+  "Duplicate pattern",
+  "pruning",
+  "vertbreak",
+  "Infinite glue shrinkage found in box being split",
+  "The box you are \\vsplitting contains some infinitely",
+  "shrinkable glue, e.g., `\\vss' or `\\vskip 0pt minus 1fil'.",
+  "Such glue doesn't belong there; but you can safely proceed,",
+  "vsplit",
+  " needs a ",
+  "vbox",
+  "The box you are trying to split is an \\hbox.",
+  "I can't split such a box, so I'll leave it alone.",
+  "pagegoal",
+  "pagetotal",
+  "pagestretch",
+  "pagefilstretch",
+  "pagefillstretch",
+  "pagefilllstretch",
+  "pageshrink",
+  "pagedepth",
+  "fill",
+  "filll",
+  "### current page:",
+  " (held over for next output)",
+  "total height ",
+  " goal height ",
+  " adds ",
+  ", #",
+  " might split",
+  "%% goal height=",
+  ", max depth=",
+  "Insertions can only be added to a vbox",
+  "Tut tut: You're trying to \\insert into a",
+  "\\box register that now contains an \\hbox.",
+  "Proceed, and I'll discard its present contents.",
+  "page",
+  "Infinite glue shrinkage found on current page",
+  "The page about to be output contains some infinitely",
+  " g=",
+  " c=",
+  "Infinite glue shrinkage inserted from ",
+  "The correction glue for page breaking with insertions",
+  "must have finite shrinkability. But you may proceed,",
+  "% split",
+  " to ",
+  "255 is not void",
+  "You shouldn't use \\box255 except in \\output routines.",
+  "Output loop---",
+  " consecutive dead cycles",
+  "I've concluded that your \\output is awry; it never does a",
+  "\\shipout, so I'm shipping \\box255 out myself. Next time",
+  "increase \\maxdeadcycles if you want me to be more patient!",
+  "Unbalanced output routine",
+  "Your sneaky output routine has problematic {'s and/or }'s.",
+  "I can't handle that very well; good luck.",
+  "Output routine didn't use all of ",
+  "Your \\output commands should empty \\box255,",
+  "e.g., by saying `\\shipout\\box255'.",
+  "Proceed; I'll discard its present contents.",
+  "Missing $ inserted",
+  "I've inserted a begin-math/end-math symbol since I think",
+  "you left one out. Proceed, with fingers crossed.",
+  "' in ",
+  "Sorry, but I'm not programmed to handle this case;",
+  "I'll just pretend that you didn't ask for it.",
+  "If you're in the wrong mode, you might be able to",
+  "return to the right one by typing `I}' or `I$' or `I\\par'.",
+  "end",
+  "dump",
+  "hskip",
+  "hfil",
+  "hfill",
+  "hss",
+  "hfilneg",
+  "vskip",
+  "vfil",
+  "vfill",
+  "vss",
+  "vfilneg",
+  "I've inserted something that you may have forgotten.",
+  "(See the <inserted text> above.)",
+  "With luck, this will get me unwedged. But if you",
+  "really didn't forget anything, try typing `2' now; then",
+  "my insertion and my current dilemma will both disappear.",
+  "right.",
+  "Things are pretty mixed up, but I think the worst is over.",
+  "Too many }'s",
+  "You've closed more groups than you opened.",
+  "Such booboos are generally harmless, so keep going.",
+  "rightbrace",
+  "Extra }, or forgotten ",
+  "I've deleted a group-closing symbol because it seems to be",
+  "spurious, as in `$x}$'. But perhaps the } is legitimate and",
+  "you forgot something else, as in `\\hbox{$x}'. In such cases",
+  "the way to recover is to insert both the forgotten and the",
+  "deleted material, e.g., by typing `I$}'.",
+  "moveleft",
+  "moveright",
+  "raise",
+  "lower",
+  "copy",
+  "lastbox",
+  "vtop",
+  "hbox",
+  "shipout",
+  "leaders",
+  "cleaders",
+  "xleaders",
+  "Leaders not followed by proper glue",
+  "You should say `\\leaders <box or rule><hskip or vskip>'.",
+  "I found the <box or rule>, but there's no suitable",
+  "<hskip or vskip>, so I'm ignoring these leaders.",
+  "Sorry; this \\lastbox will be void.",
+  "Sorry...I usually can't take things from the current page.",
+  "This \\lastbox will therefore be void.",
+  "Missing `to' inserted",
+  "I'm working on `\\vsplit<box number> to <dimen>';",
+  "will look for the <dimen> next.",
+  "A <box> was supposed to be here",
+  "I was expecting to see \\hbox or \\vbox or \\copy or \\box or",
+  "something like that. So you might find something missing in",
+  "your output. But keep trying; you can fix this later.",
+  "indent",
+  "noindent",
+  "' here except with leaders",
+  "To put a horizontal rule in an hbox or an alignment,",
+  "you should use \\leaders or \\hrulefill (see The TeXbook).",
+  "You can't ",
+  "I'm changing to \\insert0; box 255 is special.",
+  "Try `I\\vskip-\\lastskip' instead.",
+  "Try `I\\kern-\\lastkern' instead.",
+  "Perhaps you can make the output routine do it.",
+  "unpenalty",
+  "unkern",
+  "unskip",
+  "unhbox",
+  "unhcopy",
+  "unvbox",
+  "unvcopy",
+  "Incompatible list can't be unboxed",
+  "Sorry, Pandora. (You sneaky devil.)",
+  "I refuse to unbox an \\hbox in vertical mode or vice versa.",
+  "And I can't open any boxes in math mode.",
+  "Illegal math ",
+  "Sorry: The third part of a discretionary break must be",
+  "empty, in math formulas. I had to delete your third part.",
+  "Discretionary list is too long",
+  "Wow---I never thought anybody would tweak me here.",
+  "You can't seriously need such a huge discretionary list" "?",
+  "Improper discretionary list",
+  "Discretionary lists must contain only boxes and kerns.",
+  "The following discretionary sublist has been deleted:",
+  "Missing } inserted",
+  "I've put in what seems to be necessary to fix",
+  "the current column of the current alignment.",
+  "Try to go on, since this might almost work.",
+  "Misplaced ",
+  "I can't figure out why you would want to use a tab mark",
+  "here. If you just want an ampersand, the remedy is",
+  "simple: Just type `I\\&' now. But if some right brace",
+  "up above has ended a previous alignment prematurely,",
+  "you're probably due for more error messages, and you",
+  "might try typing `S' now just to see what is salvageable.",
+  "or \\cr or \\span just now. If something like a right brace",
+  "I expect to see \\noalign only after the \\cr of",
+  "an alignment. Proceed, and I'll ignore this case.",
+  "I expect to see \\omit only after tab marks or the \\cr of",
+  "I'm guessing that you meant to end an alignment here.",
+  "I'm ignoring this, since I wasn't doing a \\csname.",
+  "eqno",
+  "leqno",
+  "displaylimits",
+  "Limit controls must follow a math operator",
+  "I'm ignoring this misplaced \\limits or \\nolimits command.",
+  "Missing delimiter (. inserted)",
+  "I was expecting to see something like `(' or `\\{' or",
+  "`\\}' here. If you typed, e.g., `{' instead of `\\{', you",
+  "should probably delete the `{' by typing `1' now, so that",
+  "braces don't get unbalanced. Otherwise just proceed.",
+  "Acceptable delimiters are characters whose \\delcode is",
+  "nonnegative, or you can use `\\delimiter <delimiter code>'.",
+  "Please use ",
+  " for accents in math mode",
+  "I'm changing \\accent to \\mathaccent here; wish me luck.",
+  "(Accents are not the same in formulas as they are in text.)",
+  "Double superscript",
+  "I treat `x^1^2' essentially like `x^1{}^2'.",
+  "Double subscript",
+  "I treat `x_1_2' essentially like `x_1{}_2'.",
+  "above",
+  "over",
+  "atop",
+  "abovewithdelims",
+  "overwithdelims",
+  "atopwithdelims",
+  "Ambiguous; you need another { and }",
+  "I'm ignoring this fraction specification, since I don't",
+  "know whether a construction like `x \\over y \\over z'",
+  "means `{x \\over y} \\over z' or `x \\over {y \\over z}'.",
+  "I'm ignoring a \\right that had no matching \\left.",
+  "Math formula deleted: Insufficient symbol fonts",
+  "Sorry, but I can't typeset math unless \\textfont 2",
+  "and \\scriptfont 2 and \\scriptscriptfont 2 have all",
+  "the \\fontdimen values needed in math symbol fonts.",
+  "Math formula deleted: Insufficient extension fonts",
+  "Sorry, but I can't typeset math unless \\textfont 3",
+  "and \\scriptfont 3 and \\scriptscriptfont 3 have all",
+  "the \\fontdimen values needed in math extension fonts.",
+  "Display math should end with $$",
+  "The `$' that I just saw supposedly matches a previous `$$'.",
+  "So I shall assume that you typed `$$' both times.",
+  "display",
+  "Missing $$ inserted",
+  "long",
+  "outer",
+  "global",
+  "def",
+  "gdef",
+  "edef",
+  "xdef",
+  "prefix",
+  "You can't use a prefix with `",
+  "I'll pretend you didn't say \\long or \\outer or \\global.",
+  "' or `",
+  "' with `",
+  "I'll pretend you didn't say \\long or \\outer here.",
+  "Missing control sequence inserted",
+  "Please don't say `\\def cs{...}', say `\\def\\cs{...}'.",
+  "I've inserted an inaccessible control sequence so that your",
+  "definition will be completed without mixing me up too badly.",
+  "You can recover graciously from this error, if you're",
+  "careful; see exercise 27.2 in The TeXbook.",
+  "inaccessible",
+  "let",
+  "futurelet",
+  "chardef",
+  "mathchardef",
+  "countdef",
+  "dimendef",
+  "skipdef",
+  "muskipdef",
+  "toksdef",
+  "You should have said `\\read<number> to \\cs'.",
+  "I'm going to look for the \\cs now.",
+  "Invalid code (",
+  "), should be in the range 0..",
+  "), should be at most ",
+  "I'm going to use 0 instead of that illegal code value.",
+  "by",
+  "Arithmetic overflow",
+  "I can't carry out that multiplication or division,",
+  "since the result is out of range.",
+  "I'm forgetting what you said and not changing anything.",
+  "Sorry, \\setbox is not allowed after \\halign in a display,",
+  "or between \\accent and an accented character.",
+  "Bad space factor",
+  "I allow only values in the range 1..32767 here.",
+  "I allow only nonnegative values here.",
+  "Patterns can be loaded only by INITEX",
+  "hyphenchar",
+  "skewchar",
+  "FONT",
+  "at",
+  "scaled",
+  "Improper `at' size (",
+  "pt), replaced by 10pt",
+  "I can only handle fonts at positive sizes that are",
+  "less than 2048pt, so I've changed what you said to 10pt.",
+  "select font ",
+  "errorstopmode",
+  "openin",
+  "closein",
+  "message",
+  "errmessage",
+  "(That was another \\errmessage.)",
+  "This error message was generated by an \\errmessage",
+  "command, so I can't give any explicit help.",
+  "Pretend that you're Hercule Poirot: Examine all clues,",
+  "and deduce the truth by order and method.",
+  "lowercase",
+  "uppercase",
+  "show",
+  "showbox",
+  "showthe",
+  "showlists",
+  "This isn't an error message; I'm just \\showing something.",
+  "Type `I\\show...' to show more (e.g., \\show\\cs,",
+  "\\showthe\\count10, \\showbox255, \\showlists).",
+  "And type `I\\tracingonline=1\\show...' to show boxes and",
+  "lists on your terminal as well as in the transcript file.",
+  "> ",
+  "undefined",
+  "macro",
+  "long macro",
+  "outer macro",
+  "outer endtemplate",
+  "> \\box",
+  "OK",
+  " (see the transcript file)",
+  " (INITEX)",
+  "You can't dump inside a group",
+  "`{...\\dump}' is a no-no.",
+  " strings of total length ",
+  " memory locations dumped; current usage is ",
+  " multiletter control sequences",
+  " words of font info for ",
+  " preloaded font",
+  "\\font",
+  " hyphenation exception",
+  "Hyphenation trie of length ",
+  " has ",
+  " op",
+  " out of ",
+  " for language ",
+  " (format=",
+  "format file name",
+  "Beginning to dump on file ",
+  "Transcript written on ",
+  " )",
+  "end occurred ",
+  "inside a group at level ",
+  "when ",
+  " on line ",
+  " was incomplete)",
+  "(see the transcript file for additional information)",
+  "(\\dump is performed only by INITEX)",
+  "debug # (-1 to exit):",
+  "openout",
+  "closeout",
+  "special",
+  "immediate",
+  "setlanguage",
+  "[unknown extension!]",
+  "ext1",
+  " (hyphenmin ",
+  "whatsit" "?",
+  "ext2",
+  "ext3",
+  "endwrite",
+  "Unbalanced write command",
+  "On this page there's a \\write with fewer real {'s than }'s.",
+  "ext4",
+  "output file name",
+  NULL };
+
+int load_pool_strings (integer spare_size)
+{
+  const char *s;
+  str_number g = 0;
+  int i = 0;
+  int j = 0;
+  while ((s = pool_file_arr[j++]))
+  {
+    int l = strlen (s);
+    i += l;
+    if (i >= spare_size)
+      return 0;
+    while (l-- > 0)
+      str_pool[pool_ptr++] = *s++;
+    g = make_string();
+  }
+  return g;
+}