+#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;
+}