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. */
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; */
/* void texbody() */
int texbody (void) /* now returns a value --- bkph */
{
- history = 3;
+ history = 3;
set_paths(TEXFORMATPATHBIT + TEXINPUTPATHBIT + TEXPOOLPATHBIT + TFMFILEPATHBIT);
/* 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;
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] = ' ';
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);
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);
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 */
(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)
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 */
/* 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++;
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);
}
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;
/* 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);
}
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
/* 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);
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
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
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
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);
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;
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);
}
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 ... */
#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 */
/* 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. */
/* 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. */
/* #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 */
// 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 */
/////////////////////////////////////////////////////////////////////////
/*<----*/
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 */
return i;
}
-
/****************************************************************************/
-
// malloc with error checking and error message
/* kpathsea/xmalloc.c */
void * xmalloc (unsigned size)
#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 */
}
return 0;
}
-
/********************************************************************************/
// following used only in map_lookup
// return pointer to start of extension --- or NULL if there isn't one
#define BLOCK_SIZE 64
// this returns newly allocated character string
-
+/* kpathsea/line.c */
char *read_line (FILE * f)
{
int c;
/* 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
}
/********************************************************************/
-
-#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;
}
/* 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;
}
/* 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);
/* 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; */
#ifndef MALLOCLINE
#define MAXLINE 256
#endif
-
+/* NOT USED! */
int map_file_parse (map_type map, char *map_filename)
{
char *l;
(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 *));
}
return map;
}
-
/**********************************************************************/
/* #pragma optimize ("g", off) *//* try and avoid compiler bug here _dos_find */
/* 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;
/* 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;
#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;
}
#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 ... */
/* returns NULL or the file name passed in ??? */
/* static string readable (name) */
+/* kpathsea/readable.c */
string readable (string name)
{
string ret;
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++;
}
/* When we retrieve, just check the list in order. */
-
+/* NOT USED! */
string *find_dir_list (string path)
{
unsigned p;
}
/* Unixify filename and path (turn \ into /) --- assumes null terminated */
-
+/* NEED HACK! */
char *unixify (char * t)
{
char * s = t;
/* clean up command line option error output */
/* disallow all the weird combinations like -- */
-//////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////
\ No newline at end of file
/* paragraph 1258 */
name_in_progress = true;
- if (scan_keyword("at")) /* at */
+ if (scan_keyword("at"))
{
scan_dimen(false, false, false);
s = cur_val;
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");
}
}
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;
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)
{
/* 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.");
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);
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;
/**************************************************************************/
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
/* 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 */
}
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);
}
}
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 */
#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 */
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;
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__)
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)
--- /dev/null
+#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;
+}