URI: 
       FIXES - 9base - revived minimalist port of Plan 9 userland to Unix
  HTML git clone git://git.suckless.org/9base
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       FIXES (24982B)
       ---
            1 March 11, 1994
            2 
            3         If we are just plain old nroff (and not doing UNICODE) we should
            4         only Lookup characters, not Install when we don't know them.
            5         If we are troff, we Install them anyway
            6 
            7 March 8, 1994
            8 
            9         Nroff had problems with parsing quoted white space as options or
           10         character code in some terminals tables. Changed by having scanf
           11         include white space when necessary as suggested by Rich.
           12 
           13 March 1, 1994
           14 
           15         Made sanity check for terminal type depending on the trace level;
           16         trace level set with -tn flag at start up
           17 
           18 22 Feb, 1994
           19 
           20         More pointer shuffling fixes.
           21 
           22 18 Feb, 1994
           23 
           24         More disabling of multibyte stuff. Fixed bug in n5.c: casetm didn'
           25         know about the new format in the fontables.
           26 
           27 Feb 17, 1994
           28 
           29         Removed extra include <setlocale> from n1.c
           30 
           31         Fixed dubious pointer shuffling in n7.c, t10.c & n8.c. Thanks Rich!
           32 
           33 Feb 10, 1994
           34 
           35         Disabled the multybyte stuff; only plan 9 will get it.
           36 
           37 Jan 24, 1994
           38 
           39         Fixed nasty bug discovered by td, which caused core dumps on
           40         \D'l-0.002775i 0i' and apparently all numbers closer to 0
           41         than -.002775. Fixed in storeline() and storeword() (n7.c).
           42 
           43 Dec 16, 1993
           44 
           45         nroff & troff -N were looking for the TYPESETTER variable, causing
           46 
           47         troff: cannot open /sys/lib/troff/term/tab.202; line 1, file stdin
           48 
           49         fixed my moving getenv("TYPESETTER") to t10.c in t_ptinit(void).
           50 
           51 Dec 3, 1993:
           52 
           53         The sequence \s+2\H'+10' came sometimes out in the wrong order
           54         (x H before s), so there wasn't a difference bewteen \s+2\H'+10'
           55         and \H'+10'\s+2. Now the fonts bits of the CHARHT are used to
           56         register the current pontsize, so we can issue a s10 in t10.c
           57         if needed. A bit sneaky.
           58 
           59         Try to prevent double slashes in path names. Especially under
           60         plan9 things started to look ugly.
           61 
           62         Exception word list now grows dynamic.
           63 
           64 Nov 30, 1993:
           65 
           66         Allow multiple calls to .pi, requested by Rob.
           67                 .pi cat
           68                 .pi dogs
           69         is now equivalent with
           70                 .pi cat | dogs
           71 
           72 
           73         .ab now takes also optional error code:
           74                 .ab [n] [string]
           75         If n and string, n is exit code, string is message
           76         If n, n is exit code, ``User Abort, exit code n" is message
           77         If !n and string, standard exit code, string is message
           78         If !n and ! string, standard exit code, "User Abort" is message
           79 
           80 Nov 24, 1993:
           81 
           82         Reordered code to keep the UNASNI scripts happy.
           83 
           84         Nroff dumped core reading terminal tables: apparenty under plan 9,
           85         scanf includes the '\n'; added test for '\0' in parse in n10.c.
           86 
           87         Relative tab settings (.ta +1C +2C) didn't work; anding the
           88         previous value with TABMASK fixes this (caseta).
           89 
           90 Nov 23, 1993:
           91 
           92         Included code, originally done by bwk for plan 9, to handle
           93         multi-byte characters.
           94 
           95 Nov 3, 1993:
           96 
           97         ``pair internal'' two char names by shifting 16 bits. Will allow
           98         the use of 16 bit characters sets (Unicode in plan9 etc.) for
           99         macro's etc.
          100 
          101 Oct 20, 1993:
          102 
          103         Word & line buffers are now dynamic: No more word or line overflow
          104         unless when we run out of memory.
          105 
          106 Oct 11, 1993:
          107 
          108         lost diversion warning pops up regularly with man macro's. Due
          109         to a possible macro coding problem. Triggered by something like
          110         troff -man:
          111                 .TP
          112                 .TP
          113                 foo
          114                 .ex
          115             Minimal code:
          116                 .di aa
          117                 throw away this diversion (aa) while being defined.
          118                 .rm aa
          119                 .br
          120                 .di
          121 
          122         Fixed by disallowing .rm to throw away current diversion. The
          123         rn request will complain with:
          124 
          125                 cannot remove diversion aa during definition; etc.
          126 
          127 Sep 29, 1993:
          128 
          129         Some long standing fixes which never went back in the source.
          130         Thanks to Janet & Rich.
          131 
          132 Sep 28, 1993:
          133 
          134         Changed getach() (n1.c), so it does't consider truncated
          135         special characters as (8-bit) ascii.  STX ETX ENQ ACK and BELL
          136         are still allowed for the ultimate backwards compatibility.
          137 
          138         Some code changes, so real ANSI compilers like the SGI version
          139         (acc from Sun is a poor excuse for an ANSI compiler) don't
          140         barf.  Some compromises (static Tchar wbuf in n9.c) allowed so
          141         the unansified stuff for non-ansi compilers (cc on Sun's) will
          142         work as well.
          143 
          144 Sep 9, 1993:
          145 
          146         Be nice to Gerard. Now also word spaces in .tl and after
          147         tabs/fleids etc.
          148 
          149 Aug 12, 1993:
          150 
          151         Tabs setting can now be humongous. We also allow 99 tabs to
          152         accomodate tbl. As a side effect, NTM buffers are now 1K
          153 
          154 Aug 11, 1993:
          155 
          156         .R register, now contains maximum number of addessable
          157         registers minus the number actually used.
          158 
          159         Small esthetic changes in error messages; removed a statement
          160         which wasn't reached anyway.
          161 
          162 Aug 10, 1993:
          163 
          164         Some more speed hacks: be smarter doing the linear table
          165         lookups in alloc() and finds().
          166 
          167         The real name of the det diversion size macro is now gd.
          168 
          169 Aug 9, 1993:
          170 
          171         A much faster way to find the end of a string/macro, by
          172         remembering that when defined.
          173 
          174 Aug 6, 1993:
          175 
          176          Slightly more eficient way of skipping to the end of a
          177          string/macro
          178 
          179 Aug 5, 1993:
          180 
          181         Prevent character sign extension for 8-bit charnames diversions
          182         etc. by unpair
          183 
          184 Aug 4, 1993:
          185 
          186         Growing the dynamical macro/strings name space and registers
          187         space (See the experiment of 21 July) now with bigger
          188         increments. Casts added to satisfy non-ANSI compilers.
          189 
          190 Aug 3, 1993:
          191 
          192         Should check return value in alloc (n3.c), to prevent core dump
          193         when memory gets tight.
          194 
          195 July 28, 1993:
          196 
          197         New request: .sg <div> sets the dn and dl registers to the size
          198         of the diversion named in the argument. Doesn't do anything
          199         when the named diversion doesn't exist. The name sg is
          200         temporary until we find a better one.
          201 
          202 July 21, 1993:
          203 
          204         Experiment: Macro space  & registers name allocated
          205         dynamically. Note that current reallocation occurs in
          206         increments of 1, to force the code to be executed a lot; a kind
          207         of stress testing. Also, eight bit characters allowed in
          208         macro/string names.
          209 
          210 July 21, 1993:
          211 
          212         Turn on the escape mode if the end macro is called.
          213 
          214 July 20, 1993:
          215 
          216         Tracing mode now default off
          217 
          218         Don't print s stackdump either when a file specfied on the
          219         command line argument cannot be opened
          220 
          221 July 15, 1993:
          222 
          223         Don't print useless line & current file informations when a
          224         file specfied on the command line argument cannot be opened.
          225 
          226         Sun ansi compiler doesn't default adhere to standards. Undid
          227         the kludge in tdef.h
          228 
          229 July 14, 1993:
          230 
          231         Coding error made the tab type R not function properly
          232 
          233 July 12, 1993:
          234 
          235         Fixed a typo in the version stuff, noticed by Rich
          236 
          237 July 9, 1993:
          238 
          239         Added the dwb home configuration stuff, thanks RIch. Also,
          240         NCHARS is big enough. Added a fflush to casetm, so .fm <file>
          241         will be up to date.
          242 
          243 June 25, 1993 (Rich):
          244 
          245     -t option
          246 
          247         reinstated for the sake of compatibility. Some old
          248         shells scripts and man(1) from SunOs want this, sigh
          249 
          250     Compiler and system dependencies
          251 
          252         Some systems pull in sys/types.h via #include <time.h> and then
          253         the compiler complains about two ushort typedefs. Therefore,
          254         ushort is now Ushort (and uchar Uchar).
          255 
          256         The SVID specifies a strdup, POSIX doesn't, anyway, troff
          257         provides its own version, slightly different then the standard
          258         one. A To prevent name clashes with that definion, renamed to
          259         strdupl.
          260 
          261 June 24, 1993 (Rich):
          262 
          263         -V option added for DWB3.4 (rich)
          264 
          265 May 18, 1993:
          266 
          267     Trivial fix (.cf) request for troff -a 
          268 
          269         issuing
          270 
          271                 .cf /dev/null
          272 
          273         with troff -a gives some spurious output:
          274 
          275                 H720
          276                 H720
          277                 s10
          278                 f1
          279 
          280         fixed  by checking for ascii mode it ptesc(), ptps() and
          281         ptfont() in t10.c
          282 
          283 
          284     Enhancement
          285 
          286         Added a .tm request to roff. Works just like .tm, but now
          287         it will do it to file. The name is coined by Carmela. Great
          288         for creating indeces & toc's (we hope).
          289 
          290 May 18 1993:
          291 
          292     Compatibilty change
          293 
          294         Somebody complained that his favorite macro didn't work:
          295         it had a BELL (^G) in the name.  This was a non-documented
          296         feature of earlier versions of troff (although the
          297         documentation actually doesn't say that you can. (They can
          298         only be used for delimiters or with the tr request), so it
          299         isn't that important).
          300 
          301         But the sake of eternal backward compatibilaty I allowed
          302         some control characters like, STX, ACK,  etc. also be part
          303         of a macro/string name.
          304 
          305         While at it, I made it also possible to have eight bit
          306         characters be part of the name. It might be that this screws
          307         up the way users think about these things. For UNICODE
          308         versions, they probably want to do that as well, and that
          309         won't work as easy, (because these characters are 16-bits
          310         wide), so it is dubious whether we actually want this.
          311 
          312         BTW. Now
          313 
          314                 .de \(ts\ts
          315                 .tm terminal sigma macro
          316                 ..
          317                 .\(ts\(ts
          318 
          319         also works, as long the internal cookie for ts isn't more then
          320         eight bits.
          321 
          322 May 12, 1993:
          323 
          324     Syntax change
          325 
          326         Some requests accept tabs as a separator, some don't and
          327         this can be a nuisance.  Now a tab is also recognized as
          328         an argument separator for requests, this makes
          329 
          330                 .so        /dev/null
          331 
          332         works.
          333 
          334         To be more precise, any motion character is allowed, so
          335 
          336                 .so\h'5i'/dev/null
          337 
          338         will work as well, if one really wants that.
          339 
          340         It will be a problem for users who really relied on this as in
          341 
          342                 .ds x        string
          343         
          344         and expect the tab to become part of the string a, but I haven't
          345         seen any use of that (obscure trick).
          346 
          347 May 6, 1993:
          348 
          349     Eileen count fixed
          350 
          351         Troff sometimes went in a loop, and exited with: ``job
          352         looping; check abuse of macros'' (also known as the Eileen's
          353         loop). It can be forced with the next trivial programme:
          354 
          355                 .de ff
          356                 .di xx
          357                 ..
          358                 .wh -1 ff
          359                 .bp
          360 
          361         Basically what happens is that a page transition now will
          362         happen in a diversion, which doesn't make sense. Wat really
          363         happens is that eject() (in n7.c) doesn't eject the frame
          364         because we are in a diversion.  This cause the loop in n1.c
          365         (because now always stack->pname <= ejl). Adding check on
          366         whether we are not in a diversion takes care of the problem.
          367 
          368 March 30, 1993:
          369 
          370     Need request, .ne
          371 
          372         When there is a begin of page trap set, and the first thing
          373         in the file is a .ne request, the trap gets fired, but,
          374         the x font R etc. cookies doen't come out, because the
          375         troff thinks that the first page pseudo transition already
          376         took place.  Fixed by forcing the start of the first page
          377         in the casene request with the same code as in casetl (which
          378         caused a similar problem quite some time ago).
          379 
          380     Change to .cf request ``Here document''
          381 
          382         If the argument of .cf starts with a <<, the rest of it is taken
          383         as an EOF token. It will reat the rest of the input until it hits
          384         the EOF token and copies it to the output. This is similar as
          385         the shell's ``here document'' mechanisme and put in place to
          386         improve the kludgy way picasso, picpack etc. now include
          387         postscript.
          388 
          389     Using troff -TLatin1 (DWB version) and \N'...' caused core dump
          390 
          391         In t11, in chadd, it should test on NCHARS - ALPHABET to see
          392         whether we run out of table space (and we probably should beaf
          393         up NCHARS for the DWB version).
          394 
          395 March 16, 1993:
          396 
          397     Diversion rename bug fix
          398 
          399         It is possible to get troff in an infinite loop by renaming a
          400         diversion in progress, and calling it later with the
          401         new name (as in .di xx, .rn xx yy, .yy). The effect depends on
          402         whether troff already put stuff in the diversion or not.
          403 
          404         Fix by having .rn also rename the current diversion (if
          405         there is any and when appropriate).  If the diversion calls
          406         itself by the new name and given the fix made on 11 nov
          407         1992, this will now result in an error.  (BTW, the fix from
          408         11 nov is improved: diversions nest, so we have to account
          409         for that).
          410 
          411 December 18, 1992:
          412         Some people have complete novels as comments, so we need
          413         to skip comments while checking the legality of font files.
          414         thaks Rixh
          415 
          416 December 16, 1992
          417 
          418         Some people rely on the order that -r arguments are given,
          419         so that troff -rC1 -rC3 ends up setting register C to 3.
          420         Because cpushback() pushes things in a LIFO order back, we
          421         have to do the same to get -r args in a FIFO order.
          422 
          423 Nov 17, 1992:
          424 
          425         Giving a -rL8 option cuased the string .nr L 8 to be printed
          426         on the output, using the wonderful 3b2. Some garbage was
          427         left in buf[100] in main(). Fixed by setting buf[0] explicitly
          428         to 0 (because some C-compilers complain about ``no automatic
          429         aggregate initialization'').
          430 
          431 Nov 11, 1992:
          432 
          433     Diversion bug fix
          434 
          435         If a diversion was being read and the input is faulty so
          436         the diversion was reading in itself, it caused troff to
          437         loop undefinitely. This was easily fixed by a test in
          438         control(a,b) in n1.c.
          439 
          440         Something similar things might happen with macros causing
          441         the ``eileenct problem'', but I didn't look for that. We
          442         have to wait until it happens.
          443 
          444 Oct 26, 1992:
          445 
          446     Numeric arguments:
          447 
          448         Illegal argments are treated as missing arguments. This
          449         changed the semantics of .ll, .ls, .in, .lg,  .ul, .cu .lt
          450         (which acted as if the argument was 0) and .ps which was
          451         simply ignored with an illegal argument.
          452 
          453         Tidied up number parsing in atoi1(). This prevents arguments
          454         like .x or 1.2.3.4 being interpret as a legal number (nonumb = 0)
          455 
          456     Numeric arguments error reporting:
          457 
          458         Controlled by .pt, illegal numbers are now reported (default
          459         trace mode is 1).  This is also true for the escapes:
          460         \h'..', \v'..' \H'..', \S'..', \N'..', \D'..', \l'.., \L'..
          461         and \x'..'.
          462 
          463         \D'c' is the only drawing request which doesn't take a pair
          464         of numbers as arguments, so a special case is put here in
          465         setdraw() (This code actually could use an overhaul to get
          466         better parsing. As long as the \D'..' cookies are machine
          467         generated it is low on the priority list).
          468 
          469         Don't generate an error if the illegal argument to a request
          470         is a \}. It is too painful to do right (although it can be
          471         done, but it would clutter getch() and getcho() even more).
          472 
          473     Input line numbers (.c register) bug fixes:
          474 
          475         In not taken branches of .if or .ie, the input line #
          476         (numtab[CD].val) should be raised when necessary (in eatblk()).
          477 
          478         For concealed newlines, we still should count the line for input.
          479 
          480         Setfield (n9.c) sometimes pushes the rest of the line back to
          481         the input (including \n), without adjusting numtab[CD].val
          482 
          483         Because .c (and so numtab[CD].val) is the number of lines read
          484         and the error might actually happen in the current line
          485         (before seeing the '\n), we need to apply correction in
          486         errprint when nlflg set. (This correction needs to be undone
          487         when inside a macro because the nlflg is set by reading the
          488         args to the macro).
          489 
          490     Line number setting (.lf) request bug fixes:
          491 
          492         I interpret that the .c register will contain the number of
          493         read lines, not including the current one.
          494 
          495         Also, don't change the input line number when the first
          496         argument of .lf is not a number.
          497 
          498         As a net effect, the next input
          499 
          500                 .EQ
          501                 .EN
          502                 .ab
          503 
          504         will generate the same output whether eqn has been used or not.
          505 
          506     If request bug fix:
          507 
          508         A ``.if page .tm foo'' caused the next line being ignored;
          509         This bcause when the 2nd delimiter of a string couldn't be
          510         found in cmpstr, the next line was always eaten. Solution:
          511         in caseif1, if the condition is false, we should check
          512         nlflg before eating a block.  (Note: We might have eaten
          513         \{\ as well.  We could disallow the \{\ in a string to be
          514         compared to prevent that but that might break other things).
          515 
          516     Enhancement to .pt:
          517 
          518         The .pt now pops the previous values when no argument is
          519         specified. Turned out to be handy when chasing for problems.
          520         Just ``bracked'' the code with .pt 7 and .pt and you get
          521         a trace of only that block. The meaning of the arguments
          522         is now:
          523                 01      trace numeric arguments (default on)
          524                 02        trace requests
          525                 04        trace macros
          526 
          527     Abort request (.ab) beautification:
          528 
          529         Don't print the extra carriage return when .ab is called
          530         without an argument.
          531 
          532 Oct 12, 1992:
          533 
          534         (Comments & spelling errors from this day on by jaap)
          535 
          536         replaced 32767 by INT_MAX in several places to allow for very
          537         long pages (on 32-but machines).
          538 
          539         The ``.fp 1 R   \"COMMENT'' complains about ``./troff: Can't
          540         open font file /usr/lib/font/devpost/h'' on some systems. It
          541         sees the tab as part of the optional font file.  Apparently it
          542         is system dependent whether isgraph() includes the tab
          543         character.  Fixed by using getach() in getname() in n1.c
          544         instead.
          545 
          546 Aug 28, 1992:
          547         removed call to popi from rdtty();  it was eating up the
          548         rest of the macro if it was used from within one.  (thanks, jaap)
          549 
          550 
          551 Jul 21, 1992:
          552         added extra test in nextfile() to pop current input file
          553         only if not in .nx command.  thanks to jaap.
          554 
          555         added test in getword() to avoid hyphenating after \z character,
          556         which prevents any hyphenation inside \X'...'.  thanks to jaap.
          557 
          558         added, then removed, code in getword() to prevent hyphenating
          559         anything shorter than 6 characters.  looks like it changed a
          560         lot more than i thought.
          561 
          562 Jul 12, 1992:
          563         added .pt request to trace macros and requests (from jaap).
          564         .pt N Print trace of macros (N=1), requests (N=2) or both (N=3)
          565 
          566 Jun 5, 1992:
          567         added tests to t.twrest and t.twinit to avoid 0 deref in
          568         n2 and n10, for nroff -t xxxxx.  thanks to Rich Drechsler.
          569 
          570 May 22, 1992:
          571         added extern decls to e.g., void Tchar (*hmot)(void) in tdef.h
          572         and added definition to ni.c, so pointers are defined explicitly.
          573         makes it work on turbo c++ and probably others.
          574 
          575         changed a couple of isdigit's and isgraph(getch()) to avoid
          576         multiple evaluation (even though it shouldn't happen).
          577 
          578         Made /usr/bin/nroff a shell script.
          579 
          580 May 12, 1992:
          581         n1.c: need p++ after strrchr to skip / in program name.
          582         thanks to Rich Drechsler.
          583 
          584 Apr 17, 1992:
          585         casefi(), n5.c: .u register should be 0 or 1, not incremented
          586         with each .fi.
          587 
          588 Apr 5, 1992:
          589         fiddled n7.c and added _nmwid to the environment, to add a
          590         5th argument to .nm:  the maximum number of digits in any
          591         line number.  default is 3, which was previously hardwired in.
          592 
          593         added jaap's code for yet another register which actually delivers
          594         a string, called .S (so it can easily go in the switch in setn()
          595         in n4.c); it delivers the current tabstop and alignment modes in
          596         a format suitable for a subsequent .ta \n(.S command:
          597                 .ds T \n(.S
          598                 ...
          599                 .ta \*T
          600 
          601 Mar 30, 1992:
          602         added test in getword to avoid hyphenating things with motions
          603         (and avoid a core dump sometimes too).
          604 
          605 Mar 13, 1992:
          606         \n(sb initialized wrong in setwd().
          607 
          608         TYPESETTER=foo troff -Tpost used foo instead of post.
          609 
          610 Mar 12, 1992:
          611         rearranged tests in popf so that .so is closed properly before
          612         moving on to the next macro package.
          613 
          614 Mar 1, 1992:
          615         input mechanism rearranged to use getc() instead of stack of
          616         explicit input buffers.  5-10% slowdown.
          617 
          618 Jan 28, 1992:
          619         fixed .tm \(mi to print something sensible.  thanks to jaap.
          620 
          621 Jan 2, 1992:
          622         fiddle setfp so doesn't put out font stuff if -a turned on.
          623 
          624 Dec 17, 1991:
          625         copy 3rd argument in .fp commands to x font ... lines when it contains
          626         a /, for testing fonts locally.
          627 
          628 Dec 13, 1991:
          629         parameterize the font directories, etc., so can be set in makefiles.
          630         added -N argument to run as nroff.
          631 
          632 Nov 8, 1991:
          633         add a maplow(towlower...) in n8.c to handle brain-damaged libraries.
          634 
          635 Nov 2, 1991:
          636         merged nroff into troff, based on Ken's plan 9 version.
          637         merged nii.c into ni.c, removed tw.h, etc.  more work needed
          638         to make this stuff cleaner.
          639 
          640 July 27, 1991:
          641         added test in setn in n4 to fix bug that permitted things like
          642         \n (ab to work "properly".  thanks to jaap for finding and fixing.
          643 
          644         added paranoid testing in t11 to make sure font files look ok.
          645 
          646 May 13, 1991:
          647         moved evaluation of \(xx from copy mode to non-copy mode, so that
          648         weird character names wouldn't get reevaluated in argument parsing.
          649         installed july 27.
          650 
          651 May 6, 1991:
          652         increased size of hyphenation exception buffer to 512 from 128
          653 
          654 Apr 14, 1991:
          655         added an extra redundant call of ptfont in setfp, since it appears
          656         that some versions of adobe transcript assume that an "x font" command
          657         means to change the actual font as well.  the fix preserves the current font.
          658         thanks to david brailsford and friends for spotting the problem.
          659 
          660         fixed up tests in alpha() in n8 to defend isalpha() against too-big inputs.
          661         punct() argument had wrong type too.  thanks to rich drexler and peter nelson.
          662 
          663 Mar 19, 1991:
          664         fixed bug that prevented .rd from working with new corebuf organization.
          665 
          666         fixed bug that caused .ig inside diversions to give bad storage
          667         allocation.  thanks to arthur david olson, whose fix was on netnews
          668         3 years earlier.
          669 
          670 Mar 5, 1991:
          671         huge table sizes for kanji.
          672 
          673 Feb ??, 1991:
          674         working on dealing with large alphabets, notably kanji.
          675         added "defaultwidth" to font descriptions, for characters
          676         not given an explicit width.
          677 
          678 Jan, 1991:
          679         added tex hyphenation, using standard tex data files, but not the
          680         elaborate compressed trie, which is a lot of trouble to save maybe
          681         40k bytes.  this appears to run at exactly the same speed as before.
          682 
          683         so far this stuff reads into a fixed size array; that should change.
          684         it should also be possible to deal with multiple languages.
          685 
          686         the command .ha sets the algorithm.  .ha 1 => tex, with troff rules
          687         if tex doesn't hyphenate;  .ha 0 gives troff rules, and .ha resets
          688         to the default, which is tex.  the hyphenation algorithm is part of
          689         the environment, a nod to a future in which i handle more than one
          690         language.
          691 
          692         replaced the fixed size corebuf array for string/macro storage by
          693         a dynamic structure that can grow.
          694 
          695         this appears to slow things down by maybe 3%.  the code is about
          696         the same complexity.
          697 
          698 Dec 27, 1990:
          699         converted to ansi c, based on some work by ken thompson, but not
          700         as thoroughly as he did.  there is a shell script unansi and an awk
          701         program cvt that will help you step back in time if you do not have
          702         an ansi c compiler.
          703 
          704         moved the special-name characters up to 256 instead of 128, although
          705         done in terms of ALPHABET, so one can pass 8 bit characters through.
          706         removed lots of 0177's and similar numbers.  input is now not filtered,
          707         and if a character with the 8th bit on comes in, it will go out again.
          708 
          709         fixed t11.c to read character names in hex or octal as well as
          710         single-character ascii.
          711 
          712         unknown characters are now carried through with width = spacewidth.
          713         needs a way to set widths.
          714 
          715         removed all signal handling from troff.  you signal, you die.
          716 
          717         added -d option to print version number.
          718 
          719 Dec 7, 1990:
          720         .fp 3 V VERYLONGNAME used to truncate the name to 10 chars; fixed.
          721 
          722         increased the limit on FBUFSZ for tables with very long fields.
          723 
          724         changed atoi1() to use double to avoid intermediate overflow.
          725 
          726         moved filenames like /usr/lib/font into tdef.h for easy change.
          727         removed some dreggish definitions.
          728 
          729         cleaned up non-portable error printing stuff;  fixed up some messages.
          730 
          731 Dec 12, 1989:
          732         Removed the .! command, an undocumented synonym for .sy.
          733 
          734 Dec 4, 1989:
          735         Another wart to the \X code, to try to preserve blanks in all situations.
          736 
          737 Nov 17, 1989:
          738         A number of small changes preparatory to getting rid of nroff.
          739         The argument -Tnroff or -Tnroff-12 changes some internal values
          740         so that the predicate .if n is true and certain arithmetic operations
          741         are done as if nroff.  This design is not yet final.
          742 
          743 Nov 7, 1989:
          744         Fixed hyphenation for nov-ice, ad-vice, de-vice, ser-vice, *-vice.
          745 
          746 Oct 11, 1989:
          747         It is now permitted to do an explicit change to font S.
          748         It is not clear what will break (though nothing seems to have).
          749 
          750 Oct 10, 1989:
          751         Modified flush code to always put out \nH instead of sometimes h.
          752         This makes it easier to parse the output for positioning.
          753 
          754 Sep 9, 1989:
          755         Fixed internal representation of \D'~...' so that it
          756         is immune to .tr ~ and variations.  No external change.
          757 
          758 Aug 9, 1989:
          759         Changed .tm so it outputs \e, \%, \-, \&, \(blank).
          760         This might break indexing code.
          761         Only in the new version, as are all subsequent fixes.
          762 
          763 July, 1989:
          764         A major internal change:  font information is read in ascii
          765         instead of the weird binary format of makedev (which is now dead).
          766         character names need not all appear in DESC;  new names that
          767         appear when a font is used become part of the set of known names.
          768 
          769         There are some flaky bits here (it's conceivable that some \N
          770         number will collide with a real name), and it's probably 10-15%
          771         slower.  Tant pis.
          772 
          773         As a by-product, nroff no longer compiles.  I'll probably get
          774         back to this, but an alternative is to bag it once and for all.
          775 
          776 May 25, 1989:
          777         Another bug in \l, this time when width is 0.  Not installed,
          778         since it's in the new font version.
          779 
          780 Apr 23, 1989:
          781         Fixed bug in n9 that caused core dump with unterminated
          782         \l command, like \l'1.5i
          783 
          784         ptflush no longer called when -a is on.
          785 
          786 Apr 12, 1989:
          787         fixed bug in n2 that failed to suppress printing of \!
          788         output when a -o was in effect.
          789 
          790 Apr 5, 1989:
          791         .fl and \X now cause output of size, font, hpos and vpos.
          792         this is necesary for postprocessors that intend to insert
          793         independent material, such as postscript.
          794 
          795 Feb 1, 1989:
          796         wait for .pi pipe to empty before exiting
          797 
          798 Oct 2, 1988:
          799         default is now -Tpost
          800 
          801 Sep 19, 1988:
          802         added abortive code to handle built-up characters by
          803         passing something through as \D'b...'.  never used.
          804 
          805 Jul 4, 1988:
          806         replaced the sbrk nonsense in n3.c by calls to malloc.
          807 
          808         \N now tests against proper font size.
          809 
          810         installed Jaap Akkerhuis's code (mutatis mutandis) for
          811         permitting up to 99 fonts, swapping them into font pos 0
          812         as needed.  fixes the long-standing problem of having
          813         multiple font changes on a single output line.
          814 
          815 Jul 2, 1988:
          816         \X now preserves spaces even when contents are diverted.
          817 
          818         \N code safer -- NTRTAB and NWIDCACHE enlarged.
          819 
          820 Jul 14, 1987:
          821         Fixed obscure bug causing incorrect indentation of .mc output.