FIXES 24 KB

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