diff options
Diffstat (limited to 'contrib/groff')
564 files changed, 193140 insertions, 0 deletions
diff --git a/contrib/groff/BUG-REPORT b/contrib/groff/BUG-REPORT new file mode 100644 index 000000000000..fe26601e5da5 --- /dev/null +++ b/contrib/groff/BUG-REPORT @@ -0,0 +1,55 @@ + Groff Bug Report + +Please read the PROBLEMS file before sending in a bug report. + +Please fill in all fields, even if you think they are not relevant. + +Please delete the text in brackets before sending it in. + +Please report separate bugs separately. + +Send the completed form to bug-groff@prep.ai.mit.edu. + +GROFF VERSION: +[The version of groff you are using. For example, `1.05'] + +MACHINE: +[The machine you are using. For example, `Sun SPARCstation 2'] + +OS: +[The operating system you are using. For example, `SunOS 4.1.1'] + +COMPILER: +[The compiler you are used to compile groff. For example, `g++ 1.40.3'] + +INPUT FILES: +[Include all the files necessary to reproduce the problem that are not +part of the standard groff distribution. This includes font +description files, DESC files and macro files (with the exception of +the -ms and -mm macros: I have them). Send them as as a shell archive +or as a uuencoded, compressed tar file. + +It's easier for me if you can provide an example that doesn't depend +on any macro package, but obviously if you're reporting a problem with +a macro package that won't be possible. Also a short example is more +convenient than a long one, but don't worry if you can't find a short +example. Don't say something like ``any file that X'': always send a +definite example.] + +COMMAND LINE: +[The command line that I should run in order to observe the bug. For +example, `gtroff -Tps bug.tr'. If the command line uses -ms or -mm, +say whether these refer to the groff versions or the Unix versions of +the macros.] + +DESCRIPTION OF INCORRECT BEHAVIOUR: +[What goes wrong when that command line is run? For example, `gtroff +gets a segmentation fault', or `The output looks bad because the bar +over the x is too long and is too far over to the left.' If you get +an error message, include it here without modification: don't edit it +to make it more readable.] + +SUGGESTED FIX [optional]: +[If you can suggest a fix for the problem, include a context diff +here. But don't delay sending in a bug report in the hope of finding +a fix. Guesses about the cause of the bug are not usually helpful.] diff --git a/contrib/groff/COPYING b/contrib/groff/COPYING new file mode 100644 index 000000000000..e8a612e5c3b9 --- /dev/null +++ b/contrib/groff/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/contrib/groff/ChangeLog b/contrib/groff/ChangeLog new file mode 100644 index 000000000000..872c759a3360 --- /dev/null +++ b/contrib/groff/ChangeLog @@ -0,0 +1,5717 @@ +Sun Nov 26 11:45:13 1995 James Clark <jjc@jclark.com> + + * Version 1.10 released. + +Fri Nov 24 09:56:16 1995 James Clark <jjc@jclark.com> + + * afmtodit/afmtodit.pl: Avoid comment on first line. + +Mon Nov 20 11:13:49 1995 James Clark <jjc@jclark.com> + + * aclocal.m4 (GROFF_INSTALL_SH): New macro. + * configure.in: Call it. + + * Makefile.sub (configure): Depends on aclocal.m4 not acgroff.m4. + (distfiles): Doesn't depend on config.log or config.cache. + +Sun Oct 1 08:45:36 1995 James Clark <jjc@jclark.com> + + * grog/grog.sh: Use print "" rather than print in END rule. + +Wed Aug 23 13:30:52 1995 James Clark <jjc@jclark.com> + + * tbl/main.cc (process_data): Don't give error for excess data + entries that are comments. + +Fri Jul 28 11:00:27 1995 James Clark <jjc@jclark.com> + + * tbl/main.cc (process_data): Fix case where new for-scope rules + silently change meaning of code. + +Tue Jul 4 23:39:51 1995 James Clark <jjc@jclark.com> + + * troff/env.cc (hyphenate): Loop over all consecutive sequences + of non-zero hyphenation codes. + +Sat Jul 1 00:42:15 1995 James Clark <jjc@jclark.com> + + * aclocal.m4 (GROFF_POSIX): Use conflicting declaration technique. + +Thu Jun 29 13:58:36 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.e (ip): Divert the tag so as to freeze the spaces. + +Tue Jun 27 12:30:16 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.andoc: Make it work in compatibility mode. + + * refer/token.h (token_info::is_range_sep): New function. + * refer/token.cc (init_special_chars): Make \(en a RANGE_SEP. + * refer/ref.cc (reference::output): More sophisticated check for + multiple pages. + + * devps/prologue.ps (MANUAL): New procedure. + * grops/ps.cc (main): New -m option. + (usage): Include -m. + (ps_printer::~ps_printer): Implement -m. + + * aclocal.m4 (GROFF_G): New macro. + * configure.in: Call it. + * Makefile.in (g): Provided by configure. + + * hpftodit/hpftodit.cc (basename): Rename to xbasename. + + * tmac/tmac.tty: Disable warning about bad fonts. Remove font + translations. + + * Makefile.in (tmacpath): Don't include /usr/lib/tmac. + (tmac_m, tmac_s): Deleted. + (sys_tmac_prefix, tmac_wrap, tmac_prefix, tmac_an_prefix, + tmac_s_prefix): New variables. + (MDEFINES): Change accordingly. + * Makefile.comm (.man.n): Use new TMAC_* variables. + * configure.in (GROFF_TMAC): Call. + * aclocal.m4 (GROFF_TMAC): Define. + * tmac/Makefile.sub (stamp_wrap): New target. + (install_data, uninstall_sub): Handle macro wrapping. + +Mon Jun 26 14:54:39 1995 James Clark <jjc@jclark.com> + + * tbl/main.cc (main): Ignore -T option. + +Thu Jun 22 09:08:06 1995 James Clark <jjc@jclark.com> + + * devlj4/generate/special.map: Add definition of \(nb. + + * tmac/tmac.dvi: Add definition of \(nb. + + * troff/dictionary.c (dictionary::dictionary): association::v gets + initialized by association::association. + + * tmac/Makefile.sub: Avoid using temporary files when installing. + + * troff/env.cc (environment::set_font): Make bad font number a + warning. + + * Makefile.in (fontpath): Remove $(prefix)/lib/font from fontpath. + + * Makefile.in (datadir): Use share rather than lib. + + * groff/groff.cc (basename): Rename to xbasename. + +Wed Jun 21 16:59:46 1995 James Clark <jjc@jclark.com> + + * Makefile (CCLIBS): Don't use. + * Makefile.ccpg: Likewise. + + * acgroff.m4: Rename to... + * aclocal.m4: Modify extensively for autoconf 2. + * configure.in: Likewise. + * Makefile.in: Likewise. + + * groff/pipeline.c (const): Declare as empty if __STDC__ not + defined. + (xstrsignal): Check for definition of NSIG. Conditionalize + on SYS_SIGLIST_DECLARED. Make return type const. + +Sat Jun 10 12:28:16 1995 James Clark <jjc@jclark.com> + + * troff/input.cc (interpolate_macro): Rephrase missing space + warning. + +Thu May 11 01:07:16 1995 Jason Merrill <jason@phydeaux.cygnus.com> + + * addftinfo/addftinfo.cc, eqn/delim.cc, eqn/lex.cc, eqn/list.cc, + grodvi/dvi.cc, groff/groff.cc, grops/ps.cc, grops/psrm.cc, + grotty/tty.cc, include/ptable.h indxbib/indxbib.cc, + libbib/index.cc, libbib/linear.cc, libbib/search.cc, + libdriver/input.cc, libdriver/printer.cc, libgroff/font.cc, + libgroff/lf.cc, libgroff/nametoindex.cc, libgroff/ptable.cc, + libgroff/string.cc, lkbib/lkbib.cc, lookbib/lookbib.cc, + pic/lex.cc, pic/object.cc, pic/pic.y refer/label.y refer/ref.cc, + refer/refer.cc, refer/token.cc, tbl/main.cc, tbl/table.cc, + tfmtodit/tfmtodit.cc, troff/dictionary.cc, troff/div.cc, + troff/env.cc, troff/input.cc, troff/node.cc, troff/symbol.cc: + Fix 'for' scoping. + +Wed Apr 19 21:15:11 1995 James Clark <jjc@jclark.com> + + * troff/input.cc (spring_trap): Push a macro_iterator rather than a + string_iterator. + (spring_trap, postpone_traps, unpostpone_traps): Move to later in + file. + (macro_iterator::macro_iterator): Add additional argument. + +Mon Apr 10 12:06:02 1995 James Clark <jjc@jclark.com> + + * troff/div.cc (vertical_size::vertical_size): In place of integer + specifying line spacing use cunits specifying post vertical + space. + (macro_diversion::output, top_level_diversion::output): Likewise. + * troff/div.h: Change declarations accordingly. + * troff/env.cc (pending_output_line): Replace ls field by post_vs + field. + (pending_output_line::pending_output_line, + pending_output_line::output, environment::output, + environment::output_line, environment::output_title, + environment::hyphenate_line): In place of + integer specifying line spacing use cunits specifying post vertical + space. + (environment::environment): Add post_vertical_spacing and + prev_post_vertical_spacing arguments. + (environment::get_post_vertical_spacing): New function. + (environment::total_post_vertical_spacing): New function. + (environment::post_vertical_spacing): New function. + (init_env_requests): Initialize pvs request and .pvs register. + * troff/env.h: Change declarations. + +Tue Mar 28 09:52:07 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.pspic: Immediately remove the temporary file. + +Sat Mar 25 10:43:11 1995 James Clark <jjc@jclark.com> + + * tmac/tmac.pspic (PSPIC): Scale graphic uniformly even when + height is specified. + +Thu Jan 26 16:20:13 1995 James Clark <jjc@jclark.com> + + * tbl/table.c (struct vertical rule, class table_entry): Use int + not short for start_row and end_row. + +Fri Jan 13 13:53:05 1995 James Clark <jjc@jclark.com> + + * troff/input.cc (trapping_blank_line, blank_line_macro): New + functions. + (diverted_space_node::reread, process_input_stack): Call + trapping_blank_line() rather than blank_line(). + (init_input_requests): Bind "blm" to blank_line_macro(). + + * tmac/tmac.s (XA): Use .br and par@reset rather than XA. + +Tue Jan 10 11:40:35 1995 James Clark <jjc@jclark.com> + + * troff/env.cc (environment::possibly_break_line): Require that + width total excluding width of final space node be greater than + the target text length. + +Tue Jan 3 09:13:37 1995 James Clark <jjc@jclark.com> + + * troff/node.cc (kern_pair_node::vertical_extent): New function. + +Sun Dec 4 13:19:07 1994 James Clark <jjc@jclark.com> + + * troff/node.cc (charinfo_node): New class. + (glyph_node, composite_node): Derive from charinfo_node. Change + member functions accordingly. + +Wed Nov 30 10:29:29 1994 James Clark <jjc@jclark.com> + + * nroff/nroff.sh: Use -Tlatin1 not -TLatin1. + +Mon Aug 8 10:17:59 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.tty-char: Add definitions for \(ab and \[arrowvertex]. + + * devps/generate/textmap (notsubset): Add. + + * tmac/tmac.a4: New file. + +Sun Jul 24 20:08:42 1994 James Clark (jjc@jclark.com) + + * pic/main.cc (had_parse_error): New variable. + (do_picture, do_whole_file): Set had_parse_error if yyparse() + returns non-zero. + (main): Return 1 if had_parse_error is true. + +Tue Jul 19 13:40:31 1994 James Clark (jjc@jclark.com) + + * grolj4/lj4.cc (main): Avoid use of strtoul. + +Mon Jul 18 15:03:02 1994 James Clark (jjc@jclark.com) + + * nroff/nroff.sh: Default device is -Tlatin1 if $LC_CTYPE is + iso_8859_1 or $LESSCHARSET is latin1. + +Sun Jul 10 13:38:35 1994 James Clark (jjc@jclark.com) + + * hpftodit: New directory. + * Makefile.in (CCPROGDIRS): Add hpftodit. + * devlj4/generate: New directory. + +Thu Jul 7 23:49:48 1994 James Clark (jjc@jclark.com) + + * configure.in: Don't use AC_VFORK. + * groff/pipeline.c (run_pipeline): Use fork() always. + +Wed Jul 6 11:13:17 1994 James Clark (jjc@jclark.com) + + * grops/ps.cc (main): Use %1 not %s in error message for -w. + + * Makefile.in (CCPROGDIRS): Add grolj4. + (DEVDIRS): Add devlj4. + * grolj4, devlj4: New directories. + * tmac/troffrc: Handle lj4. + * tmac/tmac.lj4: New file. + +Fri Jun 17 18:02:53 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.e (@n): Set indent to 0 before calling |h. + +Wed Jun 1 07:33:47 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (do_if_request): At end of second string, switch + environments before getting next token. + +Fri May 20 07:39:18 1994 James Clark (jjc@jclark.com) + + * devps/psstrip.sed: Split rule that strips whitespace on either + side of delimiters. + +Wed May 18 08:13:47 1994 James Clark (jjc@jclark.com) + + * troff/node.h (font_family::make_definition): Add return value to + declaration. * troff/symbol.h (symbol::operator==, + symbol::operator!=): Likewise. + +Tue May 17 20:46:06 1994 James Clark (jjc@jclark.com) + + * groff/groff.cc (main, help, synopsis): Handle -S. + (possible_command::insert_arg): New function. + + * tmac/tmac.safer: New file. + * tmac/msafer.man: New file. + * tmac/Makefile.sub (FILES): Add tmac.safer and msafer.man. + +Thu Mar 10 01:58:30 1994 Paul Eggert (eggert@twinsun.com) + + * pic/pic.h, pic/main.cc (safer_flag): New variable. + * pic/pic.y (placeless_element): Avoid unsafe operations if + `safer_flag' is set. + * pic/main.cc (main): Add -S option, which sets `safer_flag'. + +Tue May 10 13:02:31 1994 James Clark (jjc@jclark.com) + + * eqn/lex.cc (get_token): Put call to add_context() in block to + work around Sun C++ 4.0 bug. + + * include/stringclass.h (operator +): Use ?: instead of `if' to + work around Sun C++ 4.0 bug. + +Thu May 5 11:18:03 1994 James Clark (jjc@jclark.com) + + * tbl/main.cc (process_format): Accept - as a synonym for the _ + key letter. + + * libbib/index.cc (minus_one): Don't declare as const. + +Fri Apr 29 09:32:48 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (get_char_for_escape_name): Push back a newline. + +Wed Apr 27 21:14:18 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (write_macro_request): New function. + (init_input_requests): Bind write_macro_request to writem. + +Sun Apr 17 11:15:38 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.s (@EN): Turn filling back on even if there was no + equation. + + * eqn/lex.cc (do_space): Supply missing argument to lex_error. + + * tmac/tmac.s (@TS): Renamed from TS. + (TS): Call LP then TS again. + (cov*ab-init): Alias @TS to TS. + + * tmac/tmac.s: Allow QP or RS to initialize. + + * tmac/tmac.s (par@load-init): New macro. Call at end of file. + Move initializations of PS and LL here. + (par@init): Don't initialize HY. Avoid changing environment 0. + (par*env-init): Don't all par@reset. + +Thu Apr 14 19:15:45 1994 James Clark (jjc@jclark.com) + + * include/posix.h: Include <fcntl.h> only if not using <osfcn.h>. + +Sun Apr 10 09:54:44 1994 James Clark (jjc@jclark.com) + + * Makefile.in (MDEFINES): Add LDFLAGS. + (LDFLAGS): Add definition line. + +Thu Apr 7 22:22:22 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (get_optional_char): Split off error check into... + (check_missing_character): New function. + * troff/token.h: Declare it. + * troff/env.cc (margin_character): Don't call get_optional_char. + Only call tok.next() after making the node. + + * include/lib.h (getopt): Make 2nd argument char *const *. + +Fri Mar 11 07:28:03 1994 James Clark (jjc@jclark.com) + + * nroff/conftest.sh: Deleted. + +Fri Mar 4 10:51:36 1994 James Clark (jjc@jclark.com) + + * pic/make-dos-dist: Deleted. + +Wed Mar 2 20:59:16 1994 James Clark (jjc@jclark.com) + + * devps/psstrip.sed: Strip comments before stripping trailing + white space. + +Sat Feb 19 13:07:16 1994 James Clark (jjc@jclark.com) + + * Version 1.09 released. + +Wed Feb 16 16:53:49 1994 James Clark (jjc@jclark.com) + + * tmac/doc-ditroff (hK): Don't reset page number if \nC is > 0. + +Mon Feb 14 08:26:40 1994 James Clark (jjc@jclark.com) + + * libgroff/font.cc (font::load_desc): Fix typo in error message. + +Sun Feb 13 09:37:38 1994 James Clark (jjc@jclark.com) + + * libgroff/new.cc (operator new): Rewrite so as to avoid warning + about returning without a value. + + * troff/charinfo.h (charinfo::get_special_translation): Cast + TRANSLATE_NONE to int. + + * refer/token.cc (lookup_token, store_token): Remove bogus loop + test. Fix test so that it works with n unsigned. + + * pic/pic.y (defaults_table): Fully bracket initializer. + * pic/lex.cc (lookup_keyword): Likewise. + * eqn/lex.cc (token_table, def_table): Likewise. + * eqn/box.cc (param_table): Likewise. + * troff/input.cc (warning_table): Likewise. + * libgroff/font.cc (table): Likewise. + * grops/ps.cc (ps_printer::special): Likewise. + * grops/psrm.cc (resource_manager::process_file): Likewise. + * tfmtodit/tfmtodit.cc (lig_chars, lig_table): Likewise. + * refer/command.cc (command_table): Likewise. + * addftinfo/addftinfo.cc (param_table): Likewise. + + * troff/symbol.cc (symbol::symbol): Prevent compiler warnings + about temp's being unused. + (unused): New function. + + * groff/pipeline.cc: Declare c_fatal. + + * libbib/linear.cc (bmpattern::search): Cast patterrn[--j] to + uchar. + + * libbib/index.cc (index_search_item::load): Prevent compiler + warnings about fd_closer's being unused. + (unused): New function. + +Sat Feb 12 10:31:59 1994 James Clark (jjc@jclark.com) + + * troff/input.cc (copy_mode_error): Make `prefix' static. + Fix typo. + + * include/posix.h: Include <osfcn.h> is HAVE_CC_OSFCN_H is + defined. + * acgroff.m4, configure.in, Makefile: Rename HAVE_CC_UNISTD_H to + HAVE_CC_OSFCN_H and modify accordingly. + + * troff/input.cc (init_charset_table): radicalex overlaps + horizontally. + + * groff/acgroff.m4 (GROFF_ISC_SYSV3): New macro (from + udodo!hans@relay.NL.net). + * groff/configure.in: Call it. + + * groff/acgroff.m4 (GROFF_PCLOSE): New macro. + * groff/configure.in: Call it. + * include/lib.h: Conditionalize declaration of pclose. + + * troff/div.cc (last_page_number): New global variable. + (top_level_diversion::begin_page): Exit if we just printed the + last page. + * troff/div.h (last_page_number): Declare it. + * troff/input.cc (parse_output_page_list): Set last_page_number. + + * eqn/sqrt.cc: Rename \(rn to \[radicalex]. + * devps/S, devps/textmap, tmac/tmac.ps, tmac/tmac.dvi, + tmac/tmac.X: Likewise. + * tmac/tmac.ps, tmac/tmac.X, tmac.dvi: Add definitions of \(rn. + * tmac.dvi: Make \(ru and \(ul extend beyond their width by .04m. + +Fri Feb 11 11:45:40 1994 James Clark (jjc@jclark.com) + + * tmac/doc-ditroff (hK): Remove groff specific code which + prevented page-breaks between separate manual entries. If this is + the first page, don't set the page number to 1. + + * acgroff.m4 (GROFF_POSIX): New macro. + * configure.in: Use it. + + * troff/node.cc (class real_output_file, + real_output_file::real_output_file, + real_output_file::~real_output_file): Conditionalize use of + popen/pclose on POPEN_MISSING. + * troff/node.h: Conditionalize pipe_command on POPEN_MISSING. + * troff/input.cc (pipe_command): Give an error if POPEN_MISSING. + (pipe_source): Similarily. + + * acgroff.m4 (GROFF_PROG_CCC): Update message about libg++. + + * acgroff.m4 (GROFF_GETOPT, GROFF_PUTENV, GROFF_POPEN): Detect + presence of declarations by trying to compile example with + conflicting declarations. (gcc only gives a warning for missing + declarations.) + +Wed Feb 9 09:12:23 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.pspic (PSPIC): Allow options to specify alignment + (from Ulrich Lauther). + +Tue Feb 8 03:56:40 1994 James Clark (jjc@jclark.com) + + * libbib/linear.cc (file_buffer::load): Use S_ISREG macro. + +Thu Feb 3 09:34:35 1994 James Clark (jjc@jclark.com) + + * indxbib/indxbib.cc (write_hash_table): Add code for case where + pointers and ints have different sizes. + +Sun Jan 9 16:17:51 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.s (par*env-init): Call par@reset. + +Fri Jan 7 10:24:27 1994 James Clark (jjc@jclark.com) + + * tmac/tmac.s (@IP): Switch to a new environment when diverting + tag. + (par*push-tag-env, par*pop-tag-env): New macros. + +Wed Jan 5 21:18:34 1994 James Clark (jjc@jclark.com) + + * grops/ps.cc (ps_printer::ps_printer): Use MAX_LINE_LENGTH for + initializing `out'. Reduce MAX_LINE_LENGTH from 79 to 72. + + * grops/ps.cc (ps_printer::~ps_printer): Output %%CreationDate + comment. Include <time.h>. + +Wed Dec 15 14:14:00 1993 James Clark (jjc@jclark.com) + + * grops/ps.cc (is_small_h, is_small_v): Deleted. + (ps_printer::flush_sbuf): Use absolute motion only at beginning of + lines. + +Tue Dec 14 10:06:34 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (read_request): Only print a prompt if reading + from the terminal. Also clearerr on EOF if reading from the + terminal. Declare isatty. + +Mon Nov 29 08:38:15 1993 James Clark (jjc@jclark.com) + + * refer/label.y: Rename map_t to map_func and extractor_t to + extractor_func. + +Sat Oct 30 06:38:12 1993 James Clark (jjc@jclark.com) + + * include/assert.h: Don't use volatile. + * libgroff/assert.cc: Likewise. + +Fri Oct 29 15:00:23 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (abort_request): Look at character in tok before + calling get_copy(). + +Thu Oct 28 14:09:48 1993 James Clark (jjc@jclark.com) + + * troff/troff.h (NO_RETURN): Deleted. + * troff/div.cc (cleanup_and_exit): Don't declare aas NO_RETURN. + * troff/input.cc (exit_troff): Likewise + + * Makefile.in: Remove `Making ...' messages since GNU make now + gives these. + + * configure.in: Use AC_HAVE_HEADERS(unistd.h) instead of AC_UNISTD_H. + +Wed Oct 27 11:12:51 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.s (@init): Initialize PO to \n(.o here, rather than + to constant 1 inch. + +Sat Oct 23 10:03:52 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.e (hl): Use \n[.in] rather than \n(.i. + +Thu Oct 14 12:09:45 1993 James Clark (jjc@jclark.com) + + * eqn/delim.cc (delim_box::compute_metrics): Don't increase + MARK_REG if there was no left delimiter. + +Sat Oct 2 19:54:47 1993 James Clark (jjc@jclark.com) + + * pic/troff.cc (troff_output::text): Set line thickness to + relative before outputting text. + + * tmac/tmac.e (@k): Don't zero ?T. + ((z): Likewise. + +Sat Sep 25 11:08:43 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.e ($p): Handle possibility that $3 is empty. + +Wed Aug 18 08:51:41 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (decode_args): Warn about unquoted tabs (from + Paul Eggert). + +Tue Aug 10 08:38:32 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (ignoring): New variable. + (ignore): Set ignoring during call to do_define_macro. + (do_define_macro): Clear ignoring before interpolating terminating + macro. + (copy_mode_error): New function. + (get_char_for_escape_name, read_long_escape_name, + interpolate_arg): Use copy_mode_error. + (warning_table): Add WARN_IG. + * troff/troff.h (WARN_IG): Declare. + (WARN_TOTAL): Change accordingly. + + * groff/pipeline.c (strsignal): Rename to xstrsignal. + * groff/groff.cc (strsignal): Delete declaration. + +Fri Jul 16 01:43:12 1993 James Clark (jjc@jclark.com) + + * troff/div.cc (page_offset): Use 'm' as default scaling. + +Sat Jul 3 09:11:38 1993 James Clark (jjc@jclark.com) + + * nroff/nroff.sh: Ignore -u. + +Wed Jun 9 12:17:27 1993 James Clark (jjc@jclark.com) + + * Makefile.in (MDEFINES): Pass down MAKEOVERRIDES. + +Fri Jun 4 17:35:47 1993 James Clark (jjc@jclark.com) + + * tmac/tmac.s (par*box-draw): Set adjustment mode to l while + drawing box. + (B2): With -Tascii, leave additional vertical space before + and after. Ensure that the left and right indent is restored to + what it was even if the point size changes. Don't call + par@finish. Change the indent, line length and title length + directly. With -Tascii, make the width of the box 1n less. + (B1): Remember 1n at the current point size. Don't call + par@reset. Change the indent, line length and title length + directly. Ensure that the temporary indent is preserved. + (par*box-mark-top): Turn off no spacing mode. + +Thu Jun 3 17:47:14 1993 James Clark (jjc@jclark.com) + + * Makefile.in (dist): Use .gz suffix. + +Thu May 27 20:04:59 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (main): Add return 0. + * pic/main.cc (main): Use return instead of exit. + * tbl/main.cc (main): Likewise. + * eqn/main.cc (main): Likewise. + * grops/ps.cc (main): Likewise. + * grotty/tty.cc (main): Likewise. + * groff/groff.cc (main): Likewise. + * grodvi/dvi.cc (main): Likewise. + * refer/refer.cc (main): Likewise. + * indxbib/indxbib.cc (main): Likewise. + * lkbib/lkbib.cc (main): Likewise. + * soelim/soelim.cc (main): Likewise. + * addftinfo/addftinfo.cc (main): Likewise. + * acgroff.m4 (GROFF_PROG_CCC, GROFF_CC_COMPILE_CHECK, + GROFF_COOKIE_BUG, GROFF_CC_ANSI_BUG): Likewise. + + * troff/token.h (process_input_stack): Don't declare as static. + * troff/input.cc: Likewise. + + * troff/node.c (invalidate_fontno): Make it a static member of + class font_family. Change callers. + * troff/node.c: Change declaration. + + * tbl/main.cc (struct input_entry_format): Add explicit public + specifier. + * tbl/table.cc (struct text_stuff, struct single_hline_stuff, + struct double_hline_stuff): Likewise. + * tbl/table.h (struct entry_format): Likewise. + * pic/object.h (struct saved_state): Likewise. + + * include/stringclass.h: Add forward declarations of friend + functions that are later declared as inline. Don't include inline + specifier in friend declaration. + + * libgroff/lib.h: Declare popen and pclose. + * acgroff.m4 (GROFF_POPEN): New macro. + * configure.in: Call it. + + * include/lib.h (PI): New constant. Undef first if necessary. + * tfmtodit/tfmtodit.cc (main): Use PI rather than M_PI. + * grops/ps.cc (degrees, radians): Likewise. + * libgroff/font.cc (font::get_skew): Likewise. + + * grops/ps.cc (is_ascii): New function. + (ps_output::put_string): Use is_ascii. Use csprint rather than + isprint. + (ps_printer::define_encoding): Use csspace. + * libgroff/strtol.c (ISASCII): New macro. + (strtol): Cast arguments to is*() and tolower() to unsigned char. + Use ISASCII rather than isascii. + * libgroff/cmap.cc: Use isascii() only if <ctype.h> defines it. + * libgroff/cset.cc: Likewise. + * libdriver/input.cc: Include cset.h. + (do_file, get_integer, possibly_get_integer): Use csdigit() rather + than isdigit(). + + * refer/refer.cc (main): Use %ld rather than %d for longs. + + * libbib/index.cc (index_search_item_iterator::get_tag): Use + S_ISREG macro. + + * addftinfo/addftinfo.cc (param_t): Add explicit `int'. + +Mon May 24 08:51:37 1993 James Clark (jjc@jclark.com) + + * troff/input.cc (hyphenation_code): Skip white space between + char/code pairs. + +Sun May 16 08:15:52 1993 James Clark (jjc at jclark.com) + + * tbl/table.h (table::entry_list_tailp): New member. + (table::table): Initialize it. + (table::add_entry): Use entry_list_tailp to avoid O(n^2) + behaviour. + +Sat May 15 17:26:00 1993 James Clark (jjc at jclark.com) + + * grotty/tty.cc (tty_printer::add_char): Don't discard characters + with negative horizontal positions. Remove casts of glyph::hpos to + int. + (USHRT_MAX): Delete definition. + (SHRT_MAX, SHRT_MIN): New definitions. + (glyph::hpos): Change type to short. + (tty_printer::end_page): Output multiple backspaces if necessary. + Remove casts of glyph::hpos to int. + +Fri May 7 12:14:37 1993 James Clark (jjc at jclark.com) + + * tmac/tmac.s (@RT): New definition. + +Thu May 6 21:36:54 1993 James Clark (jjc at jclark.com) + + * refer/refer.cc (do_file): Make sure current_filename is set when + filename is "-". + + * pic/common.cc (common_output::dot_line): Handle zero length + lines. + +Sun May 2 19:54:16 1993 James Clark (jjc at jclark.com) + + * tmac/tmac.s (par@reset): Get value for .hy for \n[HY]. + (par@init): Initialize \n[HY]. + +Mon Apr 26 11:43:16 1993 James Clark (jjc at jclark.com) + + * troff/dictionary.cc (dictionary::remove): Continue when + r < j < i. + +Sun Apr 25 11:03:00 1993 James Clark (jjc at jclark.com) + + * Makefile.com (.y.cc): Avoid ending up with two versions of + $(YTABH). + +Thu Apr 22 21:03:45 1993 James Clark (jjc at jclark.com) + + * tmac/tmac.dvi (\(,c): Define only if it does not exist. + (\(,C): Likewise. Also fix typo. + +Wed Apr 21 08:47:32 1993 James Clark (jjc at jclark.com) + + * lib.h: Delete extraneous semi-colon. + + * Add pso request: `so' from a pipe. + * troff/input.c (file_iterator::file_iterator): Add 3rd argument. + (file_iterator::close): New function. + (file_iterator::~file_iterator, file_iterator::next_file): Use + file_iterator::close. + (file_iterator::backtrace): Say `process' rather than `file' when + the stream is popened. + (pipe_source): New function. + (init_input_requests): Bind ".pso" to pipe_source. + +Tue Apr 20 00:02:26 1993 James Clark (jjc at jclark.com) + + * afmtodit/afmtodit.pl: Avoid single quotes in comments. + + * pfbtops/pfbtops.c: Output 64 characters per line. Output hex + digits in lower case. + +Mon Apr 19 09:55:57 1993 James Clark (jjc at jclark) + + * Version 1.08 released. + + * Makefile.in (dist): Insert || true after ln -s commands that + might fail. + + * mm: Update to mm 1.16. + + * acgroff.m4 (GROFF_CSH_HACK): New macro. + * configure.in: Call GROFF_CSH_HACK. Substitute for + SH_SCRIPT_SED_CMD. + * Makefile.in (SH_SCRIPT_SED_CMD): New variable. Include in + MDEFINES. + * nroff/Makefile.sub (nroff): New target. + (install_data): Install nroff. + * eqn/Makefile.sub (neqn): Sed with SH_SCRIPT_SED_CMD. + * grog/Makefile.sub (grog): Sed grog.sh with SH_SCRIPT_SED_CMD. + +Sat Apr 17 08:24:28 1993 James Clark (jjc at jclark) + + * eqn/Makefile.sub (neqn): Add chmod +x. + + * grog/Makefile.sub (grog): Remove spurious semi-colon. + +Fri Apr 16 22:41:57 1993 James Clark (jjc at jclark) + + * troff/input.cc (string_iterator::string_iterator()): Initialize + lineno and count. + +Tue Apr 13 10:22:28 1993 James Clark (jjc at jclark) + + * troff/div.cc (macro_diversion::space, + top_level_diversion::space): Don't set high_water_mark. + (macro_diversion::output, top_level_diversion::output): Don't + include post line space in high water mark. + +Wed Apr 7 12:48:18 1993 James Clark (jjc at jclark) + + * eqn/eqn.y: Don't define YYDEBUG. + * pic/pic.y: Likewise. + +Mon Apr 5 10:15:15 1993 James Clark (jjc at jclark) + + * tmac/tmac.e ([3): Add space after comma following editors. + Change double spaces to single spaces. + ([4): Change double spaces to single spaces. + + * grops/ps.h (USE_PS_ADOBE_2_0): New flag for broken_flags. + * grops/ps.cc (ps_printer::~ps_printer): If the USE_PS_ADOBE_2_0 + bit is set in broken_flags, use 2.0 rather than 3.0 as the version + after %!PS-Adobe- (for Newsprint). + + * troff/div.cc (top_level_diversion::begin_page): When + before_first_page is 1, set page_number to 1. + +Sun Apr 4 14:28:53 1993 James Clark (jjc at jclark) + + * eqn/box.cc (box::top_level): Protect equation with \&. + +Sat Apr 3 23:27:25 1993 James Clark (jjc at jclark) + + * groff/groff.cc (possible_command::set_name): Delete old name. + + * groff/groff.cc (possible_command::~possible_command): Use + a_delete. + + * troff/node.cc (troff_output_file::begun_page): New member. + (troff_output_file::troff_output_file): Initialize it. + (troff_output_file::really_begin_page): Only output V command if a + page has been begun. + + * pic/pic.y (placeless_element): Delete argument to PRINT after + use. + +Fri Apr 2 11:31:02 1993 James Clark (jjc at jclark) + + * Make wrapman work. + * troff/div.h (class top_level_diversion): Replace + first_page_begun by before_first_page (with opposite sense). + * Change first_page_begun to before_first_page inverting sense. + * troff/div.cc (class nl_reg): New class. + (init_div_requests): Use class nl_reg for \n(nl. + (top_level_diversion::begin_page): Don't call + output_file::begin_page if before_first_page is 2; + reset before_first_page afterwards. If have_next_page_number is + false, then always increment page_number. + * tmac/tmac.an: Set traps within TH rather than at the top-level. + Restore compatibility mode after loading, and then disable + compatibility mode in TH. + +Thu Apr 1 11:09:34 1993 James Clark (jjc at jclark) + + * grotty/tty.cc (tty_printer::end_page): Don't discard characters + past last line. + * troff/node.h (output_file::trailer): Declare. + * troff/div.cc (cleanup_and_exit): Call output_file::trailer(). + * troff/node.cc (output_file::trailer): New function. + (troff_output_file::~troff_output_file): Move most code into... + (troff_output_file::trailer): New function. + (class troff_output_file): Delete page_length member. Declare + trailer(). + (troff_output_file::really_begin_page): Use current page length + for final V command. + + * tbl/main.cc (struct options): New decimal_point_char member. + (options::options): Initialize this. + (process_options): Implement decimalpoint option. + (process_data): Pass decimal_point_char option to table::table. + * tbl/table.h (class table): New decimal_point_char member. + (table::table): Add additional argument. + * tbl/table.cc (find_dot): Rename to find_decimal_point. Add + second argument specifying decimal point character. Use this + instead of '.'. + (table::table): Initialize decimal_point_char. + (table::add_entry): Change call to find_dot. + + * troff/input.cc (get_copy, token::next): Implement \V. + (interpolate_environment_variable): New function. + +Tue Mar 30 14:41:39 1993 James Clark (jjc at jclark) + + * pic/lex.cc (lookup_keyword): Rename MIN to K_MIN, MAX to K_MAX. + * pic/pic.y: Likewise. + + * grotty/tty.cc (tty_printer::add_char, tty_printer::end_page): + Add casts to int. + * refer/ref.cc (reference::insert_field, reference::delete_field): + Likewise. + * troff/number.cc (parse_term): Likewise. + + * acgroff.m4 (GROFF_PROG_YACC): New macro. + * configure.in: Use GROFF_PROG_YACC. + + * acgroff.m4 (GROFF_PROG_CCC): Don't add -O automatically for gcc + and g++. + * Makefile.in (OPTIMIZE): New define. + (DEBUG): Empty by default. + (CCFLAGS, CFLAGS): Include $(OPTIMIZE). + + * acgroff.m4 (GROFF_SYS_SIGLIST): Don't quote program. + (GROFF_ARRAY_DELETE): Likewise. + (GROFF_CC_COMPILE_CHECK): Quote use of $2 and $3. + + * troff/env.cc (trie::~trie): Make virtual to shut up g++. + + * devps/psstrip.sed: Use different delimiter on last line (so that + it works with BSD 4.4 sed.) + +Mon Mar 29 17:07:14 1993 James Clark (jjc at jclark) + + * devps/psstrip.sed: Delete comments. + + * acgroff.m4 (AC_GETOPT): Don't test whether <unistd.h> declares + optind, opterr, optarg. + * lib.h: When UNISTD_H_DECLARES_GETOPT is defined, declare optind, + opterr, optarg. + +Sun Mar 28 17:44:25 1993 James Clark (jjc at jclark) + + * Makefile.in (check): Dummy target. + +Wed Mar 3 04:53:38 1993 James Clark (jjc at jclark) + + * Version 1.07 released. + + * Integrate mm 1.11. + + * tbl/table.cc (alphabetic_block_entry::print): start_row was used + where start_col was meant. + +Thu Feb 25 07:55:36 1993 James Clark (jjc at jclark) + + * grog/grog.sh, grog/grog.pl: Recognize PH and SA as -mm macros. + +Wed Feb 24 10:15:34 1993 James Clark (jjc at jclark) + + * troff/input.cc (token::next): Make \z\o'...' and similar things + work. + + * env.h (MARGIN_CHARACTER_ON, MARGIN_CHARACTER_NEXT): New + constants. + (environment): Add margin_character_flags member. + * env.cc (environment::environment(symbol), + environment::environment(const environment *): Initialize + margin_character_flags. + (margin_character): Rewrite. + (environment::output_line): Add a margin character if + margin_character_flags is non-zero. Turn off the + MARGIN_CHARACTER_NEXT bit. If that makes margin_character_flags + zero, use margin_character_node without copying and then set + margin_character_node to 0. + + * devps/DESC.in: Change minimum size to 1000. + +Tue Feb 23 14:57:49 1993 James Clark (jjc at jclark) + + * troff/symbol.h (symbol::hash): Change return type to unsigned + long. + * troff/dictionary.cc (dictionary::lookup, dictionary::remove): + Add casts to int. + + * test-groff: Use -r rather than -x. + + * grops/psfig.diff: Include in distribution again. + +Mon Feb 22 09:10:44 1993 James Clark (jjc at jclark) + + * Makefile.in (dist): Use gzip. + +Sun Feb 21 11:12:53 1993 James Clark (jjc at jclark) + + * acgroff.m4 (GROFF_GETOPT): Check for declaration of getopt() in + unistd.h as well as in stdlib.h. + * include/lib.h: Include <stdlib.h> is STDLIB_H_DECLARES_GETOPT is + defined; otherwise include <sys/types.h> and <unistd.h> if + UNISTD_H_DECLARES_GETOPT is defined. + + * configure.in: use builtin(include, ... rather than include(... + * configure: Regenerate with autoconf 1.3. + + * libdriver/print.cc (printer::adjust_arc_center): Use new + algorithm suggested by Andy Fyfe. + + * libdriver/printer.cc (printer::adjust_arc_center): New function. + * include/printer.h: Declare this. + * grops/ps.cc (ps_printer::draw): Use it. + * grodvi/dvi.cc (dvi_printer::draw): Use it. + +Fri Feb 19 23:13:51 1993 James Clark (jjc at jclark) + + * Makefile.comm (.man.n): Replace macrodir by tmacdir. + +Thu Feb 11 16:46:59 1993 James Clark (jjc at jclark) + + * eqn/main.cc (main): Handle "eqn -". + +Mon Jan 4 20:29:56 1993 James Clark (jjc at jclark) + + * tmac/tmac.e (++): Install fix from comp.bugs.4sd. + + * mm: Integrate version 1.08. + + * pic/troff.cc (troff_output::finish_picture): Set + EQN_NO_EXTRA_SPACE reg to 0 rather than removing it. + * eqn/box.cc (box::extra_space): Set EQN_NO_EXTRA_SPACE_REG to 0 + if it's not defined. Check whether the register is non-zero rather + than whether it's not defined. + * tmac.e ({, <): Make argument to \x zero if \n(0x is non-zero. + + * indxbib/indxbib.cc: Move all signal handling into... + * indxbib/signal.c: New file. + * configure.in: Call AC_RETSIGTYPE. + + * acgroff.m4 (GROFF_STRUCT_EXCEPTION): New macro. + * configure.in: Call GROFF_STRUCT_EXCEPTION. + * libgroff/matherr.c: Protect with ifdef HAVE_STRUCT_EXCEPTION. + + * troff/input.cc (token::token, token::operator=): Work round SGI + C++ bug. + * pic/object.cc (position::position): Likewise. + +Mon Dec 28 21:50:21 1992 James Clark (jjc at jclark) + + * pic/pic.h: Move declaration of hypot(). + +Wed Dec 16 12:28:29 1992 James Clark (jjc at jclark) + + * pic/pic.h: Declare hypot(). + + * pic/pic.h: Define M_PI if necessary. + +Thu Dec 10 12:03:29 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (re): Add alternative version that doesn't use groff + `.ta T' feature. + + * devps/prologue.ps (RE): Handle the possibility that the old font + doesn't have a FontName entry. + +Wed Dec 2 10:25:29 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (fam): Redefine to set family in environment 2. + (@C): Use @fam not fam. + +Thu Nov 26 16:01:25 1992 James Clark (jjc at jclark) + + * lookbib/lookbib.cc (main): Change type of start to const char *. + * lkbib/lkbib.cc (main): Likewise. + + * eqn/lex.cc (definition::definition): Don't use member + initializer syntax for members of anonymous unions. + + * troff/input.cc (input_stack::backtrace): Change type of to const + char *. + +Wed Nov 25 13:43:09 1992 James Clark (jjc at jclark) + + * include/stringclass.h (class string): Declare inline friend + functions as inline in class declaration. + * troff/hvunits.h (class hunits, class vunits): Likewise. + * include/refid.h (class reference_id): Likewise + * troff/troff.h (points_to_units(units), scale(units, double)): + Delete declarations. + * libdriver/input.cc (get_char): Delete declaration. + * include/lib.h: Change 2nd argument of getopt from const char ** + to char **. + * troff/symbol.cc (symbol::symbol): Cast `new char *[n]' to `const + char **' before assigning to a `const char **'. + * tbl/table.cc: Delete extra declarations of prints(). + +Tue Nov 24 14:33:13 1992 James Clark (jjc at jclark) + + * libgroff/font.cc (font::load_desc): Cast `new char *[n]' to `const + char **' before assigning to a `const char **'. + + * libgroff/errarg.cc (errarg::errarg): Don't use member + initializer syntax for members of anonymous unions. + +Sat Nov 21 05:02:23 1992 James Clark (jjc at jclark) + + * mm: Integrate version 1.07. + +Tue Nov 17 16:44:27 1992 James Clark (jjc at jclark) + + * troff/input.c (translate2): Rename to + (translate_no_transparent). + (init_input_requests): Rename tr2 to trnt. + +Mon Nov 16 09:49:32 1992 James Clark (jjc at jclark) + + * troff/charinfo.h (class charinfo): Add transparent_translate field. + (charinfo::set_translation, charinfo::set_special_translation): + Add second argument that specifies value for + transparent_translate. + (charinfo::get_translation, charinfo::get_special_translation): + Add optional second argument that specifies whether translation is + being used for transparent throughput. + * troff/input.cc (charinfo::set_translation, + charinfo::set_special_translation): Handle second argument. + (charinfo::charinfo): Initialize transparent_translate. + (translate): Split main part off into + (do_translate): New function. Pass argument saying whether + translation applies to transparent throughput. + (translate2): New request. + (init_input_requests): Bind translate2 to `tr2'. + +Wed Nov 11 11:43:20 1992 James Clark (jjc at jclark) + + * tbl/table.h (class table): Add `nokeep' flag. + * tbl/main.cc (process_options): Handle `nokeep' option. + * tbl/table.cc (table::init_output, table::do_row, table::do_top, + table::do_bottom): Don't output keep/release macro definitions or + calls when `nokeep' option has been specified. + +Sat Nov 7 01:28:33 1992 James Clark (jjc at jclark) + + * tmac/tmac.Xps (Xps-char): Use " as delimiter for \Z. + +Wed Nov 4 16:29:04 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table_entry::divert, block_entry::do_divert, + block_entry::divert, alphabetic_block_entry::divert): Add extra + argument giving column separation. + (table::compute_widths): Pass column separation to + table_entry::divert(). + (block_entry::do_divert): If an entry spans multiple columns and a + minimumum width has been specified for each column, then set the + line length to the sum of the widths (plus possibly the column + separations). + + * troff/input.cc (set_escape_char): Don't set the escape_char + until after calling has_arg(). + +Tue Nov 3 11:23:27 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table::do_top): Add missing \s0 for double box + case. + + * tbl/table.cc (table::print_double_hline): Avoid extra new line + in case where r > nrows - 1. + + * tbl/table.cc (BODY_HEIGHT): Deleted. + (LINE_SEP): New definition. + (table::print_single_hline, table::print_double_hline, + table::compute_vrule_top_adjust, table::compute_vrule_bot_adjust, + table::do_row, table::do_top): Use LINE_SEP space before a line + instead of \n[.v]-BODY_HEIGHT-BODY_DEPTH. + + * tbl/table.cc (text_entry::print_contents): New function. + (text_string_name, right_text_string_name): Deleted. + (TEXT_STRING, RIGHT_TEXT_STRING): Deleted. + (simple_text_entry::do_width, numeric_text_entry::do_width, + alphabetic_text_entry::do_width): Don't store the contents of the + entry in a string. + (left_text_entry::simple_print, right_text_entry::simple_print, + center_text_entry::simple_print, + alphabetic_text_entry::simple_print, + numeric_text_entry::simple_print): Print the entry directly + instead of using the stored string. + +Fri Oct 30 10:39:32 1992 James Clark (jjc at jclark) + + * devps/Makefile: Strip PostScript files. + * devps/prologue: Rename to... + * devps/prologue.ps. + * devps/psstrip.sed: New file. + * devps/download: Use .pfa rather than .ps for installed versions + of fonts. + +Thu Oct 29 09:14:43 1992 James Clark (jjc at jclark) + + * troff/env.cc (input_trap): Give a warning if the argument is out + of range. + + * troff/env.cc (adjust): Treat negative argument as missing. Round + argument > 5 down to 5. + + * troff/env.cc (center, right_justify): Make negative argument zero. + + * troff/div.cc (page_offset, vertical_position_traps): Treat + invalid argument as missing. + * troff/env.cc (line_spacing, line_length, title_length, indent, + underline, hyphen_line_max_request, control_char, + no_break_control_char, widow_control_request, adjust, input_trap, + point_size): Likewise. + * troff/node.cc (ligature, kern_request, bold_font, track_kern, + constant_space): Likewise. + * troff/input.cc (compatible, shift, warn_request, + set_escape_char): Likewise. + + * tbl/main.cc (format::format): Avoid doing `new int[0]'. + * tbl/table.cc (table::table): Likewise. + + * Makefile.dev (install_dev): depends on $(DEVFILES). + +Wed Oct 28 08:30:57 1992 James Clark (jjc at jclark) + + * devX75, devX75-12, devX100, devX100-12: New directories. + * Makefile.in: Add these to DEVDIRS. + + * troff/Makefile.sub, eqn/Makefile.sub, indxbib/Makefile.sub, + afmtodit/Makefile.sub, tmac/Makefile.sub, nroff/Makefile.sub, + grog/Makefile.sub, mm/Makefile.sub (uninstall_sub): New target. + * Makefile.in (uninstall, uninstall_sub, uninstall_dirs): New + targets. + * Makefile.ccpg, Makefile.cpg, Makefile.dev, Makefile.man + (uninstall): New target. + * Makefile.comm (uninstall, uninstall_sub, uninstall_man, + uninstall_prog, uninstall_dev): New targets. + + * troff/div.cc (return_request): Treat an invalid argument as + missing. + +Mon Oct 26 11:33:47 1992 James Clark (jjc at jclark) + + * tmac/tmac.e ((f): Set up the environment even when there's a + current diversion. Transperently throughput a call to @N. + (@N): New macro. + +Thu Oct 22 05:05:59 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table::compute_vrule_top_adjust): Round adjustment + up to vertical resolution. + + * tbl/table.cc (table::do_row): Change row number after printing + stuff list. + + * pic/lex.cc (get_token_after_dot): Make .left and .right work. + +Wed Oct 21 14:46:45 1992 James Clark (jjc at jclark) + + * Rename CHANGES to NEWS. + +Tue Oct 20 23:25:21 1992 James Clark (jjc at jclark) + + * libgroff/new.cc (operator new): Avoid calling malloc(0). + +Mon Oct 19 09:10:13 1992 James Clark (jjc at jclark) + + * man.ultrix: Removed. + +Sun Oct 18 06:35:15 1992 James Clark (jjc at jclark) + + * Makefile.comm (extraclean): Delete files whose names begin with + `='. + + * pic/troff.cc (troff_output::text): Fix typo in implementation of + aligned text. + +Sat Oct 10 09:32:29 1992 James Clark (jjc at jclark) + + * troff/env.cc (hyphenate_request, vertical_spacing, no_number): + * troff/div.cc (page_length, need_space, space_request): Treat + invalid optional argument as missing. + * troff/env.cc (number_lines): If the first argument is present + but not a number, turn on line numbering, don't change the next + line number and parse the remaining arguments. + + * tmac/tmac.e (@q): Do the `ne' before changing to environment 2. + +Thu Oct 8 10:24:40 1992 James Clark (jjc at jclark) + + * eqn/box.h: Change declaration accordingly. + * eqn/box.cc (set_gsize): Change return type to int. Return 0 if + the specified size was bad but don't give an error. Check for + overflow. + * eqn/main.cc (main): Change caller. Leave validation to set_gsize. + * eqn/lex (do_size): Likewise. + +Wed Oct 7 09:48:59 1992 James Clark (jjc at jclark) + + * acgroff.m4 (GROFF_PROG_CCC): Use fopen when checking for C++ + compatible headers. + +Sun Oct 4 18:24:02 1992 James Clark (jjc at jclark) + + * tbl/table.cc (table::init_output): Improve error message when + table won't fit on one page. + +Fri Oct 2 10:41:40 1992 James Clark (jjc at jclark) + + * pic/troff.cc (troff_output::start_picture): Generate line + containing a horizontal motion equal to the width of the picture. + + * groff/groff.cc (main): Allow PROG_PREFIX to be set at runtime + using GROFF_COMMAND_PREFIX environment variable. + +Fri Sep 25 11:40:40 1992 James Clark (jjc at jclark) + + * mdate.sh: Use $NF rather than $(NF). + +Tue Sep 22 09:47:24 1992 James Clark (jjc at jclark) + + * pic/main.cc (main): Use %1 not %c in argument to warning. + + * eqn/main.cc (main): Output code to check that geqn was given the + correct -T option. + +Mon Sep 21 10:59:16 1992 James Clark (jjc at jclark) + + * Makefile.in (dist): Instead of doing `make -f ../Makefile', do + `ln -s ../Makefile .; make; rm -f Makefile'. + + * troff/hyphen: Rename to... + * troff/hyphen.us: + * troff/input.cc (main): Delete -H option. Don't call + read_hyphen_file(). + * troff/env.cc: Include searchpath.h and macropath.h. + (exception_dictionary): Deleted. + (ht): Deleted. + (read_hyphen_file): Deleted. + (hyphenation_language): New struct. + (class trie, class hyphen_trie): Move declarations up. + (trie_node::~trie_node): Deleted. + (trie::delete_trie_node): New function. + (trie::do_delete): New pure virtual function. + (hyphen_trie::do_delete): New function. + (trie::~trie): New function. + (hyphen_trie::~hyphen_trie): New function. + (trie::clear): No need to chcek that tp is not 0. + (current_language, language_dictionary): New variables. + (hyphen_word): Give an error if no current language. Use + exceptions dictionary in current language. + (hyphen_trie::read_patterns_file): Find file using macro_path. + Allow comments (starting with %) in patterns file. Don't make it + a fatal error if the file can't be found. + (hyphenate): Return if no current language. Get the exceptions + dictionary and the hyphenation patterns from the current language. + (set_hyphenation_language): New variable. + (hyphenation_patterns_file): New function. + (hyphenation_language_reg): New class. + (hyphenation_language_reg::get_string): New function. + (init_hyphen_requests): Bind "hla" to set_hyphenation_language and + "hpf" to hyphenation_patterns_file. Initialize `.hla' number + register. + * groff/groff.cc (main, help, synopsis): Delete -H option. + * include/Makefile.sub: Don't define HYPHENFILE. + * Makefile.in: Delete hyphenfile variable and remove from MDEFINES. + * Makefile.comm (.man.n): Don't substitute for HYPHENFILE. + * tmac/troffrc: Set hyphenation language to `us'. Load `hyphen.us' + hyphenation patterns. + +Sun Sep 20 09:33:02 1992 James Clark (jjc at jclark) + + * eqn/neqn.sh: New file. + * eqn/Makefile.sub: Handle neqn.sh. + + * eqn/eqn.h: Declare `nroff' variable. + * eqn/box.cc (param_table): Add `nroff' param. + (nroff): Define it. + * eqn/lex.cc (yylex): Handle TDEFINE and NDEFINE using `nroff' + variable. + * tmac/eqnrc: Set `nroff' to 1 for -Tascii or -Tlatin1. + + * troff/troff.h (WARN_FONT): New warning. + (WARN_TOTAL): Change accordingly. + * troff/input.cc (DEFAULT_WARNING_MASK): Include WARN_FONT. + (warning_table): Add WARN_FONT. + * troff/node.cc (mount_font_no_translate): Pass argument to + font::load_font. If this is non-zero, give a warning. + Don't give an error message when accessing a font that has already + been found to be invalid. + * include/font.h (font::load, font::load_font): Add additional + optional argument which suppresses error message if the font is + not found. + * libgroff/font.cc (font::load_font): Handle additional argument. + (font::load): Add additional argument. If this is non-null, set it + to 1 and don't give error message. + + * include/printer.h (printer::end_page): Add argument giving + length of page. + * libdriver/input.cc (do_file): Pass this. + * grops/ps.cc (ps_printer::end_page): Add argument. + * grodvi/dvi.cc (dvi_printer::end_page, + draw_dvi_printer::end_page): Add argument. + * grotty/tty.cc (class tty_printer): Remove lines_per_page and + columns_per_page members. New member nlines. + (DEFAULT_LINES_PER_PAGE): Deleted. + (tty_printer::tty_printer): Don't compute lines_per_page from + font::paperlength. Don't compute columns_per_page from + font::paperwidth. + (tty_printer::add_char): Don't check horizontal position against + columns_per_page. Grow glyphs vector if neccessary. + (tty_printer::end_page): Add argument giving page_length in units. + Discard lines past end of page. + +Wed Sep 16 06:29:52 1992 James Clark (jjc at jclark) + + * tmac/tmac.tty-char: Fix definition of \(/l. + + * tmac/tmac.X: Define \(en. + +Tue Sep 15 10:37:13 1992 James Clark (jjc at jclark) + + * acgroff.m4 (GROFF_PRINT): If a system has lpr and lp but not + lpq, then use lp rather than lpr. + + * tmac/tmac.s (par@reset): Don't call `ad'. + (par*env-init): Call `ad'. + +Sun Sep 13 18:48:20 1992 James Clark (jjc at jclark) + + * mdate.sh: Use $(NF) instead of $6 to extract year from output of + date. + + * troff/symbol.cc: #undef BLOCK_SIZE if it's defined. + * indxbib/indxbib.cc: Likewise. + +Sun Sep 6 09:44:46 1992 James Clark (jjc at jclark) + + * libgroff/putenv.c: New file. + * libgroff/Makefile.sub: Add putenv.c to CSRCS. + * Makefile.in: Say that putenv.o can be one of LIBOBJS. + * configure.in: Test for putenv with AC_REPLACE_FUNCS. Test for + stdlib.h with AC_HAVE_HEADERS. + +Sat Sep 5 18:11:52 1992 James Clark (jjc at jclark) + + * indxbib/dirnamemax.c: Include <sys/dir.h> only if <dirent.h> + does not exist. + +Fri Sep 4 09:43:26 1992 James Clark (jjc at jclark) + + * eqn/box.cc (gsize): Make it an int. + (set_gsize): Parse argument handling increment or decrement. + (box::top_level): Convert gsize to a string. + + * troff/input.cc (exit_troff): Make buf unsigned char []. + Call to make_temp_iterator casts buf to char*. + + * Makefile.in ($(TARGETS), dot): Pass $(MDEFINES) to recursive makes. + + * Makefile.ccpg (depend.temp): Depends on $(YTABC). + * Makefile.cpg (depend.temp): Likewise. + + * Makefile.dep: Remove Makefile.dep from $(REALCLEANFILES). + + * Makefile.comm: Add y.output to MOSTLYCLEANFILES. + +Thu Sep 3 08:01:55 1992 James Clark (jjc at jclark) + + * tmac/tmac.s (B, I, BI, CW): Rewrite avoiding aliases. + +Tue Sep 1 18:24:53 1992 James Clark (jjc at jclark) + + * Version 1.06 released. + + * Integrate mm 1.04. + +Fri Aug 28 11:28:19 1992 James Clark (jjc at jclark) + + * Makefile.comm, Makefile.ccpg, Makefile.cpg: Fix TAGS target. + +Thu Aug 27 11:03:33 1992 James Clark (jjc at jclark) + + * afmtodit/afmtodit.pl: Add -n option that disables generation of + ligatures command. + * devps/generate/Makefile (CR, CB, CI, CBI): Pass -n flag to + afmtodit. Regenerate. + + * tmac/tmac.e ()z): Adjust _b if necessary so as to avoid moving + @f back past the current position. + + * tmac/tmac.e: Change calls to @R so that comments are not part of + arguments. + +Tue Aug 25 10:42:07 1992 James Clark (jjc at jclark) + + * configure.in: Check for mkstemp with AC_HAVE_FUNCS. + + * acgroff.m4 (GROFF_PROG_CCC): Don't check for <osfcn.h>. Instead + check that we can link a call to a function declared in <stdio.h>. + (GROFF_UNISTD_H): New macro. + * configure.in: Call it. + * Makefile.in: Document it. + * include/posix.h: New file. + * troff/troff.h: Don't include <osfcn.h> + * troff/input.cc: Include posix.h. + * libgroff/new.cc, libgroff/tmpfile.cc: Include posix.h rather than + osfcn.h. + * indxbib/indxbib.cc, libbib/{search.cc,linear.cc,index.cc}: + Include posix.h rather <sys/types.h>, <sys/stat.h>, <osfcn.h>, + <fcntl.h>. + * indxbib/indxbib.cc (S_IRUSR, S_IRGRP, S_IROTH): Delete definitions. + * libbib/index.cc (S_ISREG, O_RDONLY): Delete definitions. + * libbib/search.cc (O_RDONLY): Delete definition. + * refer/refer.cc, include/driver.h, pic/pic.h, groff/groff.cc: + Don't include <osfcn.h>. + + * acgroff.m4 (GROFF_TIME_T): New macro. + * configure.in: Call it. + * Makefile.in: Document it. + + * acgroff.m4 (GROFF_TRADITIONAL_CPP): New macro. + * configure.in: Call it. + * Makefile.in: Document -DTRADITIONAL_CPP. + * include/ptable.h: Don't include generic.h. + (name2): Define it. + + * tmac/tmac.s (][): Make [T1 and [T2 aliases for [T. + Afterwards remove [T1 and [T2. + (ref*spec!0, ref*spec!2): Use T1 rather than T. + (ref*spec!1, ref*spec!4, ref*spec!4): Use T2 rather than T. + (ref*add-T2): Renamed from ref*add-T. + (ref*add-T1): New macro. + +Mon Aug 24 11:11:11 1992 James Clark (jjc at jclark) + + * acgroff.m4 (AC_PROG_CCC): Use GROFF_EXIT rather than exit 1. + + * libbib/index.cc: Include <fcntl.h>. + (O_RDONLY): Define if necessary. + (make_index_search_item, index_search_item_iterator::get_tag, + index_search_item::check_files): Use O_RDONLY. + * libbib/seach.cc: Include <fcntl.h>, <sys/types.h>, <sys/stat.h>. + (O_RDONLY): Define if necessary. + (search_list::add_file): Use O_RDONLY. + * indxbib/indxbib.cc: Include <fcntl.h>, <sys/types.h>, + <sys/stat.h>. + (S_IRUSR, S_IRGRP, S_IROTH): Define if necessary. + (main): Use these. + + * libbib/index.cc (S_ISREG): Define it if necessary. + (index_search_item::load): Use S_ISREG. + + * include/driver.h: Include <errno.h>. + +Sun Aug 23 11:32:18 1992 James Clark (jjc at jclark) + + * eqn/box.cc (body_height): Increase default value to 85. + (body_depth): Increase default value to 35. + +Fri Aug 21 05:34:42 1992 James Clark (jjc at jclark) + + * eqn/pbox.h (SAVE_FONT_STRING): Define it. + * eqn/box.cc (box::top_level): Hide use of \R in a string that is + protected from expansion with \E. + + * acgroff.m4 (GROFF_PAGE): Use `case' to test domain. + + * Makefile (Makefile): New target. + + * Makefile.sub (configure, distfiles): New targets. + + * acgroff.m4 (GROFF_BROKEN_SPOOLER_FLAGS): Avoid using ${var:-val} + construct. + +Thu Aug 20 12:27:26 1992 James Clark (jjc at jclark) + + * eqn/box.cc (param_table): Add body_height and body_depth. + + * eqn/lex.cc (def_table): Make circumflex in hat_def roman. + +Tue Aug 18 16:24:25 1992 James Clark (jjc at jclark) + + * psbb/Makefile.sub: Don't link with libgroff.a. + + * acgroff.m4 (GROFF_PUTENV): New macro. + * configure.in: Call GROFF_PUTENV. + * Makefile.in: Document STDLIB_H_DECLARES_PUTENV. + * groff/groff.cc: Don't declare putenv if STDLIB_H_DECLARES_PUTENV + is defined. + + * troff/env.cc (distribute_space): Rename force_forward argument + to force_reverse. Reverse the list if force_reverse is true. + +Mon Aug 17 17:49:05 1992 James Clark (jjc at jclark) + + * tmac/tmac.an: Don't define a string `T'. Just define Tm. + + * eqn/pile.cc (matrix_box::compute_metrics): Don't allow computed + height or depth to be negative. Guard against SUP_RAISE quantity + being negative. + +Sat Aug 15 08:18:54 1992 James Clark (jjc at jclark) + + * devps/generate/textmap: Add `an' (arrowhorizex). + * tmac/tmac.ps: \(an overlaps horizontally. + * tmac/tmac.dvi, tmac/tmac.tty: Add `an'. + + * devps/symbolchars: Add arrowverttp, arrowvertbt. + * devps/textmap: Add arrowvertex. + * eqn/delim.cc (delim_table): Add uparrow, downarrow and + updownarrow delimiters. + * tmac/tmac.ps, tmac/tmac.X: Add definition of \(va. + + * tbl/table.cc (simple_entry::position_vertically, + block_entry::position_vertically): For a centered entry, perform + the motion in two stages. + + * refer/refer.cc (split_punct): Don't call lookup_token if there + is no token. + +Fri Aug 14 11:14:58 1992 James Clark (jjc at jclark) + + * troff/input.cc (token::next): Delete token_node after copying + token. + + * grodvi/grodvi.cc (dvi_printer::dvi_printer): Initialize + cur_point_size. + + * libdriver/printer.cc (printer::load_font): Delete old_font_table. + + * grops/ps.cc (ps_printer::define_encoding): Delete elements of vec. + +Tue Aug 11 13:50:38 1992 James Clark (jjc at jclark) + + * grops/ps.cc (usage): -b option takes an argument. + + * devps/prologue (PLG): New procedure. + * grops/ps.cc (main, usage): New -g option. + (ps_printer::~ps_printer): If guess_flag is set, guess the paper + length using PLG. + +Mon Aug 10 11:17:53 1992 James Clark (jjc at jclark) + + * include/cset.h: Include <limits.h> if we have it. + + * libgroff/illegal.cc: New file. + * include/lib.h (illegal_input_char): Use table. + * troff/input.cc (ESCAPE_RIGHT_PARENTHESIS): Renumber to 0206. + * pic/lex.cc (ARG1): Renumber to 14. + * eqn/lex.cc (ARG1: Likewise. + + * troff/Makefile.sub (majorminor.cc): Handle 3 part versions + (eg 1.05.90) correctly. + +Sun Aug 9 13:35:43 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (sr): Deleted. Set $r and $R directly. + Rename $r and $R registers to $v and $V. + ($r, $R): Initialize to 0. + (@v, @V): New macros. + (sz): Call @v. + (@M): Call @V. + + * troff/input.cc (main, usage): Add -R option that says not to + load troffrc. + * eqn/main.cc (main, usage): Rename -n to -R. + +Sat Aug 8 00:16:00 1992 James Clark (jjc at jclark) + + * devps/DESC.in: Leave font positions 5-9 blank. + * devdvi/DESC.in: Likewise. + + * grog/grog.pl: Handle `.PS <file' correctly. + + * troff/input.cc (input_stack::push): Improve error message when + input stack limit exceeded. + +Fri Aug 7 13:08:16 1992 James Clark (jjc at jclark) + + * refer/refer.cc (main): Fix typo in handling of `a' option. + + * refer/refer.cc (do_bib): In state START after a newline remain + in state START. + + * groff/groff.sh: Deleted. + * groff/Makefile.sub: Delete handling of groff.sh. + + * pic/troff.cc (troff_output::text): Test \n(0p rather than \*(.T + to determine whether to use \X'ps:...'. + * tmac/troffrc: Set 0p register to 0. + * tmac/tmac.ps: Set 0p register to 1. + + * groff/groff.cc: Support -X option. Give warning for -TXps and + transform to -X -Tps. Pass troff a -r.X=1 option if -X is used. + * tmac/troffrc: Support -r.X=1. + + * pic/troff.cc (troff_output::dot): Don't test + zero_length_line_flag. + +Thu Aug 6 13:32:08 1992 James Clark (jjc at jclark) + + * include/lib.h: Declare getopt() and friends unless + STDLIB_H_DECLARES_GETOPT is defined. + + * doc/chars.tr: Delete. + * man/groff_char.man: New file. + +Wed Aug 5 00:38:58 1992 James Clark (jjc at jclark) + + * tmac/tmac.e (np, bu): Test \n($p with string expression in case + user has changed register format. + +Mon Aug 3 11:22:18 1992 James Clark (jjc at jclark) + + * groff/groff.cc: Get rid of device_table. Get postprocessor from + `postpro' command in DESC file. Get spooler command from `print' + command in DESC file. Execute spooler command with /bin/sh. + + * groff/groff.cc: Split Unix-specific parts into... + * groff/pipeline.c: New file. + + * LICENSE: Delete. + * COPYING: New file. + * all files: Update copyright notices. + + * Rearrange files. Redo Makefiles. Use autoconf. + +Sat Aug 1 09:36:50 1992 James Clark (jjc at jclark) + + * troff/input.c (charinfo_to_node_list): Interpret character + definition with escape_char of `\'. + +Tue Jul 28 12:20:12 1992 James Clark (jjc at jclark) + + * lib/strerror.c, lib/iftoa.c, lib/itoa.c: Don't include lib.h. + Define INT_DIGITS as big enough for 64-bit integer. + * lib/strtol.c: Don't include lib.h. + * lib/lib.h: Delete ifdef __cplusplus stuff. + +Mon Jul 27 11:08:50 1992 James Clark (jjc at jclark) + + * ps/devps/Makefile: Add DESC to DEVICEFILES. Separate out rule + for making DESC. Make $(FONTS) depend on DESC. afmtodit should + get DESC from current directory. + +Sun Jul 26 15:38:26 1992 James Clark (jjc at jclark) + + * tbl/main.c (main): Always reset the line number when reading + from stdin. + + * tbl/table.c (table::print_single_hline, table::print_double_hline, + table::define_bottom_macro, table::do_row, table::do_top): Round + vertical spacing up to vertical resolution. + +Fri Jul 24 14:32:07 1992 James Clark (jjc at jclark) + + * ps/ps.h (enum resource_type): Avoid comma at end of + enumerator-list. + * dvi/dvi.c (class dvi_printer): Likewise. + * dvi/tfmtodit.c (gf::load): Likewise. + * refer/label.y (struct expression): Likewise. + * refer/refer.c (class label_processing_state): Likewise. + * refer/indxbib.c (do_file): Likewise. + * troff/troff.c (enum warning_type): Likewise. + * tbl/main.c (process_data): Likewise. + * troff/charinfo.h (class charinfo): + +Wed Jul 22 09:17:58 1992 James Clark (jjc at jclark) + + * dvi/devdvi/textt.map: Add entry for `-'. Regenerate fonts. + +Tue Jul 21 11:39:26 1992 James Clark (jjc at jclark) + + * groff.c: Move to new groff subdirectory. + * groff/Makefile: New file. + * Makefile: Remove handling of groff.c. Add groff to SUBDIRS. + + * man/mdate.sh: Use ls -L if supported. + + * Consolidate all header files produced by gendef into lib/defs.h. + * lib/macropath.c, lib/fontfile.c, lib/device.c: Include defs.h. + Don't include path.h. + * lib/Makefile (path.h): Don't generate. + * troff/input.c: Include defs.h. Don't include config.h. + * troff/Makefile (config.h): Don't generate. + * refer/index.h: Don't include suffix.h. + * refer/index.c: Include defs.h. + * refer/indxbib.c: Include defs.h. + * refer/refer.h, refer/lkbib.h: Don't include path.h. Include + defs.h. + * refer/Makefile (suffix.h, path.h): Don't generate. + * groff.c: Don't include config.h. Include defs.h. + * Makefile (config.h): Don't generate. + (lib/defs.h): Generate. + (topclean): Remove lib/defs.h. + +Mon Jul 20 10:12:57 1992 James Clark (jjc at jclark) + + * lib/malloc.c, lib/getpagesize.h: Deleted. + * Makefile: Add COOKIE_BUG configuration option. Delete malloc + related stuff. + * lib/Makefile: Delete malloc-related stuff. + * lib/new.c: Workaround COOKIE_BUG if necessary. + + * refer/lkbib.c, refer/indxbib.c: Don't include refer.h. Include + needed header files directly. + * refer/refer.h: Omit definition of DEFAULT_INDEX. + * Makefile: Include definition of DEFAULT_INDEX in path.h. + +Sun Jul 19 10:19:22 1992 James Clark (jjc at jclark) + + * lib/font.c (FONT_COMMAND_HANDLER): Pass command name and single + argument. + * lib/font (font::load_desc, font::load): Don't split argument of + unknown command. + (font::handle_unknown_font_command): Change type. + * ps/ps.c (ps_font::handle_unknown_font_command, + handle_unknown_desc_command): Change type. + * dvi/dvi.c (dvi_font::handle_unknown_font_command): Change type. + +Fri Jul 17 11:12:49 1992 James Clark (jjc at jclark) + + * lib/font.h (font::handle_unknown_font_command): Add file and + line arguments. + * lib/font.c (font::handle_unknown_font_command): + * ps/ps.c (ps_font::handle_unknown_font_command): + * dvi/dvi.c (dvi_font::handle_unknown_font_command): Add file and + lineno arguments. Use _with_file_and_line functions for error + reporting. + + * lib/fontfile.c (font::unknown_desc_command_handler): New static + data member. + * lib/font.c (font::set_unknown_desc_command_handler): New + function. + (font::load_desc): For unknown commands, call + unknown_desc_command_handler if not null. + * lib/font.h (class font): Declare them. + (FONT_COMMAND_HANDLER): New typedef. + * ps/ps.c (handle_unknown_desc_command): New function. + (main): Set bflag if we had a -b option. Call + font::set_unknown_desc_command_handler. + (broken.h): Don't include. + * ps/Makefile: No need for broken.h. Pass BROKEN_SPOOLER_FLAGS to + submake + * ps/devps/Makefile: Add `broken' command to DESC file using + BROKEN_SPOOLER_FLAGS. + + * macros/tmac.e ([, ]): Add as synonyms for { and }. + + * macros/tmac.e ($p): Only exdent if \$3 > 0. + + * macros/tmac.e (@R, @S): New macros. + Declare @, po, $0, $i, $p, df, so, fu, bt, *, ?a, ?b, ?C, ?e, ?H, + ?I, ?n, ?o, ?R, ?s, ?T, ?W, ?w registers with @R. + Declare $H, $[0-9], .. macros with @S. + Declare |0, |1, |2, |3 strings with @S. + + * macros/tmac.e (@S): Rename to @U. + + * macros/tmac.e (@z): Define @b and bp as empty instead of + deleting them, + + * macros/tmac.e (@m): Deleted. + (@h): Don't call @m. + (@z): Don't set @m trap. + + * macros/tmac.e ($h, $f): Define |z as empty string. + + * macros/tmac.e (@D): Rework to avoid unbalanced .el requests. + (@q): Likewise. + + * macros/tmac.e (@h): Set ?H, ?C , ?s registers to 0 rather than + removing them. + ()f): Likewise for * register. + + * macros/tmac.e (sr): Don't ever scale the arguments. If the third + argument is missing, don't change $R. Call sr with three + arguments when initializing. + +Thu Jul 16 12:17:12 1992 James Clark (jjc at jclark) + + * macros/tmac.e (sr): New macro. + Initialize $r and $R using sr. + + * macros/tmac.e (,): Delete \*(#[. + + * troff/env.c (set_tabs): Read the tab type even if the position + is bad. Allow the position of the first tab stop to be negative. + +Wed Jul 15 13:14:37 1992 James Clark (jjc at jclark) + + * refer/dirnamemax.c: Use pathconf() if <unistd.h> defines + _POSIX_VERSION. + * refer/Makefile: Compile dirnamemax.c using -DHAVE_UNISTD_H + rather than -DPATHCONF_MISSING. + * Makefile: Get rid of PATHCONF_MISSING. + + * refer/map.c: New file. + * refer/index.c: Interface to mmap through map.c. Rename map_size + to map_len. + * refer/Makefile: Handle map.c. + * Makefile: Include -DHAVE_MMAP in OLDCFLAGS rather than CFLAGS. + +Tue Jul 14 14:15:20 1992 James Clark (jjc at jclark) + + * Makefile: RANLIB should be `true' if there is no ranlib. + * lib/Makefile (libgroff.a): Simplify. + * driver/Makefile (libdriver.a): Simplify. + + * Makefile: Change -DWAIT_COREDUMP_0200 to -DWCOREFLAG=0200. + * groff.c (WCOREDUMP): Use WCOREFLAG. Define only if not already + defined. + +Sat Jul 11 09:19:17 1992 James Clark (jjc at jclark) + + * troff/env.c (compare_ranges): Declare as extern "C". + + * troff/input.c (init_registers): Use `struct tm' instead of `tm'. + + * macros/tmac.s, macros/tmac.e: Change .nx /dev/null to .nx. + +Wed Jul 8 11:52:27 1992 James Clark (jjc at jclark) + + * pic/troff.c (troff_output::text): Merge in grops_output::text, + but conditionalize use of \X based on \*(.T. + (grops_output::*): Deleted. + * pic/output.h: Delete declaration of make_grops_output. + * pic/main.c (main): Ignore -p and -x. driver_extension_flag is 1 + by default. -n sets it to 0. + (usage): Corresponding changes. + * groff.c (main): Don't pass -x or -p to pic. + * groff.sh: Likewise. + + * ps/ps.c (ps_printer::do_exec, ps_printer::do_file): Force ndefs + to be non-zero. + + * ps/devps/afmtodit: Change calculation of asc_boundary and + desc_boundary. Make these bounds inclusive. + * ps/devps: Regenerate font files. + +Tue Jul 7 13:14:15 1992 James Clark (jjc at jclark) + + * macros/tmac.latin1: New file. + * macros/tmac.tty-char: Use tmac.latin1. + (tmac.tty-tr): Deleted. + * macros/Makefile: Install tmac.latin1. + * macros/tmac.dvi: Use tmac.latin1. + * macros/troffrc: Translate \[char160] onto no-break space here. + * macros/{tmac.dvi,tmac.ps,tmac.tty,tmac.X75}: Don't do it here. + +Mon Jul 6 11:06:52 1992 James Clark (jjc at jclark) + + * macros/tmac.Xps: Use `do' request. + + * macros/tmac.ps: Use `do' request. + + * macros/tmac.e (@C): Use `do' request. + + * macros/tmac.X, macros/tmac.Xps: Moved from xditview. + * macros/Makefile: Install tmac.X*. + + * tty/tmac.tty, tty/tmac.tty-char: Move to macros. + * tty/Makefile: Don't install tmac.tty*. + * macros/Makefile: Install tmac.tty*. + + * dvi/tmac.dvi: Move to macros. + * dvi/Makefile: Don't install tmac.dvi. + * macros/Makefile: Install tmac.dvi. + + * ps/tmac.ps*: Move to macros. + * ps/Makefile: Don't install tmac.ps*. + * macros/Makefile: Install tmac.ps*. + + * eqn/box.c: Provide draw_lines parameter corresponding to -D + option. + * macros/eqnrc: Set draw_lines parameter based on device. + * groff.c: Don't pass -D flag to eqn. + * groff.sh: Likewise. + * eqn/main.c: Warn about use of -D. + + * troff/input.c (process_startup_file): New function. + (main): Call process_startup_file(). + * macros/troffrc: New file. + * macros/Makefile: Install troffrc. + * groff.c (main): Don't pass extra -m option to troff. For a + pseudo device pass the name of the pseudo device to troff using + -d. + * groff.sh: Likewise. + * groff.c (possible_command::prepend_arg): Deleted. + + * troff/input.c (do_request): New function. + (init_input_requests): Bind "do" to do_request. + + * eqn/main.c (main): Instead of loading eqnchar from device directory, + load eqnrc from macro directory. + * macros/eqnrc: New file. + * macros/Makefile: Install eqnrc. + * ps/devps/eqnchar: Deleted. + * ps/devps/Makefile: Don't install eqnchar. + * dvi/devdvi/eqnchar: Deleted. + * dvi/devdvi/Makefile: Don't install eqnchar. + * groff.c (main): Pass -M to eqn. Don't pass -F to eqn. New + variable optM. + + * lib/device.[ch]: New files. + * lib/font.h (font::set_device_name, font::get_device_name): + Deleted. + * lib/fontfile.c: Use device.h. + * lib/Makefile: Handle device.[ch]. Make paths.h define DEVICE. + * troff/input.c: Delete definition of `device'. + (main): Don't initialize device. + * troff/troff.h: Include device.h rather than declaring device. + * troff/Makefile: No need to handle DEVICE. + * driver/input.c: Include device.h. Don't use + font::{set,get}_device_name. + * groff.c, Makefile: Rename device.h to config.h. + * groff.c: Use library device variable. + * eqn/main.c: Use library device variable. + * eqn/Makefile: No need to handle DEVICE. + + * lib/searchpath.[ch]: New files. + * lib/Makefile: Handle searchpath.[ch]. + * troff/input.c (open_file, init_dirs): Deleted. + (macro_dirs): Deleted. + (open_mac_file, macro_source): Use class search_path. + (add_string, struct string_list): Move definition. + (main): Change -M option to use macro_path. Delete call to + init_dirs(). + * lib/fontfile.c (font::command_line_font_dir, font::open_file): + Rewrite to use class search_path. + * lib/font.h, lib/fontfile.c (font::cl_font_dirs): Deleted. + * lib/Makefile: fontfile.c depends on searchpath.h. + * lib/Makefile: Rename fontpath.h to paths.h. Make paths.h define + MACROPATH. + * lib/macropath.[ch]: New files. + * troff/Makefile: No need to handle MACROPATH. + + * troff/input.c: Delete DUMP code. + * lib/fontfile.c, lib/font.h: Delete + font::forget_command_line_font_dirs. + + * troff/input.c (push_token): New function. + (handle_first_page_transition): Use push_token(). + (process_input_stack): Change handling of a space at the beginning + of the line. + +Sun Jul 5 17:11:09 1992 James Clark (jjc at jclark) + + * troff/input.c (font_dirs): Delete unused variable. + + * eqn/lex.c (do_set): Correct error messages. + +Sat Jul 4 10:20:55 1992 James Clark (jjc at jclark) + + * troff/input.c (do_define_string): Allow the string name to be + followed immediately by a tab. + (define_character): Likewise. + +Thu Jul 2 10:59:15 1992 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::draw): When drawing an arc, don't allow k to + be negative. + + * troff/input.c (input_iterator::is_file): New virtual function. + (file_iterator::is_file): New function. + (input_stack::end_file): New function. + (input_stack::next_file): Handle the situation where there is no + file on the input stack correctly. Avoid making two passes over + the input stack. + (next_file): Make the filename optional; in this case call + input_stack::end_file(). + +Wed Jul 1 10:17:25 1992 James Clark (jjc at jclark) + + * dvi/tmac.dvi: Change the definitions of \(ul and _ so that they + produce a real _ charater when the current font is CW and _ + otherwise. + + * lib/errarg.c (errarg::errarg(const char *)): Invert conditional + expression to work around gcc 2.2 bug. + +Wed Jun 24 08:12:24 1992 James Clark (jjc at jclark) + + * eqn/main.c (main): Don't give an error if we can't find eqnchar. + + * troff/env.c (environment::add_padding): New function. + (environment::add_char): Use add_padding(). + (environment::space): Likewise. + (environment::wrap_up_field): Add some padding if there is none + and there's no current tab. + * troff/env.h: Declare environment::add_padding. + +Mon Jun 22 08:37:45 1992 James Clark (jjc@jclark) + + * pic/pic.y: undef fmod and rand before declaring them. + +Sun Jun 14 11:40:18 1992 James Clark (jjc@jclark) + + * troff/input.c (main): If the DESC file specifies a font name of + 0, then leave the corresponding font position empty. + + * nroff.sh: New file. + * Makefile (install.nobin): Install nroff.sh. + + * tty/devlatin1/R.proto: Add ao as synonym for de. + * tty/tmac.tty-char: Define ao as o. + + * tty/dev{ascii,latin1}/R.proto: Add aq. + * tty/tmac.tty-char: Delete definition of aq. + +Mon Jun 8 11:43:20 1992 James Clark (jjc@jclark) + + * troff/input.c (init_charset_table): Don't translate 0240. + * ps/tmac.ps: Translate char160 to space. + * dvi/tmac.dvi: Likewise. + * tty/tmac.tty: Likewise. + +Sun Jun 7 10:52:35 1992 James Clark (jjc@jclark) + + * dvi/tmac.dvi: Add support for all Latin-1 characters. + + * macros/tmac.s: Delete definitions of \(rg, \(ah, \(ad, \(a-, + \(ao, \(ac, \(ho, \(-D, \(Sd, \(TP, \(Tp, \(ss, \(AE, \(ae, \(OE, + \(oe, \(r?, \(r!. + + * tty/tmac.tty-char: Add \(ah. + + * dvi/tmac.dvi: Add definitions of Tp, TP, Sd, -D, ho. + No need to define \(FM and \(!/. Conditionalize all character + definitions. + + * ps/devps/lgreekmap: Add +h, +f, +p. + + * ps/tmac.psnew: New file. + * ps/Makefile: Install tmac.psnew. + + * troff/input.c (charinfo_to_node_list): Don't ever interpret + character definitions in compatible mode. + + * troff/input.c (remove_character): New function. + (init_input_requests): Bind remove_character to "rchar". + + * ps/tmac.psold: New file. + * ps/Makefile: Install tmac.psold. + * ps/tmac.ps: Load tmac.psold. Move definitions of ISO Latin-1 + characters into tmac.psold. Make these definitions unconditional. + + * tty/tmac.tty-char: Define \n(_C only if it is not already defined. + + * ps/tmac.ps: Don't define \('c and \('C. + + * ps/devps/textmap: Move Greek characters to... + * ps/devps/symbolchars: + +Sat Jun 6 16:41:17 1992 James Clark (jjc@jclark) + + * ps/devps/text.enc: Add quotesingle. + * ps/devps/textmap: Add +h, +f, +p, Fn, Bq, bq, aq, lz. + * tty/tmac.tty-char: Likewise. + * dvi/devdvi/texmi.map: Add +h, +f, +p. + * dvi/devdvi/texi.map: Add Fn. + * dvi/devdvi/msam.map: Add lz. + * dvi/tmac.dvi: Handle Bq, bq, aq. + + * pic/lex.c (get_token): Recognize 'th. + * pic/map.y: Allow `expr'th in contexts where ORDINAL was allowed. + +Fri Jun 5 11:20:46 1992 James Clark (jjc@jclark) + + * ps/devps/textmap: Move di, mu, +- to... + * ps/devps/symbolchars: + + * macros/tmac.s (@XS): Don't call par@reset or fi. + (XA): Call LP. Turn off adjustment. Reduce line length. + + * macros/tmac.s: Initially alias XS to LP. + (XS): Rename to @XS. + (cov*ab-init): Alias XS to @XS. + +Thu Jun 4 09:12:05 1992 James Clark (jjc@jclark) + + * troff/token.h: Delete TOKEN_CHAR_HEIGHT, TOKEN_CHAR_SLANT, + TOKEN_FONT_NAME, TOKEN_FONT_POSITION, TOKEN_SIZE tokens. + (token::is_size, token::changes_env): Deleted. + * troff/number.c (parse_term): No need to process \s explicitly. + Call tok.next() only after scale indicator has been processed. + * troff/input.c (do_overstrike, do_bracket): No need to process \s, + \f etc explicitly. + (token::next): Handle \s, \f, \S, \H immediately rather than + returning them as tokens. + (token::operator==, token::description, token::add_to_node_list, + token::process): Remove handling of deleted tokens. + + * troff/env.c (environment::add_char): When adding padding + indicator character, call start_line() if necessary. + +Wed Jun 3 09:55:50 1992 James Clark (jjc@jclark) + + * ps/devps/afmtodit: Don't output 0 kerns. + + * ps/devps/afmtodit: Remove directory from name of encoding in + font description file. + + * ps/devps/afmtodit: Improve error messages. + + * ps/devps/afmtodit: Allow DESC file to be specified with -d. + + * ps/devps/Makefile: Incorporate FontMakefile. Rework. + * ps/devps/FontMakefile: Deleted. + * ps/devps/afmname: New file. + + * ps/devps/symbol.sed: New file. + * ps/devps/symbol.diff: Deleted. + * ps/devps/FontMakefile: Generate symbol.afm using symbol.sed. + Generate zapfdr.afm from zapfd.afm. + + * tty/tmac.tty (tty-char): Prefix definition with ". + + * macros/tmac.an (TP): Don't start a diversion if one has already + been started. + + * tty/tmac.tty-char: Add Latin-1 characters. + + * tty/tmac.tty-char: Incorporate suggestions from Paul Eggert. + +Tue Jun 2 00:54:34 1992 James Clark (jjc@jclark) + + * tbl/table.c (table::allocate): Delete old_vline, old_entry. + Move declaration of struct horizontal_span. + + * tbl/table.c (table::table): Initialize span_list. + (table::~table): Delete span_list. + + * lib/ptable.h (PTABLE(T)::~PTABLE(T)): Delete v. + + * ps/devps/Makefile: Avoid dependency on GNU make. + + * ps/tmac.ps: Check that character does not already exist before + defining it. + + * tty/tmac.tty: Add definitions of \(ff, \(!=, \(==, \(~=, \(sq, + \(OE, \(oe, \(AE, \(ae, \(lh, \(rh. Delete definitions of \(en, + \(ru, \(ul, \(br, \(bv, \(sl which are in the font description + files. + + * tty/tmac.tty-char: New file. + * tty/Makefile: Install tmac.tty-char. + * tty/tmac.tty: Move definitions of \(ua, \(da, \(uA, \(dA into + tmac.tty-char. + + * tty/tmac.tty: Fix definition of \(34. + + * tty/dev{ascii,latin1}/R.proto: Add ha and ti. Map + bracket-drawing characters onto |. Add *o. + + * troff/env.c (environment::wrap_up_tab): Increment field_spaces + only if current_field. + + * troff/dictionary.c (dictionary::lookup): Free old_table after + rehashing. + +Mon Jun 1 10:15:22 1992 James Clark (jjc@jclark) + + * tty/dev{ascii,latin1}/R.proto: Add uppercase Greek characters + whose glyphs are identical to glyphs of some Roman character. + + * tty/devlatin1/R.proto (bu): Deleted. + * tty/devascii/R.proto (bu): Deleted. + * tty/tmac.tty: Add definition of \(bu. + + * eqn/main.c (do_file): Pass FILE as argument. + (main): Automatically load eqnchar. New options -F and -n. + Pass do_file an opened FILE. + * groff.c: Don't pass eqnchar to eqn. Pass -F options onto eqn. + No need to include font.h. + * groff.sh: Likewise. Don't need to use - for standard input. + Prefix files with -- if first file starts with -. + + * macros/tmac.e: Conditionalize use of \$* on \n(.g. + + * troff/env.c (environment::possibly_break_line): Don't set line + to 0 across call to output_line(). Don't call output_line() until + after discarding nodes after break. + +Sun May 31 10:45:29 1992 James Clark (jjc@jclark) + + * request.h (macro::empty): Declare it. + * input.c (macro::empty): New method. + (interpolate_macro): Don't give a WARN_SPACE if the two-character + macro is empty. + +Sat May 30 10:27:15 1992 James Clark (jjc@jclark) + + * troff/env.c (environment::start_field): Decrement space_total + when a space is frozen. + +Fri May 22 14:34:38 1992 James Clark (jjc@jclark) + + * macros/tmac.an (R): Delete macro. + + * troff/input.c (get_copy, token::next): Support \# (like \" but + newline is ignored). + + * troff/input.c (token::next): Fix error message in 'Y' case. + +Thu May 21 09:26:24 1992 James Clark (jjc@jclark) + + * eqn/delim.c (define_extensible_string): Recognize any prefix of + a delimiter name. + +Fri May 15 10:20:41 1992 James Clark (jjc at jclark) + + * c++test.c: Include <osfcn.h>. + + * lib/strtol.c, lib/getcwd.c, ps/psbb.c: Declare errno in case + <errno.h> doesn't. + +Fri May 8 09:37:19 1992 James Clark (jjc at jclark) + + * tbl/table.c (table::divide_span): Don't count column separation + if expand was specified. + + * tbl/main.c (process_format): Don't ignore width specs in + continued format. Give warning for changing equal widths or + column separation in continued format. + (process_data): Set column separation, minimum width, equal + columns at end of table. + +Thu May 7 08:50:40 1992 James Clark (jjc at jclark) + + * troff/node.c (kern_pair_node::add_discretionary_hyphen, + node::add_discretionary_hyphen): Use soft_hyphen_char. + (set_soft_hyphen_char): New function. + (init_node_requests): Bind to shc. Initialize soft_hyphen_char. + + * Makefile (c++tested): Give more helpful message if test fails. + +Tue May 5 10:58:39 1992 James Clark (jjc at jclark) + + * troff/input.c (init_charset_table): Translate 0240 to + an unbreakable space. + + * troff/token.h (token::hyphen_indicator): New function. + * troff/charinfo.h (TRANSLATE_HYPHEN_INDICATOR): New special + translation. + * troff/input.c (translate): Allow translation to \%. + * troff/node.c (node::add_char): Handle + TRANSLATE_HYPHEN_INDICATOR. + (make_node): Don't allow TRANSLATE_HYPHEN_INDICATOR here. + + * troff/input.c (init_charset_table): Don't set BREAK_AFTER flag + for \(hy. + + * tty/devlatin1/R.proto: \(hy and - should print as 055. + +Tue Apr 21 09:24:42 1992 James Clark (jjc at jclark) + + * groff.c (run_commands): If the last command gets a SIGPIPE send + a SIGPIPE to all children than haven't yet terminated. When + command terminates, set pid field to -1. + +Fri Apr 17 11:20:48 1992 James Clark (jjc at jclark) + + * groff.c (main): Pass an appropriate -filename option to gxditview. + +Thu Apr 16 15:11:40 1992 James Clark (jjc at jclark) + + * Makefile.bd (install): Remove existing program before copying. + + * Makefile, */Makefile, Makefile.bd, groff.sh, groff.c: Allow + programs which have Unix counterparts to be installed with + user-specified prefix. + + * troff/input.c (exit_troff): Don't check if exit_started. + (exit_request): Don't call exit_troff if exit_started. + + * Makefile.bd (install.mm): Rename to install.dwbmm. + +Tue Apr 14 10:05:10 1992 James Clark (jjc at jclark) + + * driver/input.c (do_file): Add missing break for '#' case. + +Mon Apr 13 10:11:02 1992 James Clark (jjc at jclark) + + * troff/input.c (input_stack::clear): Clear past any boundaries and + then add the boundaries back. + + * troff/input.c (exit_troff): Return immediately if already + exiting. + + * macros/tmac.s (pg@end-text): New macro. Use pg@end-text for the + end macro. + (pg*end-page): If the text has ended and there are no more + footnotes or keeps, exit. + + * macros/doc-ditroff (Lq, Rq): Define as \(lq and \(rq. + + * troff/input.c (init_charset_table): Make \(rq transparent by + default. + + * macros/tmac.an: Define lq and rq strings. + + * macros/tmac.s (Q, U): Define as \(lq and \(rq. + +Sun Apr 12 12:54:37 1992 James Clark (jjc at jclark) + + * troff/env.c (environment::final_break): New function. + (environment::newline): Set prev_line_interrupted to 2 if + exit_started. + * troff/env.h: Declare environment::final_break. + * troff/input.c (exit_troff): Call environment::final_break() + instead of environment::do_break(). + + * macros/Makefile: Install man.local if $(MACRODIR)/man.local + doesn't already exist. + * macros/man.local: New file. + * macros/tmac.an: Load man.local. + * macros/man.ultrix: New file. + +Sat Apr 11 17:32:04 1992 James Clark (jjc at jclark) + + * troff/input.c (exit_groff): Rename to... + (exit_troff): New function. + + * troff/div.c (exit_started, done_end_macro, + seen_last_page_ejector): New global variables. + (began_page_in_end_macro): New static variable. + (exit_flag): Deleted. + (top_level_diversion::top_level_diversion): Initialize + last_page_count. + (top_level_diversion): More elaborate test for whether + cleanup_and_exit() should be called. + Set began_page_in_end_macro if the end macro isn't yet finished. + * troff/div.h (top_level_diversion::last_page_count): New data + member. + (top_level_diversion::set_last_page): New function. + (exit_started, done_end_macro, seen_last_page_ejector): Declare. + * troff/env.c (do_break): Zero prev_line_interrupted. + * troff/input.c (exit_flag): Delete declaration. + (LAST_PAGE_EJECTOR): New magic cookie. + (token::next): Handle LAST_PAGE_EJECTOR. + (exit_groff): Set exit_started and done_end_macro instead of + exit_flag. Call top_level_diversion::set_last_page. Push a + LAST_PAGE_EJECTOR instead of calling push_page_ejector(). Do + another ejection after setting seen_last_page_ejector. + +Thu Apr 9 04:37:11 1992 James Clark (jjc at jclark) + + * etc/grog.sh, etc/grog.sh: Recognize -me sh macro. + + * macros/tmac.e (TH): Make sure there's room for the initial + header. + + * macros/tmac.s (par@init): Make PD and DD at least \n(.V. + Set FVS in points rather than units. + +Mon Apr 6 11:21:32 1992 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::add_trap): Don't consider the + position of empty slots. + +Fri Apr 3 10:46:45 1992 James Clark (jjc at jclark) + + * ps/devps/S: Fix height and depth of parenrightex. + * ps/devps/symbol.diff: Regenerate. + +Sat Mar 28 21:17:52 1992 James Clark (jjc at jclark) + + * tmac.e (u): Do underlining as in -mgs. + +Fri Mar 27 09:23:44 1992 James Clark (jjc at jclark) + + * tty/tty.c (tty_printer::end_page): If overstriking is + suppressed, still turn overstruck horizontal and vertical lines + into +. + + * lib/new.c: Back out Feb 24 change; no longer needed with gcc + 2.1. + + * refer/label.y (format_expr::evaluate): Avoid use of %0*d. + +Wed Mar 18 09:29:10 1992 James Clark (jjc at jclark) + + * Version 1.05 released. + +Tue Mar 17 16:50:45 1992 James Clark (jjc at jclark) + + * tty/tty.c: Instead of keeping an array of glyphs and then + sorting it, keep a ordered linked list of glyphs for each line. + + * driver/driver.h: Include stddef.h. + + * tty/tty.c (compare_glyph): + * refer/refer.c (rcompare): + * troff/env.c (compare_ranges): Arguments of qsort comparison + function should be const void *. + + * troff/number.c (parse_term): + * dvi/dvi.c (draw_dvi_printer::draw): Avoid initialization in + switch statement. + + * refer/label.y (consider_authors): Don't access variables + constructed under a condition outside that condition: put braces + round for statement containing declaration; redeclare use of same + variable later. + + * pic/pic.y (text_expr): Delete production that allows + parenthesised text_expr. + (expr): Allow a conditional_expr to appear in parentheses. + (conditional_expr): Rename to any_expr. + + * mm: Install new version 1.01 from jh. + + * lib/font.c (font::get_width): Cache scaled widths. + (font::font): Initialize widths_cache. + (font::~font): Destroy widths_cache. + * lib/font.h: Add font::widths_cache. Declare font_widths_cache. + +Mon Mar 16 10:16:10 1992 James Clark (jjc at jclark) + + * c++test.c, c++test.ref: New files. + * Makefile: Check that the C++ compiler works. + + * ps/tmac.pspic (PSPIC): Do a break. + + * ps/tmac.ps: Move definition of PSPIC into... + * ps/tmac.pspic: New file. + (PSPIC): Draw box around picture, but make it invisible to grops. + * ps/tmac.ps: Load tmac.pspic. + * ps/Makefile: Install tmac.pspic. + +Sun Mar 15 14:18:08 1992 James Clark (jjc at jclark) + + * lib/font.c (scale_round): If n is negative, + subtract .5 before truncating floating point result. + + * lib/fontfile.c: Include <errno.h>. + +Tue Mar 10 14:17:03 1992 James Clark (jjc at jclark) + + * driver/input.c (get_char): Inline. Don't update current_lineno. + Change callers to up date current_lineno if necessary. + Use get_char() instead of getc(current_file). + +Sun Mar 8 18:05:28 1992 James Clark (jjc at jclark) + + * ps/tmac.ps: Fix up spacing of \(mo and \(nm. + +Fri Mar 6 19:38:58 1992 James Clark (jjc at jclark) + + * tty/tty.c (tmac.tty): Define \(rg as (R). + +Tue Mar 3 10:11:25 1992 James Clark (jjc at jclark) + + * lib/lib.h: New define a_delete. + * Use a_delete instead of delete when deleting an array of objects + without destructors. + + * lib/lib.h: Rename adelete to ad_delete. + * Change uses of adelete. + +Mon Mar 2 12:41:05 1992 James Clark (jjc at jclark) + + * eqn/eqn.y: Include lib.h. + + * troff/node.c (grow_font_table): Delete old_font_table. + + * mm: Install new version from jh. + +Fri Feb 28 10:42:23 1992 James Clark (jjc at jclark) + + * tbl/table.h (format_type): Make global instead of local to class + entry_format. Prefix enumerators with FORMAT_. + * tbl/table.c, tbl/main.c: Corresponding changes. + * refer/token.h (token_type): Make global. Prefix enumerators + with TOKEN_. + * refer/token.[ch]: Corresponding changes. + * Makefile: Get rid of -DNO_NESTED_TYPES configuration option. + + * troff/div.c (node::set_vertical_size): Don't name argument. + +Thu Feb 27 10:29:19 1992 James Clark (jjc at jclark) + + * Makefile: New configuration option ARRAY_DELETE_NEEDS_SIZE. + * lib/lib.h: Define adelete accordingly. + * pic/object.c (graphic_object::graphic_object): + * tbl/main.c (format::~format): + * tbl/table.c (table::~table): + * refer/ref.c (reference::~reference, reference::merge, + reference::insert_field, reference::delete_field): Use adelete. + + * Makefile: Change NESTED_TYPES to NO_NESTED_TYPES. + * refer/token.h: + * tbl/table.h: Corresponding changes. + + * common.c (common_output::dashed_arc, common_output::dotted_arc): + Ensure total_angle is positive. + +Wed Feb 26 08:49:26 1992 James Clark (jjc at jclark) + + * refer/ref.c (reference::merge, reference::insert_field, + reference::delete_field): Avoid delete[0]. + + * refer/token.c (init_special_chars): Move calls to cmupper + outside calls to init_two_char_letter to work around bug in gcc + 2.0. + +Mon Feb 24 14:20:00 1992 James Clark (jjc at jclark) + + * lib/new.c (operator new): Use __builtin_new for g++. + + * pic/object.c (graphic_object::~graphic_object): Don't use + delete [] on 0. + + * pic/object.c (output::compute_scale): Initialize max_width and + max_height. + +Sat Feb 15 09:55:20 1992 James Clark (jjc at jclark) + + * troff/input.c (write_request): Call fflush. + + * troff/node.h (class composite_node): Move declaration to node.c + * troff/input.c (charinfo_to_node): Rename to ... + (charinfo_to_node_list): Return node list rather than composite + node. + * troff/node.c (make_composite_node): New function. + (make_node, add_char): Call make_composite_node instead of + charinfo_to_node. + (class composite_node): Add a tfont * member. Delete font_size + member. + (composite_node::composite_node, composite_node::copy, + composite_node::size): Corresponding changes. + (composite_node::tprint): Provide constant spacing, emboldening + and track kerning as specified in tfont. + (composite_node::width): Change width calculation accordingly. + * troff/env.h (environment::composite): New member. + (environment::is_composite, environment::set_composite): New + functions. + * troff/env.c (environment::environment): Initialize composite. + * troff/input.c (charinfo_to_node): Call + environment::set_composite. + * troff/node.c (make_composite_node, make_glyph_node): Use the + plain version of the tfont if the environment is composite. + + * troff/node.c (font_info::get_space_width): Additional argument + giving space_size. Handle constant space correctly. Scale by + space_size unless constant spaced. + (env_sentence_space_width): New function. + * troff/node.h: Declare it. + * troff/env.h (environment::get_space_size, + environment::get_sentence_space_size, + environment::get_narrow_space_width, + environment::get_half_narrow_space_width): Make inline. + (environment::get_space_width): Make inline. Just call + env_space_width. + * troff/env.c: Delete definitions for funtions made inline. + (environment::space_newline, environment::space): Use + env_sentence_space_width(). Don't scale by space_size. + * troff/node.h: Move declarations of env*space_width() functions + into env.h. + +Sat Feb 8 09:30:22 1992 James Clark (jjc at jclark) + + * macros/tmac.s (PS): Don't try to set negative indent. + +Thu Feb 6 09:00:35 1992 James Clark (jjc at jclark) + + * pic/pic.y: Fix min function. + +Tue Jan 28 07:52:29 1992 James Clark (jjc at jclark) + + * man/mdate.sh: Clear LANGUAGE. + +Sun Jan 19 13:02:41 1992 James Clark (jjc at jclark) + + * pic/pic.y, pic/lex.c: Rename COMMAND token to COMMAND_LINE. + * pic/lex.c: New COMMAND keyword. + * pic/pic.y (print_args, print_arg): New rules. + (placeless_element): Use print_args for PRINT. + New COMMAND element. + +Tue Jan 7 13:14:31 1992 James Clark (jjc at jclark) + + * troff/input.c (terminal): Handle missing argument correctly. + + * pic/pic.y (text_expr): New rule. + + * pic/pic.y: Implement := operator. + +Sun Jan 5 10:23:02 1992 James Clark (jjc at jclark) + + * etc/grog.pl, etc/grog.sh: Distinguish old and new versions of + mdoc. + +Sat Jan 4 14:42:26 1992 James Clark (jjc at jclark) + + * ps/devps/dingbatsrmap: Include this in the distribution. + + * macros/tmac.doc: Replace with new version from 2nd Networking + Release. Fix loading of doc-* files. + * macros/{doc-common,doc-ditroff,doc-nroff,doc-syms}: New files. + * macros/tmac.doc.old: New file. Apply fixes that had been + applied to old tmac.doc. + * macros/tmac.andoc: Check that we're running under groff. + * macros/Makefile: Rework. + +Fri Jan 3 13:27:51 1992 James Clark (jjc at jclark) + + * tbl/table.h (format_type): + * refer/token.h (token_type): If NESTED_TYPES is defined, use + typedef to make these types visible at file scope. + * Makefile: Add NESTED_TYPES configuration option. + + * troff/div.c (mark): At the top level use the value of + nl_reg_contents rather than the current vertical position. + +Thu Jan 2 10:34:51 1992 James Clark (jjc at jclark) + + * tty/tty.c: Implement \D for horizontal or vertical lines. + (tty_printer::set_char): Use vec_used+2 as serial number. + Don't allow size of vector to exceed USHRT_MAX-2. + Split off part into... + (tty_printer::add_char): New function. + (tty_printer::draw): New function. + (compare_glyph): Handle equal serial numbers. + (tty_printer::end_page): Handle overstruck characters from \D. + (main, usage): Implement -d option. + +Mon Dec 23 10:37:51 1991 James Clark (jjc at jclark) + + * tbl/main.c (process_format): + * eqn/text.c (split_text): + * troff/input.c (token::next): Use inner block for declarations + with initializers in switch statement. + +Mon Dec 16 20:52:03 1991 James Clark (jjc at jclark) + + * pic/common.c (common_output::dash_line): Cope with zero-length + lines. + +Sun Nov 17 12:04:08 1991 James Clark (jjc at jclark) + + * Version 1.04 released. + +Wed Nov 13 05:27:21 1991 James Clark (jjc at jclark) + + * macros/tmac.an (TH): Define a macro an-init to define variables + based on command line arguments. + (an-header): Call it. + +Sun Nov 3 12:07:34 1991 James Clark (jjc at jclark) + + * Makefile (install.mm): Rename to install.dwbmm. + + * Makefile: Integrate mm. + * mm: New directory. + +Wed Oct 30 10:11:34 1991 James Clark (jjc at jclark) + + * refer/dirnamemax.c: If PATHCONF_MISSING is defined, include + <sys/types.h>. + + * pic/troff.c (troff_output::simple_spline, + troff_output::simple_polygon): Rename variable `v' to `d' to avoid + shadowing parameter. + + * lib/tmpfile.c (xtmpfile): Declare dir as const char *. + + * lib/ptable.h: Add explicit casts when converting from unsigned + long to unsigned. + + * dvi/devdvi/{SA,SB,msam.map,msbm.map}: New files. + * dvi/devdvi/Makefile: Install SA, SB. + + * refer/indxbib.c: Add declaration of mktemp. + + * refer/lookbib.c: Add declaration of isatty. + +Fri Oct 25 09:00:17 1991 James Clark (jjc at jclark) + + * pic/lex.c (interpolate_macro_with_args): While collecting + arguments, keep track of whether we're in a string. + +Wed Oct 23 08:42:48 1991 James Clark (jjc at jclark) + + * ps/tmac.ps (PSPIC): Do the .sp after the \X, and move the \X + down with \v, so as to avoid problems with top of page trap + setting no space mode. + +Tue Oct 22 17:38:49 1991 James Clark (jjc at jclark) + + * eqn/lex.c (get_delimited_text): Allow tab before macro body. + +Tue Oct 15 17:24:53 1991 James Clark (jjc at jclark) + + * ps/psrm.c (ps_get_line): Fix bug when lines longer than 255. + Improve error message. + +Fri Oct 11 11:09:38 1991 James Clark (jjc at jclark) + + * ps/psrm.c (print_ps_string): Don't pass negative numbers to + printf("%03o"); + +Wed Oct 9 17:50:14 1991 James Clark (jjc at jclark) + + * groff.c (possible_command::execp): Always use _exit() after a + failed exec. + + * Makefile: Add HAVE_UNION_WAIT, HAVE_PID_T, WAIT_COREDUMP_0200, + NO_SYS_WAIT_H configuration options. + * groff.c: Use these options. Use POSIX-style macros to extract + fields from the status returned by wait(). + +Fri Oct 4 12:12:27 1991 James Clark (jjc at jclark) + + * tbl/table.c (table::compute_separation_factor): Allow the + separation factor to drop to 0. + +Tue Oct 1 18:12:38 1991 James Clark (jjc at jclark) + + * refer/search.c: Include <errno.h>. + +Sun Sep 29 08:40:57 1991 James Clark (jjc at jclark) + + * pic/pic.y (YYDEBUG): Don't define for Borland C++. + + * lib/lib.h: #ifdef out declarations of itoa and iftoa for Borland + C++. + + * pic/lex.c (input_stack::bol): Move definition out of class body. + + * pic/main.c: On MSDOS munge argv[0]. + + * lib/ptable.h: Define name2 as _Paste2 for Borland C++. + + * lib/ptable.c (hash_string): Use unsigned long rather than + unsigned. + (next_ptable_size): Use unsigned rather than int. Give an error + message if we've hit the largest table size. + * lib/ptable.c: Corresponding changes. Also use unsigneds for the + table size. + + * pic/object.h (object_spec): Make flags unsigned long. Declare + flags as const unisgned long rather than as enums. + + * pic/output.c: Deleted. + + * pic/troff.c (troff_output::simple_ellipse): Remove spurious %. + + * tbl/table.c (simple_entry::note_double_vrule_on_{left,right}): + Add additional argument. + (line_entry::note_double_vrule_on_{left,right}): Set value of + douvle_vrule_on_{right,left} flag according to argument. + (simple_line_entry::simple_print, + simple_line_entry::double_line_print): If adjacent to double vrule + on a corner extend rather than shorten the rule by half the double + vrule sep. + + * troff/number.c (parse_term): In checking for overflow, handle the + case where the current horizontal position is negative. + +Thu Sep 12 08:26:09 1991 James Clark (jjc at jclark) + + * pic/object.c (draw_arrow): Check for object having zero length. + +Wed Sep 11 10:32:38 1991 James Clark (jjc at jclark) + + * eqn/main.c (do_file): Split off inline equation handling into... + (inline_equation): New function. Search for starting delimiter + using... + (delim_search): New function. Don't recognize a delimiter that + occurs in the name of an escape sequence, number register, string + etc. + +Tue Sep 10 04:01:11 1991 James Clark (jjc at jclark) + + * eqn/delim.c (delim_box::compute_metrics): Don't call + define_extensible_string if left is 0. + (delim_box::output): Don't print the left delimiter if left is 0. + (delim_box::debug_print): Check for left == 0 before calling printf. + +Fri Aug 23 13:02:30 1991 James Clark (jjc at jclark) + + * troff/Makefile (majorminor.c): Include only digits in + minor_version. + +Thu Aug 22 09:35:37 1991 James Clark (jjc at jclark) + + * refer/dirnamemax.c: new file. + * refer/genlimits.c: Deleted. + * refer/indxbib.c (main): Use dir_name_max() instead of NAME_MAX. + Don't check path length. + * refer/Makefile: Add dir_name_max.o; delete genlimits. + * Makefile: Add PATHCONF_MISSING option. + + * refer/indxbib.c (get_cwd): New function. + (main): Use get_cwd(). + * lib/getcwd.c: New file. + * Makefile: Delete -DHAVE_GETWD. Include GETCWD variable. Pass + GETCWD in SUBFLAGS. + * lib/Makefile: Compile getcwd.o. + + * ps/tmac.psatk (psatk-defs): Define showpage after pushing + userdict. + + * refer/indxbib.c (main): Check success of mktemp. + + * lib/tmpfile.c: New file. + * lib/Makefile: Add tmpfile.c. + * lib/lib.h: Declare xtmpfile(); include <stdio.h>. + * ps/ps.h: Delete declaration of mktemp(). + * ps/ps.c (ps_printer::ps_printer): Use xtmpfile(). + * refer/refer.c (divert_to_temporary_file): Use xtmpfile(). + * driver/driver.h: No need now to include errno.h. + + * everywhere: Set errno to 0 before calling fopen(). + + * eqn/eqn.h, etc/soelim.c, driver/driver.h, etc/addftinfo.c, + dvi/tfmtodit.c, groff.c, refer/index.c, refer/linear.c, + refer/lookbib.c, refer/refer.h, ps/psbb.c: Include <errno.h>. + +Mon Aug 19 10:52:18 1991 James Clark (jjc at jclark) + + * troff/env.h (translate_space_to_dummy): Declare it. + * troff/env.c (environment::space_newline, environment::space): + If translate_space_to_dummy is set then make the width of spaces 0. + * troff/input.c (translate): If the second character of a + translation is a space, translate to unbreakable space. If the + first character is a space, set or clear translate_space_to_dummy + according to whether the second character is \&. Weird! + +Tue Jul 30 10:03:56 1991 James Clark (jjc at jclark) + + * groff.c (run_commands): Don't use non-zero exit code because a + command gets SIGPIPE. + + * groff.c, groff.sh: Use -mXps with -TXps. + + * ps/ps.c (ps_printer::special): Move call to flush_sbuf() into... + (ps_printer::do_exec, ps_printer::do_file, ps_printer::do_def, + ps_printer::do_mdef, ps_printer::do_import): Call flush_sbuf(). + (ps_printer::special): New specials invis and endinvis. + (ps_printer::do_invis, ps_printer::do_endinvis): New functions. + (ps_printer::set_char, ps_printer::draw): Return if invis_count>0. + (ps_printer::end_page): Check that invis_count == 0. + (ps_printer::invis_count): New member. + (ps_printer::ps_printer): Initialize invis_count to 0. + + * troff/env.c (environment::hyphenate_line): Hyphenation + indicator at beginning of word inhibits splitting after -, \(em + etc. + + * pic/pic.y (element): Allow another element to follow } without + any intervening separator. + +Mon Jul 22 12:27:37 1991 James Clark (jjc at jclark) + + * pic/lex.c (get_delimited): Allow tabs before delimiter. + +Wed Jul 17 10:59:08 1991 James Clark (jjc at jclark) + + * groff.c: Get rid of HAVE_UNION_WAIT stuff. Instead suppress + declaration of wait() in header files. + * Makefile: Get rid of -DHAVE_UNION_WAIT. + + * tbl/table.c (alphabetic_text_entry::add_tab): New function. + + * lib/lib.h: Declare return type of strerror as char *. + + * man/Makefile: Add g flag to sed substitutions. + * Makefile (shgroff, bindist): Likewise. + +Sun Jul 14 11:57:02 1991 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::do_import): Move push of userdict into... + * ps/devps/prologue (PBEGIN): Define showpage after pushing + userdict. + +Sat Jul 13 20:53:04 1991 James Clark (jjc at jclark) + + * ps/devps/prologue (PBEGIN): Zap any definition of showpage in + userdict. + +Fri Jul 12 07:10:09 1991 James Clark (jjc at jclark) + + * man/mdate.sh: Handle the fact that BSD ls -l does not print the + group. + +Sun Jul 7 08:00:23 1991 James Clark (jjc at jclark) + + * troff/input.c (define_number_reg): If currently undefined, + don't define it if the argument is an invalid expression. + + * Makefile: Ignore return value of `if' commands without `else' + parts. + + * Makefile: Split up CPPDEFINES into a series of separate + configuration options. + + * troff/input.c (init_registers): Use time_t instead of long + unless LONG_FOR_TIME_T is defined. Use returned result rather + than passing pointer. + * Makefile: Document LONG_FOR_TIME_T as a CPPDEFINE. + + * lib/Makefile (fontpath.h): Use gendef. + +Thu Jul 4 09:48:05 1991 James Clark (jjc at jclark) + + * troff/input.c (input_iterator::shift): Delete argument name. + * troff/node.c (suppress_output_file::really_begin_page, + suppress_output_file::really_transparent_char, node::ascii_print, + node::tprint): Delete names of unused arguments. + +Wed Jul 3 17:34:57 1991 James Clark (jjc at jclark) + + * refer/label.y (string): Pass $4 to command_error. + +Tue Jul 2 15:06:01 1991 James Clark (jjc at jclark) + + * Version 1.03 released. + +Sat Jun 29 08:14:01 1991 James Clark (jjc at jclark) + + * Makefile: Pass definition of SHELL in SUBFLAGS. + + * gendef: New file. + * Makefile, eqn/Makefile, refer/Makefile, troff/Makefile, + ps/Makefile: Use gendef to construct header files that are + constructed from the Makefile. + + * macros/Makefile: make all should build stripped version of tmac.e. + + * refer/Makefile (clean): Remove y.output. + +Fri Jun 28 09:44:36 1991 James Clark (jjc at jclark) + + * ps/pfbtops.c (main): Add -v option which prints out a version + number. + * ps/Makefile (pfbtops): Link with libgroff.a. + +Fri Jun 21 07:43:23 1991 James Clark (jjc at jclark) + + * refer/search.h (linear_searcher::get_nkeys): Delete declaration. + * refer/linear.c (linear_searcher::get_nkeys): Delete definition. + + * refer/lkbib.c (main): Always terminate reference with blank + line. + * refer/lookbib.c (main): Likewise. + + * refer/linear.c (file_buffer::load): Check that the file is not a + binary file. + + * refer/Makefile (genlimits): Possibly add -DHAVE_SYS_DIR_H. + (genlimits.c): Include <sys/dir.h> if HAVE_SYS_DIR_H is defined. + Delete second inclusion of <sys/param.h>. + +Tue Jun 18 01:32:26 1991 James Clark (jjc at jclark) + + * troff/token.h (token::special): Deleted. + + * tbl/main.c (process_format): Rework so that opt->tab_char is + recognized only when appropriate. + + * ps/Makefile (clean): Remove pfbtops. + +Sun Jun 16 09:37:19 1991 James Clark (jjc at jclark) + + * lib/font.c (text_file::next): Don't return if we have got a + blank line. + +Fri Jun 14 09:52:26 1991 James Clark (jjc at jclark) + + * refer/refer.c (store_reference): Get hash code from old_table[i] + when rehashing the table. + +Thu Jun 13 01:26:43 1991 James Clark (jjc at jclark) + + * eqn/box.c (box::top_level): Save size and prev size using \R and + restore it afterwards. Set the size to the size at the beginning + of the line. + * eqn/pbox.h: Declare SAVED_INLINE_PREV_SIZE_REG, + SAVED_INLINE_SIZE_REG, and SAVED_SIZE_REG. + + * refer/Makefile (limits.h): Use ./genlimits. + +Wed Jun 12 16:05:34 1991 James Clark (jjc at jclark) + + * refer/index.c: Delete declarations of stat() and fstat(). + +Tue Jun 11 14:52:49 1991 James Clark (jjc at jclark) + + * tty/tmac.tty: Add character definitions for \(>= and \(<=. + +Mon Jun 10 22:49:48 1991 James Clark (jjc at jclark) + + * etc/grog.sh, etc/grog.pl: Change regex for .PS. + +Fri Jun 7 09:13:06 1991 James Clark (jjc at jclark) + + * troff/input.c (token::get_char): Handle \e. + + * refer/linear.c: Delete declarations of fstat() and stat(). + +Wed Jun 5 09:11:59 1991 James Clark (jjc at jclark) + + * troff/node.c, troff/env.c, troff/input.c, Makefile: Remove + OP_DELETE_BROKEN stuff, since we now have a fix for g++. + +Mon Jun 3 13:41:32 1991 James Clark (jjc at jclark) + + * troff/input.c (do_define_macro): Improve error handling for end + of file while defining macro. + +Sun Jun 2 10:20:24 1991 James Clark (jjc at jclark) + + * eqn/box.h: Fix declaration of set_gsize. + * eqn/box.c (set_gsize): Make argument const char *. + (gsize): Declare as char *. + * eqn/main.c (main): Don't convert gsize to int. + * eqn/lex.c (do_gsize): Pass char * to set_gsize. + + * Version 1.02 released. + +Sat Jun 1 12:19:46 1991 James Clark (jjc at jclark) + + * macros/tmac.andoc: New file. + * macros/Makefile: Install tmac.andoc. + + * troff/node.c, troff/env.c, troff/input.c: Conditionalize use of + operator new and delete on OP_DELETE_BROKEN not being defined. + * Makefile: Mention OP_DELETE_BROKEN. + +Mon May 27 13:49:07 1991 James Clark (jjc at jclark) + + * Makefile (bindist): Pass SUBFLAGS. + +Sun May 26 14:13:22 1991 James Clark (jjc at jclark) + + * Makefile, groff.c: Pass definitions to groff.c via device.h. + + * tty/tty.c (tty_font::load_tty_font): Avoid shadowing + parameter. + + * ps/Makefile, ps.c: Pass BROKEN_SPOOLER_FLAGS via broken.h. + + * ps/ps.h, ps/psrm.c: Make comment_table and + header_comment_table local to resource_manager::process_file. + + * groff.sh: With -TXps pass -printCommand option to gxditview. + + * groff.c (possible_command::print): Implement using + append_arg_to_string. + + * xditview: Merge in new implementation with own ChangeLog. + +Sat May 25 18:33:20 1991 James Clark (jjc at jclark) + + * groff.c (main): Implement PRINT_OPTION. + (append_arg_to_string): New command. + (device_table): Set PRINT_OPTION flag for Xps. + +Fri May 24 09:48:58 1991 James Clark (jjc at jclark) + + * troff/groff.h: Rename to troff.h. + + * pic/lex.c (lookup_keyword, docmp): New functions. + (get_token): Use new lookup_keyword. + Don't include key.h. + * pic/key.[ch], pic/pic.gperf: Deleted. + * pic/Makefile: Remove gperf stuff. + + * pic/Makefile, pic/output.h: Move definition of TEX_SUPPORT + into output.h. + * pic/tex.c: Move include of pic.h before test of TEX_SUPPORT. + + * troff/Makefile, troff/node.c: Move definition of + STORE_WIDTH into node.c. + + * etc/grog.pl, etc/grog.sh: Support -mdoc. + +Thu May 23 12:30:49 1991 James Clark (jjc at jclark) + + * dvi/devdvi/texr.map, dvi.devdvi/texi.map, + dvi/devdvi/texb.map: Add lq and rq. + dvi/devdvi: Regenerate fonts. + * ps/devps/textmap: Add lq and rq. + * ps/devps: Regenerate fonts. + * tty/devascii/R.proto, tty/devlatin1/R.proto: Add lq and rq. + * macros/tmac.e: Define \*(lq and \*(rq to be \(lq and \(rq. + + * pic/object.c (position_rectangle): When checking radius + cope with possiblity that width or height is negative. + (box_object::box_object): Have separate xrad and yrad with + signs matching signs of dim components. + (box_object::{north,south}_{east,west}): Use xrad and yrad. + (box_object::print): With rounded boxes use absolute values + for dim and rad arguments. + + * lib/Makefile, lib/fontfile.o: Pass definition of FONTPATH + in fontpath.h. + + * eqn/Makefile, eqn/main.c: Pass definition of DEVICE in device.h. + + * various files: Add explicit destructors to keep Saber CC +d + happy. + +Wed May 22 11:37:11 1991 James Clark (jjc at jclark) + + * eqn/box.c (box::top_level): Restore fonts correctly after + font changes in line containing inline equation. Also + restore previous font as well as current font. + * eqn/pbox.h: Define necessary string and register names. + + * troff/input.c (token::next): Case 'R' calls do_register. + (do_register): New function. + +Tue May 21 11:28:23 1991 James Clark (jjc at jclark) + + * groff.c, groff.sh: Support Xps device. Allow each device + to have a pseudo_name and a real_name. + + * groff.c (run_commands): Don't print `Broken pipe' messages. + + * ps/pfbtops.c: New file. + * ps/Makefile: Add pfbtops. + + * troff/number.c (parse_term): Improved error message. + +Mon May 20 11:22:14 1991 James Clark (jjc at jclark) + + * groff.c, groff.sh, etc/grog.sh, etc/grog.pl: Support grefer. + + * Makefile: Integrate refer. + * refer: New directory. + * man/grefer.man, man/glookbib.man, man/gindxbib.man, + man/lkbib.man: New files. + * man/Makefile: Support refer man pages. + + * lib/lib.h: Declare is_prime. + * lib/prime.c: New file. + + * troff/input.c (macro_source): New function. + (init_input_requests): Bind "mso" to macro_source. + + * troff/env.c (environment::possibly_break_line): Maintain + pointer to pointer to node to be split in ndp so as to avoid + using address of freed node. + + * troff/env.c (environment::hyphenate_line): Maintain pointer to + pointer to first node to be hyphenated in startp so as to + avoid using address of freed node. + + * troff/env.c (class trie, class hyphen_trie): Make the + elements of the trie be of type char not unsigned char. + Declare arguments to be const char* instead of unsigned char *. + + * troff/env.c (hyphenate): Initialize hbuf[0]. + + * troff/input.c (set_string): Declare p to be char * and cast + *p to unsigned char when necessary. + + * troff/input.c (do_define_macro): Declare s to be const + char*. Cast element to unisgned char when necessary, Declare + d to be an int. Handle EOF better. + + * troff/Makefile, troff/input.c: Different scheme for passing + definitions of MACROPATH, HYPHENFILE and DEVICE. + +Tue May 14 13:41:36 1991 James Clark (jjc at jclark) + + * tty/devascii/R.proto: Delete entry for em. + * tty/devlatin1/R.proto: Likewise. + +Sat May 11 11:13:28 1991 James Clark (jjc at jclark) + + * troff/input.c (translate): Stop when we get a space. Treat eof + like newline. + + * macros/tmac.an (IP): Only pass quoted argument to TP when \n(.$>1. + +Wed Apr 24 19:24:33 1991 James Clark (jjc at jclark) + + * tbl/main.c (process_format): A font name following a `f' + modifier that starts with a digit can be only one character long. + Also deal with EOF on the second character of the font name. + +Wed Apr 17 11:23:43 1991 James Clark (jjc at jclark) + + * troff/input.c (token::next): Turn \~ into an + unbreakable_space_node. + * troff/node.c (unbreakable_space_node): New class. + * troff/node.h: Declare it. + +Tue Apr 16 10:47:12 1991 James Clark (jjc at jclark) + + * dvi/dvi.c (dvi_printer::set_char): Make code an int. Check that + it's >= 0, before outputting it as a single byte. + +Mon Apr 15 11:20:23 1991 James Clark (jjc at jclark) + + * lib/font.c: Make font_char_metric::code an int. + (font::get_code): Change return type to int. + (font::load): Allow code to be arbitrary integer. + * lib/font.h (font::get_code): Change return type to int. + (font::number_to_index): Change argument type to int. + * troff/input.c (token::next): In case 'N', allow any value. + Store value in token::val. + (token::operator==): For TOKEN_NUMBERED_CHAR test equality of val. + (token::get_char, token::add_to_node_list, token::process): Get + number from val. + (charinfo::set_number): Change argument to int. + (charinfo::get_number): Require that NUMBERED flag be set. + (get_charinfo_by_number): Store numbered characters not between 0 + and 255 in a dictionary. + * troff/charinfo.h (get_charinfo_by_number): Change argument type + to int. + (charinfo::number): Change type to int. + (charinfo::set_number): Change type of set_number to int. + * troff/node.c (troff_output_file::put_char_width, + troff_output_file::put_char): Test whether character is numbered + using charinfo::numbered(). + * driver/printer.c (printer::set_numbered_char): Allow arbitrary + values of num. + * lib/nametoindex.c: New implementation to cope with arbitrary + number characters. + + * troff/input.c (token::operator==): Test val for + TOKEN_CHAR_HEIGHT, TOKEN_CHAR_SLANT, TOKEN_FONT_POSITION, and + TOKEN_SIZE. + + * man/Makefile: Add definiton of BROKEN_SPOOLER_FLAGS. + (.man.n): sed out @BROKEN_SPOOLER_FLAGS@. + +Sun Apr 14 12:57:00 1991 James Clark (jjc at jclark) + + * ps/devps/zapfdr.ps: Don't copy UniqueID. Avoid use of newdict + variable. + + * all Makefiles: rm targets of cp and >. + + * xditview/xtotroff.c (MapFont): Unlink troff_name before opening + it. + + * eqn/lex.c (def_table): Add dollar. + +Sat Apr 13 13:02:44 1991 James Clark (jjc at jclark) + + * troff/input.c (do_width): Push back newline before closing delim + like do_bracket. + +Fri Apr 12 15:16:03 1991 James Clark (jjc at jclark) + + * groff.c (possible_command::prepend_arg): New function. + (main): Prepend device -m option. + * groff.sh: Put device -m options before command-line options. + +Tue Apr 9 10:24:43 1991 James Clark (jjc at jclark) + + * macros/tmac.an (IP): Quote argument to TP. + + * ps/ps.c (main): New option -b, which sets... + (broken_flags): New variable. + (ps_printer::~ps_printer): Incorporate the setup section in the + prolog if (broken_flags & NO_SETUP_SECTION). + (ps_printer::begin_page): Generate {Begin,End}PageSetup comments. + (ps_printer::merge_download_fonts, ps_printer::merge_import_fonts, + ps_printer::merge_ps_fonts, ps_printer::print_font_comment, + ps_printer::print_needed_font_comment, + ps_printer::print_supplied_font_comment, + ps_printer::print_include_font_comments, + ps_printer::lookup_doc_font, ps_printer::download_fonts, + ps_printer::read_download_file, read_document_fonts, add_font, + skip_line, parse_fonts_arg, document_font::document_font, + document_font::~document_font, document_font::download, + ps_output::include_file): Deleted. + (ps_printer::~ps_printer): Generate %%EOF. Generate %!PS-Adobe-3.0 + rather than %!PS-Adobe-2.0. Make calls to + resource_manager::need_font for each font that we used. Replace + calls to merge_ps_fonts, merge_download_fonts, print_font_comment, + print_supplied_font_comment, print_needed_font_comment by call to + resource_manager::print_header_comments. Output %%Orientation + comment. Output %%Requirements: numcopies comment if ncopies > 1. + Don't output the prolog directly. Instead call + resource_manager::output_prolog. Only define #copies when ncopies + > 1. Delete calls to print_include_font_comments and + download_fonts. Add call to resource_manager::document_setup. + (ps_printer::do_file): Call resource_manager::import_file instead + of including it ourselves. + (ps_printer::do_import): Likewise. Also don't call + merge_import_fonts. Push userdict on the dictionary stack before + and pop it afterwards. + Move declaration of ps_output into ps.h. + * ps/psrm.c: New file implementing resource_manager class. + * ps/ps.h: New file declaring ps_output and resource_manager + classes. + * ps/devps/zapfdr.ps: + * ps/devps/symbolsl.ps: + * ps/devps/prologue: Use 3.0 conventions. + * ps/Makefile: Pass definition of BROKEN_SPOOLER_FLAGS in DEFINES. + Add default definition of BROKEN_SPOOLER_FLAGS. + * Makefile: New variable BROKEN_SPOOLER_FLAGS. Add + BROKEN_SPOOLER_FLAGS to SUBFLAGS. + +Mon Apr 8 09:26:54 1991 James Clark (jjc at jclark) + + * etc/grog.pl: New file. + * Makefile (GROG): New variable. + Add GROG to SUBFLAGS. + * etc/Makefile (GROG): New variable. + (install.nobin): Install $(GROG) rather than grog.sh. + +Thu Apr 4 11:36:45 1991 James Clark (jjc at jclark) + + * eqn/special.c (special_box::compute_metrics): Make the input and + output strings the same. Get the new height and depth from the + predefined height and depth registers. Also make subscript kern + and skew available. + (special_box::compute_subscript_kern, special_box::compute_skew): + New functions. + + * eqn/box.c (pointer_box::compute_skew, + simple_box::compute_metrics, box::top_level) + * eqn/text.c (prime_box::compute_metrics, + prime_box::comput_subscript_kern) + * eqn/limit.c (limit_box::compute_metrics): + * eqn/delim.c (build_extensible, delim_box::compute_metrics): + * eqn/sqrt.c (sqrt_box::compute_metrics): Protect possibly + negative numbers in `nr' requests with a leading 0. + +Wed Apr 3 15:58:23 1991 James Clark (jjc at jclark) + + * eqn/special.c: New file. + * eqn/eqn.y: Declare token SPECIAL. Make it right associative. + Add new rule for simple. + * eqn/lex.c (token_table): Add SPECIAL. + * eqn/box.h: Declare make_special_box. + * eqn/Makefile: Add special.[co]. + +Sat Mar 30 10:57:53 1991 James Clark (jjc at jclark) + + * ps/devps/prologue: Possibly set packing to true while defining. + Create grops dictionary here. Initialize local variables before + defining procedures. + (PICTURE): Rename to PBEGIN. Also do save, noop showpage, count + the dictionary stack. Set strokeadjust and overprint to false if + the relevant operators are defined. + (PEND): New procedure. + * ps/ps.c (ps_printer::~ps_printer): In the prolog just include + prologue. Do everything else in the setup section. + (ps_printer::do_import): Just call PBEGIN and PEND around the + picture. Also push userdict before, and pop it afterwards. + +Wed Mar 27 07:59:50 1991 James Clark (jjc at jclark) + + * troff/node.c (bracket_node::tprint): Brackets were being printed + 1m too low. + + * macros/tmac.an (SH, SS): Set fill mode. + +Tue Mar 26 07:46:31 1991 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::begin_page): Set + high_water_mark to 0. + +Fri Mar 22 09:19:46 1991 James Clark (jjc at jclark) + + * man/mdate.sh: New file. + * man/mdate.c: Deleted. + * man/Makefile: Use mdate.sh instead of mdate. + (mdate): Deleted. + + * eqn/lex.c (do_gsize): Supply missing argument to error message. + +Tue Mar 19 11:06:50 1991 James Clark (jjc at jclark) + + * man/mdate.c: New file. + * man/*.man: Replace modification date by @MDATE@. + * man/Makefile (.man.n): Replace @MDATE@ by `mdate $<`. + (mdate): New target. + + * lib/font.c (text_file::next): Deal with arbitrarily long lines. + Remove illegal input characters. + +Mon Mar 18 08:32:25 1991 James Clark (jjc at jclark) + + * macros/tmac.s (pg*start-col): Do .ns *after* running the hooks. + +Sat Mar 16 03:52:25 1991 James Clark (jjc at jclark) + + * troff/div.c (begin_page): Change behaviour when + !first_page_begun and !break_flag. + + * troff/input.c (do_name_test): Return 0 if argument is empty. + + * troff/input.c (read_long_escape_name): Require closing ] to be + at same input level as opening [. + + * troff/input.c (read_increment_and_escape_name): New function. + (get_copy, process_input_stack): Use this for \n. + +Fri Mar 15 00:31:48 1991 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::begin_page): Ignore the + current value of page_number if !first_page_begun. + + * groff.c (main): Fix declaration of buf. + + * troff/input.c (do_name_test): New function. + (token::next): Implement \A. + (token::next): Implement \e by turning it into a TOKEN_ESCAPE. + (token::description, token::add_to_node_list, token::process): + Handle TOKEN_ESCAPE. + * troff/token.h: New token TOKEN_ESCAPE. + +Thu Mar 14 10:22:26 1991 James Clark (jjc at jclark) + + * pic/main.c (do_picture): Allow space before and after filename + following `<'. Check that the filename is not empty. + +Wed Mar 13 12:49:40 1991 James Clark (jjc at jclark) + + * Version 1.01 released. + + * dvi/devdvi/CompileFonts: Add cm*ss10 fonts. + + * dvi/tmac.dvi: ftr HR to H. + + * macros/tmac.e: Round up computation of $r. + + * xditview/tmac.X: Don't give up completely in compatibility mode. + Use \n(.s instead of \n[.s]. + + * dvi/tmac.dvi: Don't give up completely in compatibility mode. + Use \(ci instead of \[ci]. Use \n(.s instead of \n[.s]. + Add u to factors inside \s[...]. Rename frac to dvi-frac. + Translate \(FM onto \[prime] and \(!/ onto \[slashnot]; use these + short names in the char definitions. + + * ps/tmac.ps: Don't give up completely in compatibility mode. + Fix the fraction definitions to use \n(.s and \(f/. Add an extra + quote in front of \n(.s. Add u to factors inside \s[...]. + +Mon Mar 11 12:01:20 1991 James Clark (jjc at jclark) + + * tty/tmac.tty: Call the nroff request. + + * macros/tmac.e ((x, )x): Better definitions that work properly + in a diversion. + (@0, @1): Helper macros for (x. + + * macros/tmac.e ($s, hl): Use \l rather than \D. + + * tty/tmac.tty: Make it work better in compatibility mode. + (pchar): Rename to tty-char. + + * macros/tmac.e (@E): New macro. + (r, i, b, rb, bi): Use @E. + + * macros/tmac.e (@F): Don't use (;...) syntax. + + * macros/tmac.e: Remove mention of \*(||/revisions. Mention that + it was modified for groff. + + * macros/tmac.e: Make sure \n(ps and \n(es are >= \n(.V. + + * macros/tmac.e (<., .>): Removed. + ([., .]): If \n(.V>=1v, use [] instead of superscripting. + + * macros/tmac.e: Remove check that groff is being used. + + * macros/tmac.e (@C): Change families only if using groff; turn + compatibility mode off while changing familes. Save compatibility + mode before changing families and restore it afterwards. + + * macros/tmac.e (@h): Remove test for offset + line length. + + * macros/tmac.e (sorry): Rename to @S. Use \$1 instead of \$0 + (lo, th, ac): Define to call @S instead of using als. + + * macros/tmac.e: Make $r and $R now contain \n(.v*100/\n(.sp, ie + the ratio of the vertical spacing to the point size in units + expressed as a percentage. Use these instead of $10r and $10R, + Delete $10r and $10R. + + * lib/font.c (font::load): In default computation of space_width, + divide by sizescale. Use scale_round. + + * macros/tmac.an (TP): Don't call `nf'. + (an-do-tag): Don't call `fi'. + +Sun Mar 10 09:52:35 1991 James Clark (jjc at jclark) + + * troff/input.c (process_input_stack): Handle the case where + spaces at the beginning of an input line are followed by a + newline. + +Thu Mar 7 20:18:07 1991 James Clark (jjc at jclark) + + * groff.c (device_table): Add PIC_X_OPTION for dvi device. + * groff.sh: Use pic -x with the dvi device. + + * dvi/devdvi/FontMakefile (H): Don't use -s. + + * dvi/devdvi/HI, dvi/devdvi/HB: New files. + * dvi/devdvi/Makefile: Add HI and HB to FONTS. + * dvi/devdvi/FontMakefile: Add rules for HI and HB. Include these + in FONTS. + +Mon Mar 4 13:20:14 1991 James Clark (jjc at jclark) + + * ps/psfig.diff: New file. + * ps/tmac.psfig: New file. + +Sat Mar 2 00:15:09 1991 James Clark (jjc at jclark) + + * macros/tmac.s (]=, ref*do-tl, ref*bib-print): Deleted. + (]-): Don't call ref*do-tl. + + * macros/tmac.s (ref*end-print): Use XP if [F not defined. + + * macros/tmac.s (ref*normal-print): Call FS rather than fn@do-FS. + (fn@do-FS): Rename to fn*do-FS. + + * troff/input.c (transparent_translate): New function. + (process_input_stack): Apply transparent_translate before calling + diversion::transparent_output(unsigned char). + +Wed Feb 27 00:13:25 1991 James Clark (jjc at jclark) + + * troff/input.c (do_define_macro): Define the macro before calling + skip_line. + + * xditview/Makefile: Add DEVICES variable. Change install target + to use this. + +Tue Feb 26 10:46:22 1991 James Clark (jjc at jclark) + + * groff.c (run_commands): Handle the possibility that there are + child processes other than those forked by us. + +Sun Feb 24 21:32:30 1991 James Clark (jjc at jclark) + + * lib/string.c (string::append): New function. + * lib/stringclass.h: Declare it. + +Thu Feb 21 11:49:26 1991 James Clark (jjc at jclark) + + * eqn/main.c (main): New option -N which sets + no_newline_in_delim_flag. + (do_file): If no_newline_in_delim_flag is set don't allow newlines + in delimiters. + * groff.c (main): Pass -N on to eqn. + (help, synopsis): Mention -N. + * groff.sh: Implement -N. + +Wed Feb 20 15:16:10 1991 James Clark (jjc at jclark) + + * macros/tmac.s (]=, ref*bib-print, ref*do-tl): New macros. + (]-): Call ref*do-tl if ref*need-tl is non-zero. + (XP): Allow as initializer. + +Tue Feb 19 14:09:06 1991 James Clark (jjc at jclark) + + * troff/env.c (environment::wrap_up_field): If field_spaces are + non-zero and we have a current_tab, subtract padding from + tab_distance. If this makes tab_distance <= 0, use the next tab + stop instead. If there isn't any next tab or it's a left tab, + wrap up the current tab. + (environment::start_field): Initialize tab_precedes_field. + (environment::wrap_up_tab): If there's a current field, update + pre_field_width, field_distance and tab_precedes_field. + * troff/env.h (environment::tab_precedes_field): New member. + +Fri Feb 15 01:24:00 1991 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::do_file): New function. + (ps_printer::special): Bind to `file' special. + (ps_printer::do_exec): Set ndefined_styles to 0. + +Sat Feb 9 03:03:04 1991 James Clark (jjc at jclark) + + * eqn/text.c (split_text): Grok \* and similar escapes sequences. + Avoid stripping first character from the start of unrecognized + escapes. Use lex_error instead of error to report errors. + * eqn/lex.c (get_token): Rework handling of escapes. + (lex_error): Move declaration into... + * eqn/eqn.h. + + * xditview/xditview.c (main): Make -page option work. + + * Makefile: Correct comment about -DBROKEN_SPOOLER and pageview. + +Wed Feb 6 12:28:43 1991 James Clark (jjc at jclark) + + * macros/tmac.s (B2): Correct size of box. + +Tue Feb 5 00:37:35 1991 James Clark (jjc at jclark) + + * macros/tmac.s (B2): Postpone drawing the box until in the + top-level diversion. + + * tty/tmac.tty: Add font translations for C, CR, CW. + + * groff.c (synopsis, help): Document -i. + * groff.sh: Implement -i. + + * macros/tmac.s (@NH): Put a `.' after multi-part numbers. + Simplify the construction of SN. + + * troff/number.c (parse_term): Give `|' a higher precedence. + * tbl/table.c (numeric_text_entry::simple_print): Parenthesise + accordingly. + + * macros/tmac.s (B2): Use par@finish instead of par@reset. + +Mon Feb 4 12:36:09 1991 James Clark (jjc at jclark) + + * lib/string.c (string::move): New function. + * lib/stringclass.h: Declare it. + +Sat Feb 2 16:02:16 1991 James Clark (jjc at jclark) + + * troff/env.c (distribute_space): Add optional argument + `force_forward'. + (environment::wrap_up_field): Call distribute_space with + `force_forward' argument of 1. + +Fri Feb 1 19:36:33 1991 James Clark (jjc at jclark) + + * lib/string.c, lib/stringclass.h (string::operator+=(char)): + Inline it. Move reallocation into... + (string::grow1): New function. + * pic/Makefile, tbl/Makefile, eqn/Makefile, ps/Makefile: Redo + dependencies to include library header files. + * lib/Makefile: Make string.c and lf.c depend on stringclass.h. + +Thu Jan 31 15:02:27 1991 James Clark (jjc at jclark) + + * macros/tmac.s (@NH): Use the same number registers than -ms does + for the heading level counters. Use the same string that -ms does + for the number for this heading. + +Wed Jan 30 14:25:40 1991 James Clark (jjc at jclark) + + * lib/new.c (operator new): Cast result of malloc to char *. + + * troff/input.c (spring_trap, lookup_request): Add assert that nm + is not null. + +Tue Jan 29 18:08:05 1991 James Clark (jjc at jclark) + + * groff.c (main): Support -i. + +Sun Jan 27 13:23:17 1991 James Clark (jjc at jclark) + + * pic/pic.h: Include <osfcn.h>. + + * ps/ps.c: Add declaration of mktemp. + + * Makefile: Add -DHAVE_UNION_WAIT option for CPPDEFINES. + * groff.c: If HAVE_UNION_WAIT is defined, declare wait()'s + argument as union wait *. + (run_commands): If HAVE_UNION_WAIT is defined cast wait()'s + argument to union wait *. + +Sat Jan 26 12:04:52 1991 James Clark (jjc at jclark) + + * tty/tmac.tty: Add definition of \(co. + + * pic/object.c (make_arc): Only increase radius when radius + strictly less than d. + (arc_object::update_bounding_box): May need to add 4.0 to end_quad + more than once. + + * troff/env.c (environment::environment(symbol), + environment::environment(const environment *)): Initialize + input_trap_count. + +Sat Jan 19 08:18:35 1991 James Clark (jjc at jclark) + + * tbl/main.c (main): Add exit(0). + + * ps/ps.c (ps_printer::~ps_printer): Use fseek instead of rewind. + + * pic/main.c (main): + * eqn/main.c (main): + * tbl/main.c (main): + * etc/soelim.c (main): + * driver/printer.c (printer::~printer): + * troff/node.c (real_output_file::~real_output_file, + real_output_file::flush): Check for errors on stdout. + + * most files: Add 1991 to copyright notice. + + * macros/tmac.s: Don't test \n(.x and \n(.y. + + * troff/input.c (token::next): Rename `escape_char' label to + `handle_escape_char' and `normal_char' label to + `handle_normal_char'. + +Thu Jan 17 15:46:35 1991 James Clark (jjc at jclark) + + * groff.c (main, synopsis, help): Support -a option. + * groff.sh: Likewise. Also eliminate Zflag variable by adding -z + to trflags while parsing options. + +Tue Jan 15 13:07:27 1991 James Clark (jjc at jclark) + + * troff/number.c (parse_term): With `m', `M' and `n' scale + indicators, convert scale factor to hunits before scaling. + +Mon Jan 14 12:39:12 1991 James Clark (jjc at jclark) + + * lib/font.c (scale_round): Better test for overflow when n is + negative. + +Thu Jan 10 11:10:56 1991 James Clark (jjc at jclark) + + * tbl/main.c (process_format): Add second argument of type + options*. Change callers. Allow opt->tab_char as well as '\t' + between format items. + +Mon Jan 7 12:30:18 1991 James Clark (jjc at jclark) + + * macros/tmac.an (PD): With no arguments, make sure register PD is + at least \n[.V]. + (TH): Call PD with no argument, instead of setting register PD + directly. + +Sun Jan 6 11:18:39 1991 James Clark (jjc at jclark) + + * Version 1.00 released. + +Sat Jan 5 08:44:30 1991 James Clark (jjc at jclark) + + * ps/tmac.ps, xditview/tmac.X: Add font translation of C to CR. + + * dvi/devdvi/DESC: Mount CW instead of CR. + + * dvi/tmac.dvi: Add definition of \(tm. + + * dvi/devdvi/texsy.map: Add lh, and rh. + * dvi/devdvi/texex.map: Add lt, rt, lb, rb, lk, rk. + * dvi/devdvi/texmi.map: Add *o. Regenerate fonts. + + * dvi/devdvi/FontMakefile: Generate H from cmss10. + * dvi/devdvi/Makefile: Install H. + * dvi/devdvi/H: New file. + +Fri Jan 4 15:04:57 1991 James Clark (jjc at jclark) + + * troff/env.c (vertical_spacing): Don't allow vertical spacing to + be 0. + +Thu Jan 3 13:41:19 1991 James Clark (jjc at jclark) + + * macros/tmac.s (@EN): Add \n(.V to the argument to ds@need. + + * macros/tmac.pic (PS): Avoid attempting to set negative indent. + + * macros/tmac.s (@EN): Handle the case where the equation is empty + but the label is not. + +Wed Jan 2 10:31:44 1991 James Clark (jjc at jclark) + + * troff/groff.h: New warning category WARN_SPACE. + * troff/input.c: Add WARN_SPACE to DEFAULT_WARNING_MASK. Add + WARN_SPACE to warning_table. + (interpolate_macro): Give a warning of type WARN_SPACE if the name + is longer than two characters and is not defined, but the first + two characters do make a defined name. + + * PROBLEMS: New file. + + * CHANGES: New file. + * README-0.6, README-1.00: Deleted. + + * groff.c, groff.sh: Add X75-12 and X100-12 devices. + * xditview/devX75/Makefile: Make devX75-12. + * xditview/devX100/Makefile: Make devX100-12. + + * xditview/devX100/eqnchar, xditview/devX75/eqnchar, + dvi/devdvi/eqnchar, ps/devps/eqnchar: Remove use of \R. + +Tue Jan 1 19:24:01 1991 James Clark (jjc at jclark) + + * README-0.7: Rename to README-1.00. + + * macros/tmac.pic: New file. + * macros/Makefile (install.nobin): Install tmac.pic. + +Mon Dec 31 10:40:53 1990 James Clark (jjc at jclark) + + * troff/env.c (hyphen_word): Correct the test for whether the + token is a hyphen. Reset npos to 0. + + * macros/tmac.s (par@sup-start, par@sup-end): New implementations. + +Sun Dec 30 15:53:13 1990 James Clark (jjc at jclark) + + * macros/tmac.s (ds*common-end): Call par*reset. + (PE): Likewise. + (par@reset-indent): Deleted. + + * macros/tmac.s (@IP): Divert the label. + +Sat Dec 29 14:33:32 1990 James Clark (jjc at jclark) + + * xditview/draw.c (setGC): Use a line width of .1m rather than + .04m by default; round rather than truncate value. + + * tbl/table.c (class empty_entry): New class. + (empty_entry::empty_entry, empty_entry::line_type): New functions. + (table::add_entry): Represent empty entries by objects of type + empty_entry. + (table_entry::line_type): Return -1. + (table::determine_row_type): Ignore entries with line_type 0. + Treat type -1 as non-lines. + +Fri Dec 28 15:04:41 1990 James Clark (jjc at jclark) + + * ps/devps/textmap, xditview/libXdvi/DviChar.c, tty/devlatin1/R.proto, + macros/tmac.s: Rename \(-d to \(Sd. + +Thu Dec 27 12:35:47 1990 James Clark (jjc at jclark) + + * ps/devps/textmap: Add `sd', `/_' and `3d' characters. + * xditview/libXdvi/DviChar.c: Likewise. + * dvi/devdvi/texsy.map: Add `<<', `>>'. + +Wed Dec 26 13:33:23 1990 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::begin_page): Call + init_output() if the_output is 0. + +Sat Dec 22 12:35:29 1990 James Clark (jjc at jclark) + + * troff/input.c: Replace ESCAPE_E by ESCAPE_e and ESCAPE_C by + ESCAPE_c. + (get_copy): Turn \E into ESCAPE_E. + (token::process, asciify): Handle ESCAPE_E. + + * macros/tmac.s (ds*common-end, par@reset): Add `.rj 0'. + (RD): New macro. + (DS): Implement `.DS R'. + +Fri Dec 21 11:41:53 1990 James Clark (jjc at jclark) + + * macros/tmac.s (FS): New macro. + + * macros/tmac.s (fn@do-FS): Use @LP instead of LP. + + * macros/tmac.s (cov*tl-init): Remove after first execution + instead of aliasing to @nop. Call top of page macro explicitly + instead of setting trap; call @init first. Set pg@top as top of + page macro. + (cov*auto-init): Deleted. Set cov*tl-init instead of + cov*auto-init as top of page trap. + (TL, LP): Do a break instead of calling cov*tl-init. + (cov*print): With RP format but no TL, alias FS and FE to @FS and + @FE; in this case also give a warning and always start another + page. No need to set pg@top here. + (cov*tl-init): Rename to cov*first-page-init. + + * macros/tmac.s (RP): Do `.pn 0'. + (cov*tl-init): With RP format don't do `.pn 0'. + + * macros/tmac.s (pg@cs-top): Set no space mode. + + * macros/tmac.s (par@TL, par@AU, par@AI): New macros. + (cov*ab-init): Alias TL, AU and AI to these. + +Thu Dec 20 10:10:50 1990 James Clark (jjc at jclark) + + * macros/tmac.s (@EQ): Move the space before the equation into @EN + (@EN): Do nothing unless \n[dl] is > 0. + +Tue Dec 18 12:20:47 1990 James Clark (jjc at jclark) + + * pic/object.c (ellipse_object::radius): New function. + + * VERSION: Change version to 0.7. + + * tbl/table.c (block_entry::do_divert): Declare return type as + void. + (block_entry::divert, alphabetic_block_entry::divert): Return 1. + +Mon Dec 17 12:30:34 1990 James Clark (jjc at jclark) + + * troff/column.c: New file. + * troff/Makefile: Corresponding changes. + + * troff/hvunits.c (scale(vunits, vunits, vunits)): New function. + Friend of vunits. + + * troff/div.c (top_level_diversion::space): If the space causes + the first-page transition and springs a trap, truncate the space + to 0. + +Fri Dec 14 12:30:02 1990 James Clark (jjc at jclark) + + * ps/ps.c (ps_printer::do_import): Add a `clear' after including + the document. + + * pic/troff.c (troff_output::line_thickness, + troff_output::set_fill): Do a horizontal motion to compensate for + the width of the \D escape sequence. + +Thu Dec 13 10:17:14 1990 James Clark (jjc at jclark) + + * xditview/tmac.X: Reinstate definition of \(rn, but only for X100 + (not X75). + + * eqn/sqrt.c (sqrt_box::compute_metrics): Supply missing argument + to printf. + + * tbl/table.c (simple_entry::simply_print): Don't declare as pure. + Supply empty definition. + (text_entry::simple_print, simple_text_entry::simple_print): + Delete declarations. + (table::add_entry): Represent empty entries by objects of type + `simple_entry'. + +Wed Dec 12 08:50:48 1990 James Clark (jjc at jclark) + + * troff/Makefile: Remove -DHYPHEN_CONTROL from DEFINES. + + * tbl/table.c (left_text_entry::add_tab): New function. + + * macros/tmac.s: Make @RT an alias for par@reset. Make RT + initialize like LP. + +Mon Dec 10 11:19:55 1990 James Clark (jjc at jclark) + + * troff/env.c (environment::start_field): Give an error message if + there is no next tab. + +Sun Dec 9 11:46:40 1990 James Clark (jjc at jclark) + + * troff/env.c (hyphenate): Skip initial elements with zero + hyphenation code. + + * macros/tmac.s (par@init): Keep VS in points rather than units. + +Sat Dec 8 23:00:27 1990 James Clark (jjc at jclark) + + * pic/main.c (main): Implement `-c' option. + * pic/output.h: Declare make_tpic_output(). + * pic/tex.c (tex_output::set_pen_size): Make it virtual and + protected. + (tpic_output): New class. + (tpic_output::tpic_output, tpic_output::set_pen_size, + tpic_output::command, make_tpic_output): New functions. + +Fri Dec 7 11:57:41 1990 James Clark (jjc at jclark) + + * tbl/main.c (main): Call `.ab' if \n(.g is false. Define TS/TE + if they're not already defined. + * tbl/table.c (init_output): Don't test \n(.g. + + * troff/input.c (do_if_request): Delete `g' condition. Recognize + `d', `r' and `c' conditions even in compatibility mode. + +Tue Dec 4 09:13:47 1990 James Clark (jjc at jclark) + + * ps/tmac.ps (ps-bb): Protect against negative numbers in bounding + box. + +Mon Dec 3 07:18:26 1990 James Clark (jjc at jclark) + + * troff/env.h (environment::prev_line_interrupted): New member. + (environment::get_prev_line_interrupted): New function. + * troff/env.c (environment::newline): Set prev_line_interrupted. + (environment::environment(const environment *), + environment::environment(symbol)): Initialize + prev_line_interrupted. + * troff/input.c (process_input_stack): Don't give special + treatment to space and newline at the beginning of the line if the + previous line was interrupted. + +Sat Dec 1 15:48:37 1990 James Clark (jjc at jclark) + + * eqn/eqn.y: Disallow PRIME by itself. + * eqn/lex.c (token_table): Bind `opprime' instead of `prime' to + PRIME. + (def_table): Remove definition of '. Define prime to be `. + + * eqn/eqn.y: Split off part of rule `script' into a new rule + `nonsup'. + +Fri Nov 30 10:23:44 1990 James Clark (jjc at jclark) + + * macros/tmac.s ({, }): New string aliases. + +Thu Nov 29 11:34:40 1990 James Clark (jjc at jclark) + + * README-0.7: New file. + +Wed Nov 28 10:09:57 1990 James Clark (jjc at jclark) + + * macros/tmac.s: New file. + * man/groff_ms.man: New file. + * Makefile: Add definition of TMAC_S. Pass TMAC_S in SUBFLAGS. + * Makefile.bd: Similarily. + * man/Makefile: Add groff_ms.n to MAN7PAGES. Replace @TMAC_S@. Add + definition of TMAC_S. + * macros/Makefile: Add definition of TMAC_S. Install tmac.s. + * macros/TODO: New file. + +Sat Nov 24 20:04:54 1990 James Clark (jjc at jclark) + + * troff/env.c (right_justify): New function. + (init_env_requests): Bind this to request "rj". + (center_lines): Set right_justify_lines to 0. If we get a bad + integer, center 1 line. + (environment::environment(symbol), environment::environment(const + environment *)): Initialize right_justify_lines. + (environment::get_right_justify_lines): New function. + (init_env_requests): Bind this to number_register ".rj". + + * troff/env.c (environment::choose_breakpoint): Implement + hyphenation_margin and hyphenation_space. + (environment::get_hyphenation_space, + environment::get_hyphenation_margin): New functions. + (init_env_requests): Bind these to .hys and .hym. + (hyphenation_space_request, hyphenation_margin_request): New + functions + (init_env_requests): Bind these to hys and hym. + (environment::environment(symbol), environment::environment(const + environment *)): Initialize hyphenation_margin and + hyphenation_space. + * troff/env.h: Corresponding changes to class environment. + +Fri Nov 23 09:08:16 1990 James Clark (jjc at jclark) + + * troff/div.c (blank_line): Always do a break. + + * eqn/box.c (do_text): Turn off escapes while appending text to + string. + +Thu Nov 22 10:58:59 1990 James Clark (jjc at jclark) + + * troff/input.c (while_break_request, while_continue_request): New + functions. + (init_input_requests): Bind these to "break" and "continue". + (while_depth, while_break_flag): New variables. + (while_request): Update while_depth. Break out of loop if + while_break_flag is set. + +Wed Nov 21 10:54:40 1990 James Clark (jjc at jclark) + + * tbl/table.c (init_span_reg): Initialize span_width_reg to \n(.H + rather than 0. + +Mon Nov 19 00:45:03 1990 James Clark (jjc at jclark) + + * Makefile: Include -DBROKEN_SPOOLER by default. Expand comment. + + * stringify: New file. + * Makefile (groff.o): Use stringify. + + * xditview/tmac.X: Remove definition of \(rn. + * xditview/libXdvi/DviChar.c: Remove radicalex from + Adobe_symbol_map. + +Sat Nov 17 10:44:58 1990 James Clark (jjc at jclark) + + * tbl/table.c (table::add_entry): Allow alphabetic text blocks. + (alphabetic_block_entry::alphabetic_block_entry, + alphabetic_block_entry::divert, alphabetic_block_entry::print): + New functions. + (block_entry::divert): Split off body into ... + (block_entry::do_divert): If the block is alphabetic, subtract 2n + from the line length; also update the span width to dl+2n, and the + alphabetic span width to dl. + + * driver/input.c (do_file): While reading argument to D command, + when expanding buffer, multiply szp by sizeof(int) rather than 2 + in the argument to memcpy. + + * tbl/table.c (compute_span_width): Add 2n rather than 1n to the + width of alphabetic columns. + +Fri Nov 16 06:34:27 1990 James Clark (jjc at jclark) + + * troff/node.c (lookup_family): Supply second argument to lookup. + + * troff/dictionary.c (dictionary::lookup): After an unsuccesful + search, return immediately if v is 0. + + * pic/troff.c: Define EQN_NO_EXTRA_SPACE_REG. + (troff_output::start_picture): Set this reg. + (troff_output::end_picture): Remove this reg + * eqn/box.c (box::extra_space): Don't produce `\x's if + EQN_NO_EXTRA_SPACE_REG is defined. + + * eqn/eqn.y: Allow just a PRIME to be a `simple'. + * eqn/text.c (split_text): Map ' to \(fm when it's the first + character. + +Thu Nov 15 10:35:06 1990 James Clark (jjc at jclark) + + * macros/tmac.e: Use font 3 instead of B in $c. Remove `bd' + requests. + + * troff/div.c (top_level_diversion::top_level_diversion): + Initialize page_number to 0. + +Wed Nov 14 21:41:58 1990 James Clark (jjc at jclark) + + * groff/troff (environment::environment(const environment *)): + Initialize name to e->name, rather than "anonymous". + +Sat Nov 10 01:59:37 1990 James Clark (jjc at jclark) + + * xditview/libXdvi/Dvi.c (ShowDvi): If eof is encountered, reset + requested_page. Split middle part into ... + (FindPage): New function. + (SetValues): If we don't yet know the last page, and the requested + page is greater than the current page, call FindPage. + Update the font_map_string before doing this. + + * xditview/tmac.X: Add definitions of \(sq, \(ga, \(dg and \(dd. + Translate \(lh and \(rh into left and right double arrows. + + * troff/node.c (class hyphen_inhibitor_node): New class. + (hyphen_inhibitor_node::hyphen_inhibitor_node, + hyphen_inhibitor_node::copy, hyphen_inhibitor_node::same, + hyphen_inhibitor_node::type, + hyphen_inhibitor_node::get_hyphenation_type): New functions. + (node::add_discretionary_hyphen): Use hyphen_inhibitor_node rather + than dbreak_node(0, 0) to represent a `\%' at the beginning of a + word. + +Fri Nov 9 16:05:38 1990 James Clark (jjc at jclark) + + * troff/node.h (dummy_node::get_hyphenation_type, + transparent_dummy_node::get_hyphenation_type): Declare them. + * troff/node.c: (dummy_node::get_hyphenation_type, + transparent_dummy_node::get_hyphenation_type): New functions. + +Wed Nov 7 10:09:06 1990 James Clark (jjc at jclark) + + * xditview/libXdvi/draw.c: If M_PI not defined after including + math.h, then define it. + + * xditview/Makefile: Add definition of AR. Pass it to the submake + in libXdvi. + * xditview/libXdvi/Makefile: Add definitions of AR and RANLIB. + +Tue Nov 6 10:14:27 1990 James Clark (jjc at jclark) + + * troff/dictionary.h (object_dictionary::alias): Declare return + value as int. + * troff/dictionary.c (object_dictionary::alias): Return non-zero + if the old name was defined. + * troff/input.c (alias_macro): Give a warning if the old name was + not defined. + * troff/reg.c (alias_reg): Likewise. + +Mon Nov 5 00:31:39 1990 James Clark (jjc at jclark) + + * troff/input.c (token::next): Delete implementation of \R. + + * macros/Makefile: Strip comments from tmac.e while installing it. + + * troff/input.c: New variable `nroff_mode'. + (troff_request, nroff_request): New functions. + (init_input_requests): Bind `troff' and `nroff' to troff_request + and nroff_request. + (do_if_request): Compute results of t and n conditions from + nroff_mode. + + * text/text.c (split_text): Fix typo in >=. + + * eqn/lex.c: Add definition of `==' to def_table. + +Fri Nov 2 02:49:09 1990 James Clark (jjc at jclark) + + * pic/tex.c (tex_output::start_picture): Change the definitions of + \graph and \graphtemp so that they work properly with Plain TeX. + + * pic/tex.c (tex_output::solid_arc): Ensure that the second angle + argument to `ar' is not less than the first. + + * pic/pic.y: Allow a comma between elements of the variable list + in the argument to `reset'. + + * pic/object.c (arc_object::arc_object): Fix computation of + radius. + + * eqn/main.c (main): Add exit(0). + +Thu Nov 1 02:03:50 1990 James Clark (jjc at jclark) + + * troff/div.c (begin_page): Test no_space_mode after doing the + break, but still push the page ejector cookie before doing the + break. Also set the next page number after doing the break. + + * xditview/xditview.c (NewFile): Don't set the title and icon name + if this is the first file and its name is `-'. + * groff/groff.c: Define a new device flag XT_OPTION. Set it for + the X75 and X100 devices. + (main): If a device has the XT_OPTION flag set and there's exactly + one file argument, pass the driver -xrm and -title options to set + the icon name and window title to the name of the file. + + * troff/env.c (environment_switch): If there was an argument but + it wasn't a valid number or name, then pop an environment but + don't give an error message on underflow. + + * troff/number.c (start_number): Correct spelling in error message. + + * troff/input.c (token::delimiter): Don't print an error message + if err is false. + + * xditview/libXdvi/parse.c (ParseInput): In case 'D', only call + ParseDrawFunction if dw->display_enable is true. + +Wed Oct 31 05:49:50 1990 James Clark (jjc at jclark) + + * pic/pic.y: Parse text positioning like normal attributes, so as + to allow `"text" at 0,0 ljust'. Don't allow `center' as a + positioning attribute. + +Mon Oct 29 22:50:38 1990 James Clark (jjc at jclark) + + * tbl/main.c (process_data): When in state START while reading a + text block, don't change to state MIDDLE if c is a newline. + +Sun Oct 28 21:59:56 1990 James Clark (jjc at jclark) + + * dvi/dvi.c (dvi_printer::begin_page): Rename `i' variable to `j' + so as to avoid shadowing parameter. + +Wed Oct 24 18:35:39 1990 James Clark (jjc at jclark) + + * tbl/table.c (trim_space): Deleted. + (table::add_entry): Don't call trim_space. + +Mon Oct 22 03:48:39 1990 James Clark (jjc at jclark) + + * VERSION: Change version to 0.6. + + * troff/number.c (parse_expr): Make == work. + +Sat Oct 20 11:28:17 1990 James Clark (jjc at jclark) + + * man/grog.man: New file. + * man/Makefile: Add grog.n to MAN1PAGES. + * etc/grog.sh: New file. + * etc/Makefile: Install grog.sh as grog. + +Fri Oct 19 11:17:15 1990 James Clark (jjc at jclark) + + * troff/input.c (token::next): Implement \E. + +Thu Oct 18 11:56:24 1990 James Clark (jjc at jclark) + + * xditview/tmac.X: Change font translations to match tmac.ps. + + * troff/input.c (non_empty_name_warning): Don't give a warning if + `\{' terminates the name. + +Tue Oct 16 10:04:23 1990 James Clark (jjc at jclark) + + * ps/devps/symbol.diff: New file. + * ps/devps/FontMakefile: Mention symbol.diff. + +Sun Oct 14 11:46:46 1990 James Clark (jjc at jclark) + + * troff/node.c (font_position): Use get_long_name to read the + external_name. + + * troff/env.c (environment_switch): If we get a number that's < 0 + or >= NENVIRONMENTS, treat it like a name. + Change NENVIRONMENTS to 10. + + * troff/groff.h: Remove definition of FONTS_MAX. + * troff/node.h (class font_family): Make map a pointer instead of + an array. Add a map_size member. Make it a class. Make nm const + and public. Make invalidate_fontno a friend. + * troff/node.c: Define font_table_size. Make font_info a pointer + rather than an array. + (class troff_output_file): Allocate font_position dynamically. Add + nfont_positions member. + (troff_output_file::set_font): Grow font_position if necessary. + (troff_output_file::~troff_output_file): Delete font_position. + (troff_output_file::troff_output_file): Allocate font_position. + (grow_font_table): New function. + (troff_output_file::really_begin_page, + troff_output_file:really_copy_page): Use nfont_positions rather + than FONTS_MAX. + (mount_font_no_translate, mount_style): Call grow_font_table if + necessary. + (font_family::font_family): Allocate map. + (font_family::make_definite): Grow map if necessary. Use + font_table_size instead of FONTS_MAX. + (font_family::~font_family): New function. + (invalidate_fontno): Use font_family::map_size. + (get_fontno, env_space_width, env_half_narrow_space_width, + env_narrow_space_width, symbol_fotno, is_good_fontno, + get_bold_fontno, make_glyph_node): Use font_table_size rather than + FONTS_MAX. + (next_available_font_position): Never return 0. + +Fri Oct 12 10:17:52 1990 James Clark (jjc at jclark) + + * ps/tmac.ps: Add font translations for compatibility with dpost. + +Thu Oct 11 12:09:03 1990 James Clark (jjc at jclark) + + * eqn/pile.c: Rename default_baseline_sep to baseline_sep. + Move BASELINE_SEP_FORMAT and COLUMN_WIDTH_FORMAT into pbox.h. + Move definitions baseline_sep, shift_down, column_sep, + matrix_side_sep into... + * eqn/box.c: Add them to param_table. + * eqn/pbox.h: Add declarations to pbox.h. + + * troff/input.c (set_string): Cast value to unsigned char *. + + * troff/token.h (process_input_stack): Declare it static before + declaring it a friend. + +Wed Oct 10 09:59:13 1990 James Clark (jjc at jclark) + + * dvi/devdvi/texex.map: Fix positions of extensible brace middle + and bottom. + * dvi/devdvi/EX: Regenerate. + + * troff/input.c (init_charset_table): Make ", ', ), ], *, \(dg + transparent. + +Tue Oct 9 08:34:02 1990 James Clark (jjc at jclark) + + * eqn/lex.c: In defaults_table, make definition of `dot' call + `dot_def'. Don't explicitly make it roman. Similarily for other + accents. + + * pic/lex.c (for_input::for_input): Add by_is_multiplicative + argument. + (for_input::get, for_input::peek): Use this. + (do_for): Add by_is_multiplicative argument. + * pic/pic.y: Change optional_by clause to allow '*' after `by'. + Change semantic value of optional_by to be a double plus a flag + saying whethet the by clause is multiplicative. + + * eqn/lex.c (get_delimited_text): Remember location of start of + definition. Improve error handling when EOF is encountered. + + * lib/font.h: Rename handle_x_command to + handle_unknown_font_command. + * lib/font.c (font::load): Call handle_unknown_font_command for + any unknown command in the font description file. Don't call + handle_x_command. Include the name of the command in the argv. + Improve message for unknown command after kernpairs or charset + command. + * ps/ps.c (ps_font::handle_x_command): Rename to + handle_unknown_font_command. Remove message about `x download' + command. Give error message for wrong number of arguments. + * ps/devps/afmtodit: Generate `encoding' instead of `x encoding'. + * dvi/dvi.c (dvi_font::handle_x_command): Rename to + handle_unknown_font_command. Give an error message for wrong + number of arguments. Rename design_size to designsize. + * dvi/tfmtodit.c (main): Generate `checksum' instead of `x + checksum', `designsize' instead of `design_size'. + +Mon Oct 8 00:38:55 1990 James Clark (jjc at jclark) + + * eqn/*.[chy]: Change underaccent to uaccent. + + * eqn/eqn.y: Add rule for underaccent. Declare UNDERACCENT token; + give it the same precedence as ACCENT. + * eqn/other.c (make_underaccent_box): New function. + * eqn/box.h: Declare it. + * eqn/lex.c: Add UNDERACCENT to token_table. Add utilde to + def_table. + +Sun Oct 7 11:25:16 1990 James Clark (jjc at jclark) + + * pic/pic.y (reset_all): New function. Called in rule for RESET. + (parse_init): Call reset_all. + (define_variable): When defining scale reset only those + pre-defined variables that are scaled. + (defaults_table): Add `scale' as non-scaled value. + + * pic/pic.y: Redo parsing of text adjustments: parse adjustments + together with the text; allow any number of positioning words; + allow center as a positioning word. + + * pic/object.c (output::compute_scale): Get picture maximum height + and width from variables called maxpswid and maxpsht. + * pic/pic.y: Add maxpswid and maxpsht to defaults_table. + +Sat Oct 6 10:16:56 1990 James Clark (jjc at jclark) + + * pic/object.c (object_spec::make_text): Multiply textht by number + of text items. + + * pic/pic.y: Allow `sprintf("string", expr,...)' wherever text can + occur. + (do_sprintf): New function. + (pic.gperf): Add sprintf token. + (text, sprintf): New rules. + + * pic/pic.y: `rand()' with no arguments returns a random number + in the range [0,1). + + * pic/pic.y: Allow a bare expression to be an attribute: change + precedences to support this. Change optional_ordinal rule to + optional_ordinal_last to avoid reduce/reduce conflict. + * pic/object.c (object_spec::object_spec): Initialize direction. + + * pic/pic.y: Implement ^ operator meaning exponentiation. + + * troff/node.h: Add default argument to mount_font. + * troff/node.c (font_position): Read an optional third argument + giving the external_name. + (mount_font): Add optional argument giving the external_name. + (mount_font_not_translate): Have additional argument giving + external name. Use this name to load the font. Pass both names + to font_info::font_info. + (font_info::font_info): Have additional argument giving + external_name. + (class tfont): New member external_name. + (font_info::get_tfont): Use external name to construct tfont_spec. + +Fri Oct 5 04:03:13 1990 James Clark (jjc at jclark) + + * eqn/lex.c (init_table): Add argument giving device. Define + name of device to be "1". + (do_ifdef): Counts as true if the argument has been defined with + `define'. + * eqn/main.c (main): Call init_table with device argument. Make + device local to main. + * eqn/eqn.h: Change declaration of init_table. Remove declaration + of device. + + * pic/lex.c (get_delimited): Allow text to be delimited by + matching {}s. Don't recognize ending delimiter within a string. + + * troff/input.c (get_delim_name): New function. + (token::next): Implement \C. + + * lib/font.c (font::load): Grok ---. Add an alias for each + character based on its code. + (font::get_code_width): Deleted. + * lib/font.h (class font): Declare font::number_to_index(). + Remove declaration of font::get_code_width. + * lib/nametoindex.c (font::name_to_index): Add 512 rather than 256 + to indices of named characters. + (font::number_to_index): New function. + * troff/input.c (font::number_to_index): New function. + (get_charinfo_by_number, charinfo::get_number, + charinfo::set_number): New functions. + (token::next): Turn \N into a TOKEN_NUMBERED_CHAR. + (token::process, token::description, token::get_char, + token::add_to_node_list, token::operator==): Handle + TOKEN_NUMBERED_CHAR. + * troff/charinfo.h: Declare get_charinfo_by_number, + charinfo::get_number, charinfo::set_number. Add NUMBERED flag to + charinfo class. + (charinfo::numbered): New function. + * troff/token.h: Add TOKEN_NUMBERED_CHAR. + * troff/env.h (class environment): Remove declaration of ... + * troff/env.c (environment::make_numbered_char_node): Deleted. + * troff/node.c (make_numbered_node): Deleted. + (class numbered_glyph_node): Remove. + (troff_output_file::put_char_width, troff_output_file::put_char): + Handle numbered chars. + (troff_output_file::numbered_char): Removed. + (tfont::get_code_width): Removed. + (make_glyph_node): Don't search special fonts for numbered + characters. + * troff/node.h: Remove declaration of make_numbered_node. + * driver/input.c (do_file): Handle N command. + * driver/printer.h: Add declaration of ... + * driver/printer.c (printer::set_numbered_char): New function. + * dvi/tfmtodit.c (main): Generate unnamed entries. + * ps/devps/afmtodit: Likewise. + * xditview/xtotroff.c (MapFont): Likewise. + * xditview/libXdvi/parse.c (ParseInput): Grok N command. + + * tbl/main.c (process_format): If multiple widths are specified + for a column but all the widths are the same, don't give an error + message. + + * tbl/table.c (table::do_row): If the current row is all lines and + the stuff doesn't contains a line, mark the top of the row after + printing stuff before the row. If the current row is not all + lines and the stuff doesn't contain a line, don't unnecessarily + mark the top of the row before printing the stuff. + +Mon Oct 1 11:42:00 1990 James Clark (jjc at jclark) + + * troff/groff.h: Remove MAX_PATH. + * troff/input.c (open_file): Dynamically allocate space for the + path. + (open_mac_file, process_macro_file): Corresponding changes. + +Sun Sep 23 18:56:26 1990 James Clark (jjc at jclark) + + * troff/node.h (class output_file): Make copy_file pure. Add + vspace method ifdef COLUMN. Add is_printing method. + * troff/node.c: Add class printing_reg. Add class + real_output_file. Derive other output_file classes from + real_output_file; in these classes rename begin_page to + really_begin_page, print_line to really_print_line, copy_file to + really_copy_file, transparent_char to really_transparent_char. + Move output_file::flush to real_output_file. Add printing member + to class output_file. + * troff/div.h: Remove printing member from top_level_diversion. + Add vspace member function to class diversion ifdef COLUMN. Add + some declarations ifdef COLUMN. + * troff/div.c (top_level_diversion::copy_file, + top_level_diversion::transparent_output, + top_level_diversion::output): Don't test printing member before + output. + * troff/input.c: Handle initial variable_space_request ifdef + COLUMN. + * troff/Makefile: Add column.c but comment it out. Add -DCOLUMN + but comment it out. + +Sat Sep 22 11:32:22 1990 James Clark (jjc at jclark) + + * troff/div.c (diversion::need): Make any space forced. If we + sprung a trap, set truncated_space to minus the distance to the + trap and set needed_space to the amount that was needed. + (top_level_diversion::space): A forced space turns no_space_mode + off. + (class constant_vunits_reg): New class. + (init_div_requests): Implement number registers .trunc and .ne + using constant_vunits_reg. + (class truncated_space_reg): Deleted. + + * troff/div.h: Don't have a no_space_mode member in diversion. + Instead have it in top_level_diversion. + * troff/div.c (diversion::diversion): Don't initialize + no_space_mode. + (top_level_diversion::top_level_diversion): Initialize + no_space_mode. + (no_space, restore_spacing): Do nothing if curdiv != topdiv. + (macro_diversion::output): Don't clear no_space_mode. + + * troff/input.c (diverted_space_node::reread): Don't call + environment::do_break. In fill mode, act like a blank line. + (diverted_copy_file_node::reread): Don't call + environment::do_break. + + * troff/div.c (blank_line): New function. + * troff/div.h: Declare it. + * troff/input.c (process_input_stack): Call it. + + * troff/div.c (truncated_space_reg::get_string): New function. + (init_div_requests): Bind to .trunc. + (space_request, top_level_diversion::space, + top_level_diversion::output, macro_diversion::space, + macro_diversion::output): Update truncated_space. + (macro_diversion::output): Redo calculations when trap sprung. + (macro_diversion::output, macro_diversion::space): No need for + trap_flag. + + * troff/div.c (top_level_diversion::output): Set nl_reg_contents + after truncating post line spacing. + +Fri Sep 21 11:27:25 1990 James Clark (jjc at jclark) + + * ps/devps/prologue (MF, SF): Make them work even if setfont is + defined as a procedure rather than as an operator. + +Thu Sep 20 12:55:05 1990 James Clark (jjc at jclark) + + * troff/div.c (macro_diversion::space): Ignore no_space_mode. + +Wed Sep 19 10:54:37 1990 James Clark (jjc at jclark) + + * troff/div.c (top_level_diversion::output): Merge + output_file::print_line and output_file::end_of_line member + functions. + * troff/div.h (class output_file): + * troff/node.c (troff_output_file::print_line, + troff_output_file::end_of_line, output_file::end_of_line, + ascii_output_file::print_line, suppress_output_file::print_line): + Corresponding changes. + +Tue Sep 18 11:31:47 1990 James Clark (jjc at jclark) + + * troff/input.c (token::next): Don't give a warning for `\.'. + + * troff/env.c (environment::get_center_lines): New function. + (init_env_requests): Bind number register .ce to it. + * troff/env.h: Declare it. + * tbl/table.c (table::init_output): Define reset macro to restore + .ce. If center option not given, store .ce in SAVED_CENTER_REG. + Then do .ce 0. + (table::print): If center option not given, then imply center + option if SAVED_CENTER_REG > 0. + +Mon Sep 17 09:19:19 1990 James Clark (jjc at jclark) + + * ps/devps/Makefile: Remove T from FONTS. Remove TSymbol.ps and + Troff.ps from DOWNLOAD. + + * troff/Makefile: Change comment in DEFINES to avoid confusing + System V make. + + * ps/ps.c (ps_printer::do_exec): Allow newlines within PostScript + code. Don't try to catch errors with stopped. + (check_line_lengths): New function. + * ps/devps/prologue (EXEC): Deleted. + (EBEGIN, EEND): New procedures. + +Sun Sep 16 14:51:15 1990 James Clark (jjc at jclark) + + * troff/input.c: Include request.h before node.h. + * troff/node.c: Likewise. + * troff/env.c: Likewise. + * troff/div.c: Likewise. + * troff/node.h (class special_node): Store argument as a macro + rather than a char *. + * troff/node.c (special_node::special_node, special_node::copy): + Grok this. + (special_node::~special_node): Deleted. + (special_node::tprint): Deleted. + (special_node::tprint_start, special_node::tprint_end, + special_node::tprint_char): New functions. + (troff_output_file::special): Deleted. + (troff_output_file::start_special, troff_output_file::end_special, + troff_output_file::special_char): New functions. + * troff/input.c (special_node::tprint): New function. + (do_special): Use macro not char *. + (do_transparent_macro): Deleted. + (token::next): Don't call do_transparent_macro. + + * troff/input.c (token::next): Add 'Y' case. + (do_transparent_macro): New function. + * troff/node.c (troff_output_file::special): Handle newlines with + argument using new continuation convention. + * driver/input.c (get_string): Cope with continuation convention. + (do_file): Don't call skip_line after calling get_string(1). + * ps/ps.c (ps_printer::special, ps_printer::do_import, + ps_printer::do_def, ps_printer::do_exec): Cope with newlines in + arg. + * xditview/libXdvi/parse.c (ParseInput): Ignore lines starting + with +. + +Sat Sep 15 19:00:10 1990 James Clark (jjc at jclark) + + * troff/input.c (asciify): By default, illegal input characters + should return empty string. + + * troff/input.c (copy_file): Handle first page transition like title. + (token::next, process_input_stack): Grok COPY_FILE_REQUEST. + + * troff/input.c (token::next): Improve error message for EOF after + escape character. + (input_char_description): New function. + (get_char_for_escape_name): Use input_char_description. + (token::next): Warn about unrecognized escape sequences. + (warning_table): Add WARN_ESCAPE. + * troff/groff.h: Declare WARN_ESCAPE. Change WARN_TOTAL + accordingly. + + * troff/token.h: Remove declaration of process_input_stack. + + * troff/input.c: Remove declaration of init_hyphen_requests. + * troff/request.h: Correct spelling in declaration of same. + + * troff/input.c (token::next): Check whether escape_char is 0. + +Fri Sep 14 12:09:25 1990 James Clark (jjc at jclark) + + * groff.c (main, usage, help): Implement -P and -L options. + * groff.sh: Likewise. + + * troff/input.c (token::next): Use some gotos to avoid code + duplication. + + * troff/input.c (get_long_name, get_name, read_long_ecsape_name): + Avoid calling symbol::symbol if name empty. + +Thu Sep 13 06:21:45 1990 James Clark (jjc at jclark) + + * troff/input.c (init_input_requests): Make \n(.x return the major + version number and \n(.y return the minor version number. + * troff/Makefile: Construct file majorminor.c defining + major_version and minor_version automatically from ../VERSION. + + * troff/node.c (class glyph_node): Make operator new and operator + delete public. + (class ligature_node): Similarily. + + * troff/input.c (operator==(const macro &, const macro &)): New + function. + (non_interpreted_node::same): Use this. + (string_iterator::string_iterator): Make macro& argument const. + + * troff/input.c (input_iterator::get): New function. Don't make + asciify_macro or class non_interpreted_node friends of class + input_iterator. + (non_interpreted_node::interpret): Use input_iterator::get. + (asciify_macro): Likewise. + + * troff/input.c (~token_node, ~string_iterator, ~arg_list, + ~non_interpreted_node): Deleted. + * troff/node.c: (~suppress_output_file, ~ascii_output_file): + Deleted. + + * troff/symbol.h: Make all symbol member functions const. + + * lib/strtol.c: New file. + * lib/Makefile: Add strtol.c. + * Makefile: Define STRTOL as strtol.o to include strtol in + libgroff.a. + +Wed Sep 12 10:00:49 1990 James Clark (jjc at jclark) + + * pic/troff.c (troff_output::simple_circle): Divide by scale. + +Tue Sep 11 14:17:16 1990 James Clark (jjc at jclark) + + * troff/input.c (do_special): Use input_level. + + * troff/token.h (TOKEN_BACKSPACE): New token. + (token::backspace): New function. + * troff/input.c (token::description, token::next, token::process): + Grok TOKEN_BACKSPACE. + (do_special): Turn TOKEN_BACKSPACE back into \b. + + * troff/token.h (token::leader): New function. + * troff/input.c (do_special): Turn TOKEN_LEADER back into \001. + + * troff/input.c (do_special): Turn TOKEN_TAB back into \t. + + * troff/input.c (do_special): Use token::description in error + message. + +Mon Sep 10 11:06:27 1990 James Clark (jjc at jclark) + + * troff/input.c (decode_args): Combine quoted and + quote_input_level variables. Make it a for (;;) loop. + + * troff/input.c (get_char_for_escape_name): Check for \001 and \b. + + * troff/input.c (read_long_escape_name): The test for whether to + expand buffer was off by 1. + (read_string): Similarily. + +Fri Sep 7 11:45:50 1990 James Clark (jjc at jclark) + + * troff/input.c: Use `const int' rather than `static const int'. + + * troff/div.h (diversion::copy_file): Declare as pure virtual. + (macro_diversion::copy_file): New function. + * troff/node.h: New class diverted_copy_file_node. + * troff/node.c: Implement it. + * troff/input.c (copy_file): Use diversion::copy_file. Handle + first page transition by pushing a diverted_copy_file_node. + * troff/input.c (token::next, process_input_stack): Don't handle + COPY_FILE_REQUEST. + +Thu Sep 6 13:29:10 1990 James Clark (jjc at jclark) + + * ps/ps.c (flush_sbuf): Remember to add sbuf_kern when checking + whether space widths need adjusting. + + * troff/charinfo.h: Generalize translated_to_space to + special_translation so as to allow translation to \&. + * troff/input.c (translate): Allow translation to \&. + (charinfo::*): Corresponding changes. + * troff/node.c (make_node, node::add_char): Corresponding changes. + * troff/node.h (dummy_node::dummy_node): Allow optional first + argument. + + * lib/lib.h: Make codes 0200 to 0237 illegal input characters. + * troff/token.h: Remove TOKEN_TITLE. Remove token::title. Add + TOKEN_REQUEST. + * troff/input.c (token::next): Turn a TITLE_REQUEST into a + TOKEN_REQUEST with an argument of TITLE_REQUEST. + (token::process): Grok that. + * troff/input.c (copy_file): Handle first page transition like + title by pushing a COPY_FILE_REQUEST cookie. + (token::next, process_input_stack): Grok that. + * troff/node.h (output_file::copy_file): Add x and y arguments. + Make it non-pure. + * troff/div.c (top_level_diversion::copy_file): Supply them. + * troff/node.c (troff_output_file::copy_file): Add x and y + arguments; moveto specified position. Invalidate font_position + array after copying file. + (output_file::copy_file): New function. + (suppressed_output_file::copy_file, ascii_output::copy_file): + Removed. + * troff/input.c (transparent_file): New function. + (init_input_requests): Bind to "trf". + (token::next): Handle TRANSPARENT_FILE_REQUEST cookie. + (process_input_stack): Likewise. + + * troff/Makefile: Add ../lib/lib.h to GROFF_H. + + * troff/node.c (init_node_requests): New number registers .kern + pointing to global_kern_mode, and .lg pointing to + global_ligature_mode. + + * troff/node.c (ligature): Don't change it if we get a bad + integer. + + * troff/input.c (do_define_string): Don't strip tabs. + + * troff/input.c (asciify_macro): Make the string_iterator auto. + + * troff/node.c (init_font_requests): Rename to... + (init_node_requests): + * troff/node.h: Change declaration. + * troff/input.c (main): Change call. + + * troff/input.c (node::reread, diverted_space_node::reread): New + methods. + (process_input_stack): Call reread rather than + get_diverted_space_node. + * troff/node.c (node::get_diverted_space_node, + diverted_space_node::get_diverted_space_node): Removed. + * troff/node.h: Declare reread methods instead of + get_diverted_space_node methods. Make `n' member private. + * troff/input.c: (token::diverted_space): Removed. + * troff/token.h: Removed declaration. + + +Tue Sep 4 00:48:04 1990 James Clark (jjc at jclark) + + * eqn/script.c (script_box::compute_metrics): Don't let + SUP_RAISE_FORMAT become negative. + + * tbl/table.c (table::do_row): Entries that don't end in the + this row shouldn't make the row non-blank. + + * tbl/table.c (table::make_columns_equal): Only set the width of + columns which are marked as equal. + + * tbl/main.c (process_data): Before issuing excess data error, + if last character was a newline unget it; then get it again after + the error. Also include the contents of the entry in the message. + + * groff.c: New file. + * Makefile: Build groff from groff.c. Make it possible to use + either groff.sh or groff.c as groff. + * Makefile.bd: Similarily. + +Mon Sep 3 09:39:49 1990 James Clark (jjc at jclark) + + * groff.sh: Don't delay expansion of $@ in assignment to files. + Remove occurrences of \". + +Sun Sep 2 09:56:59 1990 James Clark (jjc at jclark) + + * all Makefiles: Simplify and rearrange. + + * Makefile: Handle fmod like malloc. + * lib/Makefile: Similarily. + * lib/fmod.c: Remove #ifdef NEED_FMOD. + + * Makefile: Rename OPTIMISE to OPTIMIZE. + + * groff.sh: Remove assignment to PATH. + * Makefile: Remove SHPATH variable. + * Makefile.bd: Similarily. + + * groff.sh: Add -V option to print the pipeline instead of + executing it. + +Fri Aug 31 00:56:46 1990 James Clark (jjc at jclark) + + * lib/font.c: Split off file searching into ... + * lib/fontfile.c: New file. + + * lib/strerror.c (strerror): Use `Error %d' for unknown errors. + +Thu Aug 30 13:13:55 1990 James Clark (jjc at jclark) + + * tbl/table.c (table::do_hspan): Delete assertion that e != 0. + Also change misleading comment. + (table::do_vspan): Change similarily misleading comment. + * tbl/main.c (process_data): A format row with an explicit `s' + uses up a data line, even if all the other columns are `_' or `='. + + * troff/input.c (token::description): Fix description of + TOKEN_DUMMY and TOKEN_EMPTY. + +Wed Aug 29 04:12:08 1990 James Clark (jjc at jclark) + + * groff.sh: Fix description of -Z in help message. + +Tue Aug 28 07:28:33 1990 James Clark (jjc at jclark) + + * pic/object.c (object_spec::make_object): Allow negative and zero + line thicknesses. + * pic/pic.y: Give linethick default value of -1.0. + * pic/troff.c (troff_output::troff_output): Initialize + last_line_thickness to BAD_THICKNESS. + (troff_output::finish_picture): Set thickness to BAD_THICKNESS. + (troff_output::line_thickness): Canonicalize negative thicknesses + to RELATIVE_THICKNESS. + * pic/tex.c (tex_output::set_pen_size): Silently map negative line + thicknesses to DEFAULT_PEN_SIZE. Canonicalize negative pen sizes + to -1.0. + (tex_output::start_picture): Set pen_size to -2.0. + + * ps/ps.c (ps_printer::set_line_thickness): If line_thickness is + 0, then use 0 linewidth. + (ps_printer::ps_printer): Initialize line_thickness to -1. + + * pic/troff.c (troff_output::simple_ellipse): Divide by scale. + + * ps/devps/symbolchars: Remove `or'. + * ps/tmac.ps: Implement \(or with .char. + + * ps/devps/symbolchars: Move most characters into textmap. + * ps/devps/textmap: Add names for troff bracket characters. Remove + ul, ru, br, bv. + + * ps/devps/TSymbol.ps: Removed. + * ps/devps/FontMakefile: Make S from Symbol not TSymbol. + * ps/tmac.ps: Do with .char what TSymbol did. + * ps/devps/download: Remove TSymbol. + + * ps/devps/T: Removed. + * ps/devps/Troff.ps: Removed. + * ps/devps/Troff.afm: Removed. + * ps/tmac.ps: Implement \(ru, \(ul, and \(br with .char. + * ps/devps/download: Remove Troff. + * ps/devps/FontMakefile: Remove T target. + * ps/devps/DESC-A4: Remove T from font list. + * ps/devps/DESC-letter: Likewise. + + * troff/input.c (macro_to_node): Rename to ... + (charinfo_to_node): Don't pass mac argument. Temporarily remove the + character's definition while processing it. + * troff/node.c (node::add_char, make_node): Change calls to + macro_to_node accordingly. + + * troff/input.c (token::next): Translate \_ to \(ul. + + * tty/devascii/R.proto: Add `|'. + * tty/devlatin1/R.proto: Likewise. + +Mon Aug 27 11:25:41 1990 James Clark (jjc at jclark) + + * man: Put the version number in all the man pages. + +Sun Aug 26 11:40:05 1990 James Clark (jjc at jclark) + + * Makefile.bd: New file. + * README.bd: New file. + + * VERSION: New file. + * lib/version.c: Removed. + * lib/Makefile: Create version.c from ../VERSION. Remove version.c + in clean target. + + * troff/input.c (main): Get hyphen_file from GROFF_HYPHEN + environment variable. + + * all Makefiles: Split install target into install.bin for + binaries, and install.nobin for everything else. + * Makefile: Add bindist target. + + * man/afmtodit.man: New file. + * man/Makefile: Add afmtodit.n to MAN1PAGES. + * ps/devps/Makefile: Add textmap to DEVICEFILES. Install afmtodit + in BINDIR. + * ps/Makefile: Pass BINDIR to make install in devps. + + * ps/ps.c (ps_printer::set_char): Do nothing if the character is + the space character. + + * ps/devps/FontMakefile: Rename symbol.afm to tsymbol.afm. + +Sat Aug 25 15:39:03 1990 James Clark (jjc at jclark) + + * ps/ps.c: Redo font downloading. + * ps/devps/download: New file. + * ps/devps/Makefile: Add download to DEVICEFILES. + * ps/devps/afmtodit: Remove -d option. + * ps/devps/FontMakefile: Don't use -d option with afmtodit. + * ps/devps/symbosl.ps: Add %%DocumentFonts comment. + * ps/devps/zapfdr.ps: Likewise. + * ps/devps/TSymbol.ps: Likewise. + +Fri Aug 24 20:10:30 1990 James Clark (jjc at jclark) + + * groff.sh: Initialize dev to ${GROFF_TYPESETTER:-@DEVICE@}. + +Thu Aug 23 10:03:47 1990 James Clark (jjc at yquem) + + * ps/ps.c (ps_output::include_file): If BROKEN_SPOOLER is defined, + then strip the first line if it starts with %. + * Makefile: Add a comment about this. + + * man/tfmtodit.man: New file. + * man/Makefile: Add tfmtodit.n to MAN1PAGES. + * dvi/Makefile: Install tfmtodit in BINDIR. + + * dvi/tfmtodit.c (usage): Mention -v option. + +Wed Aug 22 09:56:36 1990 James Clark (jjc at yquem) + + * troff/node.c (troff_output_file::end_of_line): Call do_motion. + * troff/node.c (troff_output_file::transparent_char): Don't call + flush_tbuf. + + * eqn: Add check_tabs method to most box classes. + * eqn/box.c (box::top_level): Call check_tabs. + + * eqn/script.c (script_box::output): Use \Z. + * eqn/limit.c (limit_box::output): Use \Z. + + * eqn/box.c (box::top_level): Use itoa. + +Tue Aug 21 09:29:28 1990 James Clark (jjc at yquem) + + * dvi/tmac.dvi: Add font translations for CR, C, TT. + * dvi/devdvi/Makefile: Don't make links to CW. + + * ps/tmac.ps: Add font translations for C, CW, CO, CX, CD, H, HO, + HX, HD. + * xditview/tmac.X: Likewise. + + * troff/node.c: Add font translation feature. + (get_font_translation): New function. + (symbol_fontno): Translate the font name. + (mount_font_no_translate): Rename to mount_font to this. + (mount_font): New function. + (font_family::make_definite): Call mount_font_no_translate instead + of mount_font. + (mount_style): Translate the font name. + (font_translate): New function. + (init_font_requests): Bind "ftr" to font_translate. + + * ps/devps/prologue (SN): New procedure that rounds a position to + the nearest (pixel + (.25,.25)). + (DL): Use SN to round endpoints. + + * lib/version.c: Changed version to 0.5. + +Sat Aug 18 04:43:21 1990 James Clark (jjc at yquem) + + * Makefile: Move definition of PAGE to the very beginning, so that + people are less likely to miss it. + +Fri Aug 17 02:15:11 1990 James Clark (jjc at yquem) + + * man/Makefile: Don't need to sed out @UPCASE_PROG_PREFIX@. + + * troff/env.c (environment::choose_breakpoint): Make `can't find + breakpoint' error a warning of type WARN_BREAK. Change message to + `can't break line'. + * troff/groff.h: Declare WARN_BREAK with code 4; change WARN_INPUT to + code 040000. + * troff/input.c: Add WARN_BREAK to warning_table. Include + WARN_BREAK in DEFAULT_WARNING_MASK. + + * tty/tmac.tty: Add definition of \(+-. + + * groff.sh: Remove `--' option to set command. + + * dvi/devdvi/texsy.map: Remove duplicate md entry. + + * ps/devps/eqnchar: Better definition of cdot using md. + * dvi/devdvi/eqnchar: Likewise. + * xditview/devX100/eqnchar: Likewise. + * xditview/devX75/eqnchar: Likewise. + * eqn/lex.c: Add definition of cdot. + +Thu Aug 16 09:33:57 1990 James Clark (jjc at yquem) + + * troff/input.c (get_optional_char): New function. + * troff/input.c (set_page_character): Use get_optional_char(), + rather than has_arg() and tok.get_char(1). + * troff/env.c (tab_character, leader_character, hyphen_char, + field_characters): Likewise. + (margin_character): Likewise. Also always delete the + margin_character_node. + + * troff/input.c (token::get_char): Use token::description. + + * troff/input.c (has_arg): Don't skip over tab and \}. + * troff/number.c (start_number): Give a warning if the number + starts with \} (WARN_RIGHT_BRACE) or tab (WARN_TAB). + +Wed Aug 15 10:04:37 1990 James Clark (jjc at yquem) + + * troff/input.c (empty_name_warning, non_empty_name_warning): New + functions. + (get_name, get_long_name): Use these. Rename `warn' argument to + `required'. + + * troff/node.c (get_fontno): Test that the symbol is not null. + + * troff/input.c (token::description): New function. + * troff/number.c (parse_term): Use token::description in `numeric + expression expected' message. + * troff/groff.h: Add WARN_MISSING. + * troff/number.c (start_number): New function. + * troff/number.c (get_vunits, get_hunits, get_number, get_integer, + get_incr_number): Use start_number(). + * troff/input.c (DEFAULT_WARNING_MASK): Enable WARN_NUMBER by + default. + * troff/input.c (get_name, get_long_name): Use WARN_MISSING. + * troff/reg.c (alter_format): Use WARN_MISSING. Also use + token::descripion. + * troff/input.c (token::get_char): Use WARN_MISSING. + * troff/input.c (token::delimiter): Use token::description. + * troff/env.c (environment_switch): Back out Aug 3 change. + * troff/input.c (has_arg): Skip over \}s and tabs but give a + warning. + * troff/token.h (token::tab): New function. + * troff/node.c (get_fontno): Use tok.skip() rather than has_arg(). + * troff/reg.c (alter_format): Likewise. + * troff/node.c (bold_font): Use has_arg() rather than tok.skip(). + +Tue Aug 14 10:11:21 1990 James Clark (jjc at yquem) + + * troff (most files): Redo warnings. Divide warnings into various + categories; warning() has an additional first argument indicating + the category it falls into. + * troff/input.c (main): -w now takes an argument. New option -W. + (enable_warning, disable_warning): New functions. + + * ps/devps/afmtodit: Add -a option to lie about the italic angle. + * ps/devps/FontMakefile: Pretend TI has an angle of 7. + +Mon Aug 13 10:11:16 1990 James Clark (jjc at yquem) + + * ps/devps/eqnchar: Better definitions of dotdot, vec, dyad, inf. + * xditview/devX100/eqnchar: Likewise. Remove definition of dot. + * xditview/devX75/eqnchar: Likewise. + * dvi/devdvi/eqnchar: Better definitions of vec, dyad, dotdot. + + * eqn/other.c: When bar or over applies to a single character + don't produce an overline_box or an underline_box. Instead produce + an accent_box or an underaccent_box, with the accent a line + whose width is accent_width. New classes underaccent_box, + overline_char_box and underline_char_box. + * eqn/box.h: Move overline_box, underline_box, accent_box class + declarations into eqn/other.c. Add declarations of + make_underline_box, make_overline_box, make_accent_box. + * eqn/eqn.y: Call make_overline_box, make_underline_box + make_accent_box instead of constructors. + * eqn/pbox.h, eqn/box.c: Add accent_width parameter. + + * eqn/other.c: Add accent_box::~accent_box. + * eqn/box.h: Declare it. + + * groff.sh: With -Tps, use eqn -D. + + * eqn/other.c (overline_box::output): Use \Z. If draw_flag use \D + rather than \l. + (underline_box::output): Similarily. + (accent_box::output): Use \Z. + + * xditview/tmac.X: Add definitions of ~ and ^ (so that they are a + bit smaller.) + +Sun Aug 12 09:41:15 1990 James Clark (jjc at yquem) + + * troff/div.c (top_level_diversion::transparent_output(unsigned + char)): Use asciify. + * troff/input.c (asciify): Don't make it static. + * troff/token.h (asciify): Declare it. + + * troff/input.c (get_name, get_long_name, token::get_char, + token::delimiter): Add an extra default argument which says + whether a warning should be printed. + * troff: Pass a non-zero argument to one of these rather than + printing a warning directly. + +Sat Aug 11 09:02:21 1990 James Clark (jjc at yquem) + + * troff: Consistently use symbol::is_null. + + * troff/dictionary.h: Move some inline functions into + dictionary.c. + + * troff/request.h: Move inline functions into input.c. + (request_or_macro::invoke): Make it pure. + + * troff/input.c, troff/reg.h: New class `constant_int_reg'. + * troff/input.c (init_input_requests): Use class constant_int_reg. + (class compatible_reg): Deleted. + * troff/div.c (init_div_requests): Use class constant_int_reg. + (class last_post_line_extra_space_reg): Deleted. + + * troff/env.c (tab_character): Don't change the tab character if + we get an invalid argument. + (hyphen_char): Similarily. + + * troff/reg.c (alter_format): Check that nm is not null. + + * Makefile, groff.sh: Make it possible to customize the commands + used for printing PostScript and dvi files. Also make it possible + to customize the path used by groff.sh. + + * eqn/eqn.y: Make `left' right associative. + +Fri Aug 10 18:20:39 1990 James Clark (jjc at yquem) + + * pic/pic.h: Added definition of M_SQRT2 for those systems that + don't have it. + + * pic/pic.h: Removed definition of INT_MAX. + + * troff/node.c (italic_corrected_node::vertical_extent): Omit + `return'. + + * troff/input.c (token::next): Handle \R like \n. + +Tue Aug 7 09:46:33 1990 James Clark (jjc at yquem) + + * ps/tmac.pc (PSPIC): Simplify. + + * troff/env.c (tab_stops::to_string): + * pic/pic.y (object_type_name): + * pic/troff.c (simple_output::line): + * pic/tex.c (tex_output::spline): + * pic/object.c (object_spec::make_object): + * tbl/main.c (process_data): Add cases to switch statements to + avoid cfront warnings. (Some of these are spurious, since the + switch already has a default case.) + + * ps/tmac.ps (PSPIC): Reformatted. Prefix all local names with + `ps-'. Don't test systat; instead check number of arguments to + ps-bb. + +Mon Aug 6 00:13:07 1990 James Clark (jjc at yquem) + + * macros/tmac.e: Do not decrease the page offset by 0.5i. + + * ps/ps.c (ps_printer::ps_printer): Use mktemp instead of tempnam. + Unlink the file as soon as we have opened it, so that we don't + have to bother with signal handlers. + (handler): Deleted. + (fatal_error_exit): Deleted. + (main): Don't call signal. + + * dvi/tfmtodit.c: Add -k option so that kerns with the skewchar + can be ignored. + * dvi/devdvi/Makefile: Use the -k option with S and MI. + + * pic/pic.y: If there is a label, or an nth construction before + the first `.' in the argument to `with', ignore it and generate a + warning. + * pic/lex.c (lex_warning): New function. + + * tbl/table.c (table::init_output): In section keep and release + macro, use 0 indent when diverting and the correct indent when + rereading. + + * troff/input.c (interpolate_number_format): Do not interpolate + anything if the number register is not defined. + + * tbl/main.c (process_data): Don't add entry when col >= ncolumns. + +Sat Aug 4 08:12:05 1990 James Clark (jjc at yquem) + + * ps/devps/prologue (PICTURE): Set components of graphics state to + their default values. + + * ps/devps/text.enc: Add trademark + * ps/devps/textmap: Add names for club, spade, heart, diamond, + carriagereturn, suchthat. Use Upsilon1 rather than Upsilon. + * ps/devps/symbolchars: Add names for summation and product. + + * dvi/devdvi/texsy.map: Add names for club, spade, heart, diamond, + suchthat. Add pp. Add upper-case letters. + + * xditview/libXdvi/DviChar.c: Add names for club, spade, heart, + diamond, carriagereturn, suchthat. Use Upsilon1 rather than + Upsilon. + + * dvi/devdvi/texsy.map: Rename lA (left angle bracket) to la, and + rA (right angle bracket) to ra. Introduce names for double-headed + arrows and double-barred arrows: <>, va, lA, rA, hA, uA, dA, vA. + * ps/devps/textmap: Likewise for ps device. + * xditview/libXdvi/DviChar.c: Likewise for X100 and X75 devices. + * tty/devascii/R.proto: Rename lA to la and rA to ra. + * tty/devascii/R.proto: Likewise. + * tty/tmac.tty: Provide definitions for \(<>, \(lA, \(rA, \(hA, + \(uA, \(dA. + * eqn/delim.c: In delim_table, rename \(lA to \(la and \(rA to \(ra. + + * xditview/tmac.X: Add definitions for \(fi \(fl \(ff \(Fi \(Fl. + + * eqn/lex.c: Added definitions of `approx', `grad' and `del' to + def_table. + +Fri Aug 3 09:59:27 1990 James Clark (jjc at yquem) + + * troff/div.c (when_request): Use symbol::is_null rather than + has_arg to determine whether we have an argument. + (change_trap): Remove the trap if we get an invalid number. Give + an error if we don't get at least the macro name. + (diversion_trap): Remove trap if we get an invalid name or number. + + * troff/env.c (environment_switch): Pop if we get an invalid + symbol or numeric expression. + + * troff/input.c (do_define_macro): If EOF is encoutered while + defining the macro, do tok.next() before returning. + + * troff/token.h (has_arg): Move definition from here, to ... + * troff/input.c (has_arg): ... here + + * troff/env.c (space_size): Do nothing if we get an invalid argument. + * troff/input.c (shift): Likewise. + + * pic/lex.c (get_token_after_dot): Accept `.center' as a synonym + for `.c'. + + * pic/troff.c (troff_output::start_picture): Comment out calls to + `..'. + + * eqn/main.c (do_file): Subtract 1 from current_lineno if + interpret_lf_args succeeds. + + * eqn/main.c (do_file): Don't recognize delimiter if preceded by + \\. This avoids problems with \$N. + + * groff.sh: Pass -C to preprocessors. + + * lib/lf.c (interpret_lf_args): Be more flexible. + + * tbl/main.c (main): Add -C option. + (table_input::get): Do not recognize TE if followed by character + other than a space or newline unless -C option given. + (process_input_file): Likewise for lf, TS. + (process_data): Likewise for lf in text blocks. + + * eqn/main.c (main): Add -C option. + (do_file): Don't recognize EQ, EN or lf if followed by character + other than space or newline unless -C option given. + * eqn/lex.c (file_input::read_line): Similarily. + * eqn/eqn.h: Declare compatible_flag. + + * etc/soelim.c (main): Add -C option. + (interpret_lf_args): Use version in libgroff. + (do_file): + + * pic/main.c (main): Add -C option, which sets compatible_flag. + (top_input::get), (top_input::peek): If -C option not given, + do not recognize .PS/.PE/.PF/.lf if followed by a character + other than space or newline. + * pic/lex.c (file_input::read_line): Similarily. + * pic/pic.h: Add declaration of compatible_flag. + +Thu Aug 2 11:11:27 1990 James Clark (jjc at yquem) + + * ps/tmac.ps (PSPIC): Avoid use of `echo -n'. + + * troff/node.c, troff/node.h: Add `asciify' methods to classes + derived from node. New class space_char_hmotion_node. + * troff/input.c (asciify_macro): New function. + * troff/input.c (init_input_requests): New request `asciify' bound + to asciify_macro. + * macros/mm.diff: New file. + * Makefile: In install.mm target use `patch' to apply + macros/mm.diff. + + * troff/input.c (macro::print_size): Just print the size in bytes. + + * troff/div.c (return_request): Correct the argument + interpretation. + +Wed Aug 1 12:38:36 1990 James Clark (jjc at yquem) + + * troff/node.h (class composite_node): Add sz member. + * troff/node.c (composite_node::size): Return sz. + * troff/input.c (macro_to_node): Use the initial size in the + environment as the size of the composite_node. + + * troff/node.c (node::zero_width_tprint): Provide a reasonable + default. + +Tue Jul 31 10:07:10 1990 James Clark (jjc at yquem) + + * troff/div.c (change_trap): If we get a bad number expression, + do nothing. + +Mon Jul 30 10:30:49 1990 James Clark (jjc at yquem) + + * lib/matherr.c (matherr): Define this only if math.h defines + TLOSS. + +Sun Jul 29 10:34:27 1990 James Clark (jjc at yquem) + + * troff/div.c (macro_diversion::distance_to_next_trap): If there + no diversion trap return vunits(INT_MAX - vresolution). + +Sat Jul 28 14:28:14 1990 James Clark (jjc at yquem) + + * troff/input.c (do_zero_width): New implementation that doesn't + use a temporary environment. Use instead: + (token::add_to_node_list): New function. + * troff/env.c (environment::get_prev_char_height), + (environment::get_prev_char_height), + (environment::get_prev_char_skew): New functions. + (environment::get_prev_char): New function. + (environment::get_prev_char_width): Change to use get_prev_char. + (init_env_request): Implement new registers .cht, .cdp, .csk. + * eqn/sqrt.c (sqrt_box::output): Don't rely upon the argument to + \Z being processed in a separate environment. + +Fri Jul 27 10:21:25 1990 James Clark (jjc at yquem) + + * tbl/table.c: Removed TABLE_BOTTOM_REG. + + * tbl/table.c (table::init_output): In the section release macro, + give a warning message if the section won't fit on one page. + + * tbl/table.c (table::do_top): Emit table keep only if table is + boxed. + (table::do_bottom): Likewise for table release. + (table::table), (table::add_vertical_rule): Remove reference to + keep member. + * tbl/table.h: Remove keep member. + + * tbl/table.c: New register SUPPRESS_BOTTOM_REG. In + SECTION_RELEASE_MACRO, if there's not enough space before the next + trap to output the diversion, call T# ourselves, set + SUPPRESS_BOTTOM_REG to 1, spring the trap, then set + SUPPRESS_BOTTOM_REG back to 0. In T#, do nothing if + SUPPRESS_BOTTOM_REG is non-zero. In T#, always mark the current + vertical position and return to it before turning traps on again. + +Thu Jul 26 02:54:32 1990 James Clark (jjc at yquem) + + * troff/node.c, troff/node.h: In classes derived from node, + replace prev_char_width method by last_char_node method. + * troff/env.c (environment::get_prev_char_width): Use + node::last_char_node rather than node::get_prev_char_width. + + * Makefile: Added comment about -fno-inline on 68030-based + Apollos. + + * troff/reg.c (number_format_to_ascii), eqn/delim.c (DELIM_TABLE_SIZE), + tty/tty.c (tty_font::load_tty_font), dvi/tfmtodit.c (main): Cast + expressions using sizeof to int. + * dvi/dvi.c (dvi_font::handle_x_command): Avoid long->int warnings. + + * macros/tmac.e (TS): Don't move @f back past the current + position. + +Wed Jul 25 09:11:08 1990 James Clark (jjc at yquem) + + * ps/ps.c (main): Buffer stderr. + * dvi/dvi.c (main): Likewise. + * tty/tty.c (main): Likewise. + + * ps/ps.c (ps_printer::do_import): Improve error handling. + + * troff/input.c (abort_request): Use asciify. + + * driver/printer.h (printer::draw), driver/printer.c (printer::draw), + ps/ps.c (ps_printer::draw), dvi/dvi.c (dvi_printer::draw): Make + type of first argument int rather than char. This works around a + bug on the 68030 based Apollo using g++ 1.37.1. + + * tbl/table.h (class table): Add `keep' member. + * tbl/table.c (table::table): Initialize `keep'. + (table::add_vertical_rule): Set `keep' to 1. + (table::do_top): Only emit table keep macro is `keep' is non-zero. + (table::do_bottom): Likewise for table release macro. + (table::do_row): Emit section keep macro even if the row is 0. + +Tue Jul 24 08:35:07 1990 James Clark (jjc at yquem) + + * macros/tmac.e (@C): Preserve the font family across the change + in environments. + +Mon Jul 23 10:15:23 1990 James Clark (jjc at yquem) + + * lib/font.c: Initialize font::hor and font::vert to 1. + (font::load_desc): Check the values of font::hor and font::vert. + + * lib/lib.h: Added definition of INT_DIGITS. Fix it so that it can + be included in a C compilation. + (iftoa): Use INT_DIGITS. Include lib.h. + (itoa): Likewise. + (as_string): Likewise. + * tbl/table.c: Removed definition of INT_DIGITS. + * eqn/box.c (box::top_level): Use INT_DIGITS + 1 instead of 12. + * troff/input.c (input_input_requests): Likewise. + * ps/ps.c (make_encoding_name): Likewise. + (ps_printer::set_style): Likewise. + (ps_output::put_number): Use 1 + INT_DIGITS + 1 instead of 12. + + * tty/devascii/R.proto: Map fm onto '. + * tty/devlatin1/R.proto: Likewise. + +Sat Jul 21 12:45:07 1990 James Clark (jjc at yquem) + + * tbl/table.c: Use ' instead of DELIMITER_CHAR in places where the + argument to \w is at a different input level. + + * tbl/table.c (table::init_output): Define a new macro + REPEATED_VPT_MACRO, like vpt but if in a diversion also + transparently outputs itself. + (table::define_bottom_macro): Use REPEATED_VPT_MACRO instead of + vpt. + (table::do_row): Likewise. + + * tbl/table.c (vertical_rule::print): Prefix the .sp -1 line with + TRANSPARENT_STRING_NAME. + + * tbl/table.c (table::init_output): In the table release macro + print an error message and don't produce any output if after + issuing the need request the table still will not fit. Also + remove the diversion after bringing it back. + + * tbl/table.c (table::init_output): Define a new macro + REPEATED_MARK_MACRO, like mk but if in a diversion also + transparently outputs itself. + (table::do_row): Mark row_top_reg using REPEATED_MARK_MACRO. This + is necessary because .TH might not call .T#. + (table::do_top): Likewise TOP_REG. + (table::define_bottom_macro): If TOP_REG is no longer valid, use + #T - DOUBLE_LINE_SEP rather than #T. This is necessary because the + table header might contain just the two top rules. + +Fri Jul 20 10:51:42 1990 James Clark (jjc at yquem) + + * troff/div.c: Implement new request `ptr' to print all traps. + + * troff/env.c (init_env_requests): Implement `.tabs' reg with + init_string_env_reg. + * troff/env.c (class tab_reg): Deleted. + +Thu Jul 19 12:07:16 1990 James Clark (jjc at yquem) + + * troff/div.c: New number register .pn returns the number of the + next page as set by the pn request. + + * macros/tmac.an: Redid headers and footers. Number each manual + entry starting from 1 unless \nC is > 0, like Sun. Added an + optional 5th argument to .TH which specifies the manual name and + appears in the center of the header. Understand the X, P and D + registers like Sun. + +Wed Jul 18 10:23:31 1990 James Clark (jjc at yquem) + + * troff/env.c (init_env_requests): New number register `.lt' to + return the title length. + + * troff/node.h (class transparent_dummy_node): New class. + * troff/node.c (class transparent_dummy_node): Provide member + functions. + * troff/env.c (interrupt): Add a transparent_dummy_node, rather + than a dummy_node. + + * troff/input.c (token::next): New escape sequence \). + * troff/input.c (get_copy): Recognize \) in copy mode. + + * troff/input.c (input_stack::clear): New function. + * troff/input.c (exit_request): Use input_stack::clear. + + * troff/token.h: Removed TOKEN_NO_PRINT_CHAR. + * troff/input.c (token::process): Removed case TOKEN_NO_PRINT_CHAR. + + * troff/env.c: Move set_page_character to input.c. Move + page_character to input.c also. + * troff/env.c (title): Split off the reading of the parts of the + title into read_title_parts. + * troff/input.c (read_title_parts): New function. Check the + input_level when testing whether a token matches the delimiter. + + * troff/input.c (exit_request): New function. + * troff/input.c (init_input_requests): Bind ex request to + exit_request rather than exit_groff. + + * troff/input.c (exit_groff): Call tok.next() before + process_input_stack(). + +Mon Jul 16 09:47:23 1990 James Clark (jjc at yquem) + + * troff/env.c: ifdef widow control support on WIDOW_CONTROL. + * troff/env.h: ditto. + * troff/input.c: ditto. + + * troff/env.c (environment::is_empty): Test pending_lines. + + * troff/env.c (environment::have_pending_lines): Removed. + + * troff/input.c: Add request to flush pending lines from the + environment. + + * troff/env.c, troff/env.h: Add automatic widow control feature. + + * troff/input.c (exit_groff): Do process_input_stack() after + do_break() but before setting exit_flag to 2. + + * troff/input.c: Remove FLUSH_PENDING_LINES and + TOKEN_FLUSH_PENDING_LINES. Instead, flush pending lines from + environment after END_TRAP token seen, but only if there aren't + any more traps still unfinished. + * troff/token.h: Remove TOKEN_FLUSH_PENDING_LINES. + +Sun Jul 15 10:50:08 1990 James Clark (jjc at yquem) + + * troff/env.c: Rename the `retain_size' member of class + pending_output_line to `no_fill'. + + * troff/env.c (title): When the line is output, make the + retain_size argument !fill. + + * troff/node.h: Add `hyphenated' member to struct breakpoint. + * troff/node.c (space_node::get_breakpoints), + (dbreak_node::get_breakpoints): Fill this in. + * troff/env.c: Allow specification of maximum number of + consecutive hyphenated lines. + + * troff/env.c (environment::is_empty): Add test for !current_tab. + +Sat Jul 14 11:23:01 1990 James Clark (jjc at yquem) + + * troff/env.c (environment::hyphenate_line): Don't completely give + up if the word is not to be hyphenated; continue so that breaks + can be made at break_char_node's. + + * lib/lib.h: Only define INT_MAX if it's not already defined; + undef INT_MIN if it's already defined. + + * Makefile: Make it easy to define CFRONT_ANSI_BUG. + + * lib/lib.h: If CFRONT_ANSI_BUG is defined, cast INT_MIN to long. + This works around a bug in AT&T C++ 2.0 used with an ANSI C + compiler. + + * macros/tmac.an (an-header): Set no-space mode. + + * macros/tmac.an (TH): Start a new page if necessary. + + * Started using ChangeLog at version 0.4. + +Local Variables: +version-control: never +End: diff --git a/contrib/groff/INSTALL b/contrib/groff/INSTALL new file mode 100644 index 000000000000..639b9134575d --- /dev/null +++ b/contrib/groff/INSTALL @@ -0,0 +1,31 @@ +To install groff, follow the instructions in the file INSTALL.gen. + +This file contains information that supplements those instructions. + +groff is written in C++, so you will need a C++ compiler. The C++ +source files use a suffix of `.cc', so your C++ compiler must be able +to handle this. If you don't already have a C++ compiler, I suggest +gcc 2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C). +From gcc 2.5, it is no longer necessary to install libg++: the C++ +header files needed by groff are created by the gcc installation +process. To override configure's choice of C++ compiler, you can set +the CXX environment variable. + +If you have a library that provides a faster malloc than your system's +usual malloc, it is good idea to include it in LIBS. For example, +using the malloc that comes with GNU Emacs version 18 can give a +worthwhile (and sometimes spectacular) performance improvement. + +When you have build groff, you can use the test-groff script to try +groff out on one of the man pages. (Use the .n files not the .man +files.) The test-groff script sets up environment variables to allow +groff to run without being installed. The current directory must be +the build directory when the script is run. For example, you could do + + ./test-groff -man -Tascii groff/groff.n | less + +If you want to install gxditview (an X11 previewer), follow the +instructions in the INSTALL file in the xditview directory. + +If you have problems, read the PROBLEMS file. If this doesn't help +send a bug report using the form in the file BUG-REPORT. diff --git a/contrib/groff/INSTALL.gen b/contrib/groff/INSTALL.gen new file mode 100644 index 000000000000..95d84c820fb8 --- /dev/null +++ b/contrib/groff/INSTALL.gen @@ -0,0 +1,176 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/contrib/groff/Makefile b/contrib/groff/Makefile new file mode 100644 index 000000000000..5e09c198414b --- /dev/null +++ b/contrib/groff/Makefile @@ -0,0 +1,25 @@ +# Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. +# Written by James Clark (jjc@jclark.com) +# +# This file is part of groff. +# +# groff is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2, or (at your option) any later +# version. +# +# groff is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License along +# with groff; see the file COPYING. If not, write to the Free Software +# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +SHELL=/bin/sh + +.PHONY: all +all: + $(SHELL) configure + $(MAKE) all diff --git a/contrib/groff/Makefile.ccpg b/contrib/groff/Makefile.ccpg new file mode 100644 index 000000000000..ff774ddf3a04 --- /dev/null +++ b/contrib/groff/Makefile.ccpg @@ -0,0 +1,26 @@ +# Makefile.ccpg +MAKEFILEPARTS=$(srcdir)/../Makefile.comm ../Makefile.cfg \ + $(srcdir)/Makefile.sub $(srcdir)/../Makefile.ccpg $(srcdir)/Makefile.dep + +all: $(PROG) $(MANPAGES) + +$(PROG): $(OBJS) $(XLIBS) + $(LINK.cc) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB) + +install_bin: install_prog +install_prog: $(PROG) +install_data: install_man +install_man: $(MANPAGES) +uninstall_sub: uninstall_prog uninstall_man +depend: depend_src +depend.temp: $(GENSRCS) $(YTABC) +distfiles: $(YTABC) +TAGS: TAGS_src +TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS) +Makefile: $(MAKEFILEPARTS) + +pure: $(PROG).pure + +$(PROG).pure: $(OBJS) $(XLIBS) + $(PURIFY) $(PURIFYCCFLAGS) \ + $(LINK.cc) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB) diff --git a/contrib/groff/Makefile.comm b/contrib/groff/Makefile.comm new file mode 100644 index 000000000000..3888444a29ac --- /dev/null +++ b/contrib/groff/Makefile.comm @@ -0,0 +1,247 @@ +# Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. +# Written by James Clark (jjc@jclark.com) +# +# This file is part of groff. +# +# groff is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2, or (at your option) any later +# version. +# +# groff is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License along +# with groff; see the file COPYING. If not, write to the Free Software +# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# Makefile.comm +# +SHELL=/bin/sh +INCLUDES=-I. -I$(srcdir) -I../include -I$(srcdir)/../include +ALL_CCFLAGS=$(INCLUDES) $(CCDEFINES) $(CCFLAGS) $(CPPFLAGS) +COMPILE.cc=$(CCC) $(ALL_CCFLAGS) -c +ALL_CFLAGS=$(CDEFINES) $(CFLAGS) $(CPPFLAGS) +COMPILE.c=$(CC) $(ALL_CFLAGS) -c +LINK.cc=$(CCC) $(CCFLAGS) $(LDFLAGS) +LINK.c=$(CC) $(CFLAGS) $(LDFLAGS) +TOP=.. +LIBGROFF=$(TOP)/libgroff/libgroff.a +LIBBIB=$(TOP)/libbib/libbib.a +LIBDRIVER=$(TOP)/libdriver/libdriver.a +LIBM=-lm +MLIB= +XLIBS= +YTABH= +YTABC= +GRAM= +LIBCLEAN= +CLEANADD= +MOSTLYCLEANFILES=$(MANCLEAN) $(PROG) $(OBJS) $(GENSRCS) $(GENHDRS) \ + depend.temp core y.output $(CLEANADD) +CLEANFILES=$(LIBCLEAN) +DISTCLEANFILES=TAGS Makefile +REALCLEANFILES=$(YTABC) $(YTABH) +NAMEPREFIX= +HDRS= +MANPAGES=$(MAN1) $(MAN5) $(MAN7) +MANCLEAN=$(MANPAGES) +fontsubdir=$(fontdir)/dev$(DEV) + +all install install_bin install_data TAGS depend distfiles uninstall_sub: + +install: install_bin install_data +uninstall: uninstall_sub +pure: + +.PHONY: all clean distclean mostlyclean realclean extraclean depend distfiles +.PHONY: install install_bin install_data +.PHONY: uninstall uninstall_sub +.PHONY: pure + +mostlyclean: + -rm -f $(MOSTLYCLEANFILES) + +clean: + -rm -f $(CLEANFILES) $(MOSTLYCLEANFILES) + +distclean: + -rm -f $(DISTCLEANFILES) $(CLEANFILES) $(MOSTLYCLEANFILES) + +realclean: + -rm -f $(REALCLEANFILES) $(DISTCLEANFILES) $(CLEANFILES) \ + $(MOSTLYCLEANFILES) + +extraclean: + -rm -f $(DISTCLEANFILES) $(CLEANFILES) $(MOSTLYCLEANFILES) \ + \#* *~ =* core junk grot old temp tmp tem + +.SUFFIXES: +.SUFFIXES: .o .cc .c .y .man .n + +.cc.o: + $(COMPILE.cc) $< + +.c.o: + $(COMPILE.c) $< + +.y.cc: + if test -n "$(YTABH)"; then \ + $(YACC) $(YACCFLAGS) -d $<; \ + else \ + $(YACC) $(YACCFLAGS) $<; \ + fi + mv y.tab.c $@ +# Avoid ending up with two versions of $(YTABH). + if test -n "$(YTABH)"; then \ + if test -f $(srcdir)/$(YTABH); then \ + rm -f $(YTABH); \ + mv y.tab.h $(srcdir)/$(YTABH); \ + else \ + mv y.tab.h $(YTABH); \ + fi; \ + fi + +.man.n: + @echo Making $@ from $< + @-rm -f $@ + @sed -e "s;@FONTDIR@;$(fontdir);g" \ + -e "s;@FONTPATH@;$(fontpath);g" \ + -e "s;@MACRODIR@;$(tmacdir);g" \ + -e "s;@MACROPATH@;$(tmacpath);g" \ + -e "s;@DEVICE@;$(DEVICE);g" \ + -e "s;@DEFAULT_INDEX@;$(indexdir)/$(indexname);g" \ + -e "s;@DEFAULT_INDEX_NAME@;$(indexname);g" \ + -e "s;@INDEX_SUFFIX@;$(indexext);g" \ + -e "s;@COMMON_WORDS_FILE@;$(common_words_file);g" \ + -e "s;@MAN1EXT@;$(man1ext);g" \ + -e "s;@MAN5EXT@;$(man5ext);g" \ + -e "s;@MAN7EXT@;$(man7ext);g" \ + -e "s;@TMAC_S_PREFIX@;$(tmac_s_prefix);g" \ + -e "s;@TMAC_M_PREFIX@;$(tmac_m_prefix);g" \ + -e "s;@TMAC_MDIR@;$(tmacdir)/mm;g" \ + -e "s;@BROKEN_SPOOLER_FLAGS@;$(BROKEN_SPOOLER_FLAGS);g" \ + -e "s;@VERSION@;`cat $(srcdir)/../VERSION`;g" \ + -e "s;@MDATE@;`$(SHELL) $(srcdir)/../mdate.sh $<`;g" \ + -e "s;@g@;$(g);g" \ + -e "s;@G@;`echo $(g) | tr [a-z] [A-Z]`;g" \ + $< >$@ + +.PHONY: install_man +install_man: + -test -d $(manroot) || mkdir $(manroot) + -test -d $(man1dir) || mkdir $(man1dir) + @-pages="$(MAN1)"; \ + for p in $$pages; do \ + prog=`basename $$p .n`; \ + target=$(man1dir)/$(NAMEPREFIX)$$prog.$(man1ext); \ + rm -f $$target; \ + echo $(INSTALL_DATA) $$p $$target; \ + $(INSTALL_DATA) $$p $$target; \ + done + -test -d $(man5dir) || mkdir $(man5dir) + @-pages="$(MAN5)"; \ + for p in $$pages; do \ + target=$(man5dir)/`basename $$p .n`.$(man5ext); \ + rm -f $$target; \ + echo $(INSTALL_DATA) $$p $$target; \ + $(INSTALL_DATA) $$p $$target; \ + done + -test -d $(man7dir) || mkdir $(man7dir) + @-pages="$(MAN7)"; \ + for p in $$pages; do \ + target=$(man7dir)/`basename $$p .n`.$(man7ext); \ + rm -f $$target; \ + echo $(INSTALL_DATA) $$p $$target; \ + $(INSTALL_DATA) $$p $$target; \ + done + +.PHONY: uninstall_man +uninstall_man: + @-pages="$(MAN1)"; \ + for p in $$pages; do \ + target=$(man1dir)/$(NAMEPREFIX)`basename $$p .n`.$(man1ext); \ + echo rm -f $$target; \ + rm -f $$target; \ + done + @-pages="$(MAN5)"; \ + for p in $$pages; do \ + target=$(man5dir)/`basename $$p .n`.$(man5ext); \ + echo rm -f $$target; \ + rm -f $$target; \ + done + @-pages="$(MAN7)"; \ + for p in $$pages; do \ + target=$(man7dir)/`basename $$p .n`.$(man7ext); \ + echo rm -f $$target; \ + rm -f $$target; \ + done + +.PHONY: install_prog +install_prog: + -test -d $(bindir) || mkdir $(bindir) + rm -f $(bindir)/$(NAMEPREFIX)$(PROG) + $(INSTALL_PROGRAM) $(PROG) $(bindir)/$(NAMEPREFIX)$(PROG) + +.PHONY: uninstall_prog +uninstall_prog: + -rm -f $(bindir)/$(NAMEPREFIX)$(PROG) + +.PHONY: install_dev +install_dev: + -test -d $(datadir) || mkdir $(datadir) + -test -d $(datasubdir) || mkdir $(datasubdir) + -test -d $(fontdir) || mkdir $(fontdir) + -test -d $(fontsubdir) || mkdir $(fontsubdir) + -if test -d $(srcdir)/generate; then \ + test -d $(fontsubdir)/generate || mkdir $(fontsubdir)/generate; \ + fi + -for f in $(DEVFILES); do \ + rm -f $(fontsubdir)/$$f; \ + if test -f $$f; then \ + $(INSTALL_DATA) $$f $(fontsubdir)/$$f; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$f $(fontsubdir)/$$f; \ + fi; \ + done + +.PHONY: uninstall_dev +uninstall_dev: + -for f in $(DEVFILES); do rm -f $(fontsubdir)/$$f; done + -if test -d $(fontsubdir)/generate; then \ + rmdir $(fontsubdir)/generate; \ + fi + -rmdir $(fontsubdir) + +.PHONY: depend_src +depend_src: depend.temp + mv depend.temp Makefile.dep + +depend.temp: FORCE + > depend.temp; + test -z "$(CCSRCS)$(YTABC)" \ + || $(CCC) $(ALL_CCFLAGS) -MM $(CCSRCS) $(YTABC) >>depend.temp + test -z "$(CSRCS)" \ + || $(CC) $(ALL_CFLAGS) -MM $(CSRCS) >>depend.temp + if test -n "$(YTABH)"; then \ + sed -e 's|$(YTABH)|$(YTABC)|g' depend.temp >depend.temp1; \ + mv depend.temp1 depend.temp; \ + fi + +.PHONY: TAGS_src +TAGS_src: + $(ETAGS) $(ETAGSFLAGS) $(CCSRCS) $(CSRCS) + test -z "$(GRAM)$(HDRS)" \ + || $(ETAGS) $(ETAGSFLAGS) -a $(ETAGSCCFLAG) $(GRAM) $(HDRS) + +Makefile: + -rm -f Makefile + echo srcdir=$(srcdir) >>Makefile + echo VPATH=$(VPATH) >>Makefile + cat $(MAKEFILEPARTS) /dev/null >>Makefile + +FORCE: + +.NOEXPORT: diff --git a/contrib/groff/Makefile.cpg b/contrib/groff/Makefile.cpg new file mode 100644 index 000000000000..1b9f66f0da3c --- /dev/null +++ b/contrib/groff/Makefile.cpg @@ -0,0 +1,20 @@ +# Makefile.cpg +MAKEFILEPARTS=$(srcdir)/../Makefile.comm ../Makefile.cfg \ + $(srcdir)/Makefile.sub $(srcdir)/../Makefile.cpg $(srcdir)/Makefile.dep + +all: $(PROG) $(MANPAGES) + +$(PROG): $(OBJS) $(XLIBS) + $(LINK.c) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB) + +install_bin: install_prog +install_prog: $(PROG) +install_data: install_man +install_man: $(MANPAGES) +uninstall_sub: uninstall_prog uninstall_man +depend: depend_src +depend.temp: $(GENSRCS) $(YTABC) +distfiles: $(YTABC) +TAGS: TAGS_src +TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS) +Makefile: $(MAKEFILEPARTS) diff --git a/contrib/groff/Makefile.dev b/contrib/groff/Makefile.dev new file mode 100644 index 000000000000..ae9a67226ff6 --- /dev/null +++ b/contrib/groff/Makefile.dev @@ -0,0 +1,4 @@ +all: $(DEVFILES) +install_data: install_dev +uninstall_sub: uninstall_dev +install_dev: $(DEVFILES) diff --git a/contrib/groff/Makefile.in b/contrib/groff/Makefile.in new file mode 100644 index 000000000000..58da8bc8f40d --- /dev/null +++ b/contrib/groff/Makefile.in @@ -0,0 +1,396 @@ +# Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. +# Written by James Clark (jjc@jclark.com) +# +# This file is part of groff. +# +# groff is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2, or (at your option) any later +# version. +# +# groff is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License along +# with groff; see the file COPYING. If not, write to the Free Software +# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Define `page' to be letter if your PostScript printer uses 8.5x11 +# paper (USA) and define it to be A4, if it uses A4 paper (rest of the +# world). +PAGE=@PAGE@ + +# Normally the Postscript driver, grops, produces output that conforms +# to version 3.0 of the Adobe Document Structuring Conventions. +# Unfortunately some spoolers and previewers can't handle such output. +# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to +# make its output acceptable to such programs. This variable controls +# only the default behaviour of grops; the behaviour can be changed at +# runtime by the grops -b option (and so by groff -P-b). +# Use a value of 0 if your spoolers and previewers are able to handle +# conforming PostScript correctly. +# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated; +# this is needed for early versions of TranScript that get confused by +# anything between the %%EndProlog line and the first %%Page: comment. +# Add 2 if lines in included files beginning with %! should be +# stripped out; this is needed for the OpenWindows 2.0 pageview previewer. +# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be +# stripped out of included files; this is needed for spoolers that +# don't understand the %%{Begin,End}Document comments. I suspect this +# includes early versions of TranScript. +# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0 +# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint +# with a printer that requires page reversal. +BROKEN_SPOOLER_FLAGS=@BROKEN_SPOOLER_FLAGS@ + +# DEVICE is the default device. +DEVICE=ps + +# PSPRINT is the command to use for printing a PostScript file, +# for example `lpr'. +PSPRINT=@PSPRINT@ + +# DVIPRINT is the command to use for printing a TeX dvi file, +# for example `lpr -d'. +DVIPRINT=@DVIPRINT@ + +# Prefix for names of programs that have Unix counterparts. +# For example, if `g' is `g' then troff will be installed as +# gtroff. This doesn't affect programs like grops or groff that have +# no Unix counterparts. Note that the groff versions of eqn and tbl +# will not work with Unix troff. +g=@g@ + +# Common prefix for installation directories. +# Used in definitions of exec_prefix, datasubdir, fontpath, manroot. +# This must already exist when you do make install. +prefix=@prefix@ + +exec_prefix=@exec_prefix@ + +# bindir says where to install executables. +bindir=$(exec_prefix)/bin + +# datasubdir says where to install data files +datadir=$(prefix)/share +datasubdir=$(datadir)/groff + +# fontdir says where to install dev*/*. +fontdir=$(datasubdir)/font + +# fontpath says where to look for dev*/*. +fontpath=.:$(fontdir):/usr/lib/font + +# tmacdir says where to install macros. +tmacdir=$(datasubdir)/tmac + +# tmacpath says where to look for macro files. +tmacpath=.:$(tmacdir) + +# sys_tmac_prefix is prefix (if any) for system macro packages +sys_tmac_prefix=@sys_tmac_prefix@ + +# tmac_wrap is list of system macro packages that should be made +# available to groff by creating a corresponding macro package +# in the groff macro directory that references the system macro +# package. +tmac_wrap=@tmac_wrap@ + +# If there is a groff version of a macro package listed in $(tmac_wrap), +# then the groff version will be installed with a prefix of this. +# Don't make this empty. +tmac_prefix=g + +# The groff -mm macros will be available as -m($(tmac_m_prefix)m. +tmac_m_prefix=\ + `for i in $(tmac_wrap) ""; do case "$$i" in m) echo $(tmac_prefix);; esac; done` +# The groff -ms macros will be available as -m($(tmac_m_prefix)s. +tmac_s_prefix=\ + `for i in $(tmac_wrap) ""; do case "$$i" in s) echo $(tmac_prefix);; esac; done` +# The groff -man macros will be available as -m($(tmac_m_prefix)an. +tmac_an_prefix=\ + `for i in $(tmac_wrap) ""; do case "$$i" in an) echo $(tmac_prefix);; esac; done` + +# Extension to be used for refer index files. Index files are not +# sharable between different architectures, so you might want to use +# different suffixes for different architectures. Choose an extension +# that doesn't conflict with refer or any other indexing program. +indexext=.i + +# Directory containing the default index for refer. +indexdir=/usr/dict/papers + +# The filename (without suffix) of the default index for refer. +indexname=Ind + +# common_words_file is a file containing a list of common words. +# If your system provides /usr/lib/eign it will be copied onto this, +# otherwise the supplied eign file will be used. +common_words_file=$(datasubdir)/eign + +# manroot is the root of the man page directory tree. +manroot=$(prefix)/man + +# man1ext is the man section for user commands. +man1ext=1 +man1dir=$(manroot)/man$(man1ext) + +# man5ext is the man section for file formats. +man5ext=5 +man5dir=$(manroot)/man$(man5ext) + +# man7ext is the man section for macros. +man7ext=7 +man7dir=$(manroot)/man$(man7ext) + +# DEFINES should include the following: +# -DHAVE_MMAP if you have mmap() and <sys/mman.h> +# -DARRAY_DELETE_NEEDS_SIZE if your C++ doesn't understand `delete []' +# -DHAVE_SYS_SIGLIST if you have sys_siglist[] +# -DWCOREFLAG=0200 if the 0200 bit of the status returned by +# wait() indicates whether a core image was +# produced for a process that was terminated +# by a signal +# -DHAVE_UNISTD_H if you have <unistd.h> +# -DHAVE_CC_OSFCN_H if you have a C++ <osfcn.h> +# -DHAVE_DIRENT_H if you have <dirent.h> +# -DHAVE_LIMITS_H if you have <limits.h> +# -DHAVE_CC_LIMITS_H if you have a C++ <limits.h> +# -DHAVE_SYS_DIR_H if you have <sys/dir.h> +# -DHAVE_STDLIB_H if you have <stdlib.h> +# -DHAVE_RENAME if you have rename() +# -DHAVE_MKSTEMP if you have mkstemp() +# -DSTDLIB_H_DECLARES_GETOPT if your C++ <stdlib.h> declares getopt() +# -DUNISTD_H_DECLARES_GETOPT if your C++ <unistd.h> declares getopt() +# -DSTDLIB_H_DECLARES_PUTENV if your C++ <stdlib.h> declares putenv() +# -DSTDIO_H_DECLARES_POPEN if your C++ <stdio.h> declares popen() +# -DTRADITIONAL_CPP if your C++ compiler uses a traditional +# (Reiser) preprocessor. +# -DLONG_FOR_TIME_T if localtime() takes a long * not a time_t * +# -DHAVE_STRUCT_EXCEPTION if <math.h> defines struct exception +# -DRETSIGTYPE=int if signal handlers return int not void +DEFINES=@DEFS@ + +# Include fmod.o, strtol.o, getcwd.o, strerror.o, putenv.o in LIBOBJS if +# your C library is missing the corresponding function. +LIBOBJS=@LIBOBJS@ + +# CCC is the compiler for C++ (.cc) files. +CCC=@CXX@ +CC=@CC@ +# CCDEFINES are definitions for C++ compilations. +CCDEFINES=$(DEFINES) +# CDEFINES are definitions for C compilations. +CDEFINES=$(DEFINES) + +CCFLAGS=@CXXFLAGS@ +CFLAGS=@CFLAGS@ +LDFLAGS= +YACC=@YACC@ +YACCFLAGS=-v + +LIBS=@LIBS@ +RANLIB=@RANLIB@ +INSTALL=@INSTALL@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +INSTALL_DATA=@INSTALL_DATA@ +LN_S=@LN_S@ +AR=ar +ETAGS=etags +ETAGSFLAGS= +# Flag that tells etags to assume C++. +ETAGSCCFLAG=-C +# Full path to perl. +PERLPATH=@PERLPATH@ +# Sed command with which to edit sh scripts. +SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +PURIFY=purify +PURIFYCCFLAGS= +#PURIFYCCFLAGS=-g++=yes \ +# -collector=`dirname \`$(CCC) -print-libgcc-file-name\``/ld + +# Passing down MAKEOVERRIDES prevents $(MAKE) from containing a second +# copy of $(MDEFINES) when making individual directories; this could +# cause the argument list to become too long on some systems. +MDEFINES="MAKEOVERRIDES=$(MAKEOVERRIDES)" \ + "PAGE=$(PAGE)" "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \ + "DEVICE=$(DEVICE)" "PSPRINT=$(PSPRINT)" "DVIPRINT=$(DVIPRINT)" \ + "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "bindir=$(bindir)" \ + "g=$(g)" "datadir=$(datadir)" "datasubdir=$(datasubdir)" \ + "fontdir=$(fontdir)" "fontpath=$(fontpath)" \ + "tmacdir=$(tmacdir)" "tmacpath=$(tmacpath)" \ + "indexext=$(indexext)" "indexdir=$(indexdir)" \ + "indexname=$(indexname)" "common_words_file=$(common_words_file)" \ + "manroot=$(manroot)" "man1ext=$(man1ext)" "man1dir=$(man1dir)" \ + "man5ext=$(man5ext)" "man5dir=$(man5dir)" \ + "man7ext=$(man7ext)" "man7dir=$(man7dir)" \ + "tmac_wrap=$(tmac_wrap)" "sys_tmac_prefix=$(sys_tmac_prefix)" \ + "tmac_an_prefix=$(tmac_an_prefix)" \ + "tmac_s_prefix=$(tmac_s_prefix)" "tmac_m_prefix=$(tmac_m_prefix)" \ + "CCC=$(CCC)" "CC=$(CC)" "CCDEFINES=$(CCDEFINES)" "CDEFINES=$(CDEFINES)" \ + "CCFLAGS=$(CCFLAGS)" "CFLAGS=$(CFLAGS)" "LDFLAGS=$(LDFLAGS)" \ + "YACC=$(YACC)" "YACCFLAGS=$(YACCFLAGS)" \ + "LIBS=$(LIBS)" "LIBOBJS=$(LIBOBJS)" "RANLIB=$(RANLIB)" "AR=$(AR)" \ + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" "INSTALL_DATA=$(INSTALL_DATA)" \ + "ETAGS=$(ETAGS)" "ETAGSFLAGS=$(ETAGSFLAGS)" "ETAGSCCFLAG=$(ETAGSCCFLAG)" \ + "PERLPATH=$(PERLPATH)" "SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \ + "PURIFY=$(PURIFY)" "PURIFYCCFLAGS=$(PURIFYCCFLAGS)" + +SHELL=/bin/sh +INCDIRS=include +LIBDIRS=libgroff libdriver libbib +CCPROGDIRS=groff troff tbl pic eqn grops grotty grodvi tfmtodit \ + grolj4 hpftodit refer lookbib indxbib lkbib soelim addftinfo +CPROGDIRS=pfbtops psbb +PROGDIRS=$(CCPROGDIRS) $(CPROGDIRS) +DEVDIRS=devps devdvi devascii devlatin1 devX75 devX75-12 devX100 devX100-12 \ + devlj4 +OTHERDIRS=man tmac afmtodit grog nroff mm +ALLDIRS=$(INCDIRS) $(LIBDIRS) $(PROGDIRS) $(DEVDIRS) $(OTHERDIRS) +EXTRADIRS=devps/generate devdvi/generate xditview doc +DISTDIRS=$(ALLDIRS) $(EXTRADIRS) +TARGETS=all install install_bin install_data clean distclean mostlyclean \ + realclean extraclean distfiles TAGS depend uninstall_sub + +do=all +dodirs=$(ALLDIRS) dot +# Default target for subdir_Makefile +subdir=troff + + +$(TARGETS): + @$(MAKE) $(MDEFINES) do=$@ $(dodirs) + +dot: FORCE + @$(MAKE) $(MDEFINES) srcdir=$(srcdir) VPATH=$(srcdir) \ + -f $(srcdir)/Makefile.comm -f $(srcdir)/Makefile.sub $(do) + +$(LIBDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.lib -f $$srcdir/Makefile.dep $(do) + +$(CPROGDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.cpg -f $$srcdir/Makefile.dep $(do) + +$(CCPROGDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.ccpg -f $$srcdir/Makefile.dep $(do) + +$(DEVDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.dev $(do) + +$(INCDIRS) $(OTHERDIRS): FORCE + @if test $(srcdir) = .; \ + then srcdir=.; \ + else srcdir=`cd $(srcdir); pwd`/$@; \ + fi; \ + test -d $@ || mkdir $@; \ + cd $@; \ + $(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \ + -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ + -f $$srcdir/../Makefile.man $(do) + +version=`cat $(srcdir)/VERSION` + +.PHONY: dist +dist: + -rm -fr tmp + mkdir tmp + for d in $(DISTDIRS); do \ + mkdir tmp/$$d; \ + done + srcdir=`cd $(srcdir); pwd`; \ + cd tmp; \ + $(LN_S) ../Makefile .; \ + $(LN_S) $$srcdir/* . 2>/dev/null || true; \ + for d in $(DISTDIRS); do \ + (cd $$d; $(LN_S) $$srcdir/$$d/* . 2>/dev/null || true); \ + done; \ + $(MAKE) srcdir=$$srcdir VPATH=$$srcdir extraclean; \ + for d in $(EXTRADIRS); do \ + (cd $$d; $(MAKE) extraclean); \ + done; \ + rm -f Makefile; \ + $(LN_S) $$srcdir/Makefile.init Makefile + mv tmp groff-$(version) + tar cfh - groff-$(version) | gzip -c >groff-$(version).tar.gz + rm -fr groff-$(version) + +# $(PROGDIRS): libgroff +# grops grotty grodvi: libdriver +# refer lookbib indxbib lkbib: libbib +# $(LIBDIRS) $(PROGDIRS): include + +.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE + +subdir_Makefile: Makefile.cfg + $(MAKE) do=Makefile $(subdir) + +Makefile.cfg: Makefile + >Makefile.cfg + for var in $(MDEFINES); do \ + echo "$$var" >>Makefile.cfg; \ + done + +depend: srcdir_must_be_dot + +.PHONY: srcdir_must_be_dot +srcdir_must_be_dot: + @test "X$(srcdir)" = "X." \ + || (echo This target can only be made in the source directory; \ + exit 1) + +Makefile: Makefile.in + $(SHELL) config.status + +.PHONY: uninstall +uninstall: uninstall_sub uninstall_dirs + +.PHONY: uninstall_dirs +uninstall_dirs: +# Use rmdir here so that the directories are only removed if they're empty + -rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \ + $(tmacdir) $(fontdir) $(bindir) $(datasubdir) $(datadir) + + +.PHONY: check +check: + +FORCE: + +.NOEXPORT: diff --git a/contrib/groff/Makefile.init b/contrib/groff/Makefile.init new file mode 100644 index 000000000000..5e09c198414b --- /dev/null +++ b/contrib/groff/Makefile.init @@ -0,0 +1,25 @@ +# Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. +# Written by James Clark (jjc@jclark.com) +# +# This file is part of groff. +# +# groff is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2, or (at your option) any later +# version. +# +# groff is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License along +# with groff; see the file COPYING. If not, write to the Free Software +# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +SHELL=/bin/sh + +.PHONY: all +all: + $(SHELL) configure + $(MAKE) all diff --git a/contrib/groff/Makefile.lib b/contrib/groff/Makefile.lib new file mode 100644 index 000000000000..019ba6af2105 --- /dev/null +++ b/contrib/groff/Makefile.lib @@ -0,0 +1,14 @@ +LIBCLEAN=lib$(LIB).a +MAKEFILEPARTS=$(srcdir)/../Makefile.comm ../Makefile.cfg \ + $(srcdir)/Makefile.sub $(srcdir)/../Makefile.lib $(srcdir)/Makefile.dep + +all: lib$(LIB).a + +lib$(LIB).a: $(OBJS) + $(AR) r $@ $? + $(RANLIB) $@ + +depend: depend_src +depend.temp: $(GENSRCS) +TAGS: $(CCSRCS) $(CSRCS) +Makefile: $(MAKEFILEPARTS) diff --git a/contrib/groff/Makefile.man b/contrib/groff/Makefile.man new file mode 100644 index 000000000000..59378de01274 --- /dev/null +++ b/contrib/groff/Makefile.man @@ -0,0 +1,4 @@ +all: $(MANPAGES) +install_data: install_man +install_man: $(MANPAGES) +uninstall_sub: uninstall_man diff --git a/contrib/groff/Makefile.sub b/contrib/groff/Makefile.sub new file mode 100644 index 000000000000..518233e27616 --- /dev/null +++ b/contrib/groff/Makefile.sub @@ -0,0 +1,7 @@ +DISTCLEANFILES=config.status Makefile +CLEANADD=Makefile.cfg conftest* + +distfiles: configure + +configure: configure.in aclocal.m4 + cd $(srcdir); autoconf diff --git a/contrib/groff/NEWS b/contrib/groff/NEWS new file mode 100644 index 000000000000..0e0e1fcadf84 --- /dev/null +++ b/contrib/groff/NEWS @@ -0,0 +1,729 @@ +This file describes recent user-visible changes in groff. Bug fixes +are not described. There are more details in the man pages. + +VERSION 1.10 +============ + +The directory where data files are installed has been changed from +/usr/local/lib/groff to /usr/local/share/groff to comply with the +latest GNU coding standards. + +By default groff programs with Unix equivalents are installed with a +"g" prefix unless there is an existing (non-groff) troff installation. + +A new approach is used to make system macro packages available to +groff. Instead of simply including /usr/lib/tmac in the list of +directories searched by groff, the installation process creates for +each system macro package a wrapper macro package in the groff macro +directory that references the system macro package. The groff macro +packages are now installed with a leading "g" prefix if there is a +system version of the same macro package, and otherwise without the +"g" prefix, with the exception that the groff version of -me which is +always installed as -me. + +There is a new device, lj4, for the HP LaserJet 4 (and PCL5 +compatibles). + +Groff +----- + +groff has a -S option that prevents the use of unsafe features in pic +and troff. This uses a new -S option of pic and the -msafer macros +for troff. + +Troff +----- + +The `blm' request specifies a macro to be invoked when a blank line is +encountered. + +Pic +--- + +A -S (safer) option disables the sh command. + +Grops +----- + +The -m option enables manual feed. + +VERSION 1.09 +============ + +\(rn will now produce a character that has the traditional metrics, +and will form corners with \(ul and \(br. This means that it will not +align properly with \(sr. Instead there's a new character +\[radicalex] which aligns with \(sr; this is used by eqn for doing +square roots. + +Troff +----- + +The `pso' request allows you to read from the standard output of a +command. + +Grops +----- + +The PSPIC macro has options to allow the horizontal alignment of the +graphic to be specified. + +VERSION 1.08 +============ + +Troff +----- + +The escape sequence \V[xxx] will interpolate the value of the +environment variable xxx. + +Tbl +--- + +The decimalpoint option can be used to specify the character to be +recognized as the decimal point character in place of the default +period. + +VERSION 1.07 +============ + +Groff +----- + +The environment variable GROFF_COMMAND_PREFIX can be used to control +whether groff looks for `gtroff' or `troff' (similarily for the +preprocessors.) + +Troff +----- + +Multilingual hyphenation is supported by new `hpf' and `hla' requests, +and by a `\n[.hla]' number register. The -H option has been removed. +Files of hyphenation patterns can have comments. + +When a font cannot be found, troff gives a warning (of type `font', +enabled by default) instead of an error. + +There's a new request `trnt' that's like `tr' except that it doesn't +apply to text transparently throughput into a diversion with \!. + +Tbl +--- + +There is a `nokeep' option which tells tbl not to use diversions to +try to keep the table on one page. + +Eqn +--- + +Setting the parameter `nroff' to a non-zero value causes `ndefine' to +behave like `define' and `tdefine' to be ignored. This is done by +eqnrc when the current device is ascii or latin1. There's a `neqn' +script that just does `eqn -Tascii'. + +Grotty +------ + +grotty uses whatever page length was specified using the `pl' request +rather than using the paperlength command in the DESC file. The +paperwidth command in the DESC file is also ignored. + +VERSION 1.06 +============ + +The programs in groff that have Unix counterparts can now be installed +without a leading `g' prefix. See the `g' variable in the Makefile. + +The g?nroff script simulates the nroff command using groff. + +New special characters \(+h, \(+f, \(+p, \(Fn, \(Bq, \(bq, \(aq, \(lz, +\(an. See groff_char(7). + +^L is now a legal input character. + +Groff +----- + +The Xps pseudo-device has disappeared. Instead there is a new -X +option that tells groff to use gxditview instead of the usual +postprocessor. (So instead of -TXps, use -XTps or just -X if your +default device is ps.) + +The postprocessor to be used for a particular device is now specified +by a `postpro' command in the DESC file rather than being compiled +into groff. Similarly the command to be used for printing (with the +-l option) is now specified by a `print' command in the DESC file. + +The groff command no longer specifies eqnchar as an input file for +eqn. Instead eqn automatically loads a file `eqnrc'. The groff +command no longer passes the -D option to eqn. Instead eqnrc sets the +draw_lines parameter. + +The groff command no longer tells troff to load a device-specific +macro file. This is handled instead by the `troffrc' file, which is +always loaded by troff. + +The shell script version of groff has been removed. + +Troff +----- + +The `rchar' request removes a character definition established with `char'. + +Compatibility mode is disabled and the escape character is set to `\' +while a character definition is being processed. + +The `\#' escape sequence is like `\"' except that the terminating +newline is ignored. + +The `shc' request tells troff which character to insert (instead of +the default \(hy) when a word is hyphenated at a line break. + +A font name of 0 (zero) in the DESC file will cause no font to be +mounted on the corresponding font position. This is useful for +arranging that special fonts are mounted on positions on which users +are not likely explicitly to mount fonts. All groff devices now avoid +initially mounting fonts on positions 5-9. + +The `do' request allows a single request or macro to be interpreted +with compatibility mode disabled. + +troff automatically loads a file `troffrc' before any other input file. +This can be prevented with the -R option. This file is responsible +for loading the device-specific macros. + +Pic +--- + +The -x option has been removed and a -n option has been added. By +default, pic now assumes that the postprocessor supports groff +extensions. The -n option tells pic to generate output that works +with ditroff drivers. The -z option now applies only to TeX mode. + +The -p option has been removed. Instead if the -n option is not +specified, pic generates output that uses \X'ps: ...' if the \n(0p +register is non-zero and tmac.ps sets this register to 1. + +In places where you could 1st or 5th you can now say `i'th or `i+1'th +(the quotes are required). + +Eqn +--- + +Eqn now automatically reads a file `eqnrc' from the macro directory. +This performs the same role that the eqnchar files used to. This can +be prevented by the -R option. + +Setting the draw_lines parameter to a non-zero value causes lines to +be drawn using \D rather than \l. The -D option is now obsolete. + +`uparrow', `downarrow' and `updownarrow' can be used with `left' and +`right'. + +The amount of extra space added before and after lines containing +equations can be controlled using the `body_height' and `body_depth' +parameters. + +Grops +----- + +Font description files have been regenerated from newer AFM files. +You can get access to the additional characters present in the text +fonts in newer PostScript printers by using -mpsnew. + +The default value of the -b option is specified by a `broken' command +in the DESC file. + +With the -g option, grops will generate PostScript code that guesses +the page height. This allows documents to be printed on both letter +(8.5x11) and A4 paper without change. + +Grodvi +------ + +ISO Latin-1 characters are available with -Tdvi. Format groff_char(7) +with groff -Tdvi for more information. + +Grotty +------ + +The -mtty-char macros contain additional character definitions for +use with grotty. + +Macros +------ + +In previous releases the groff -me macros treated the $r and $R number +registers in a way that was incompatible with the BSD -me macros. The +reason for this was that the approach used by the BSD -me macros does +not work with low resolution devices such as -TX75 and -TX100. +However, this caused problems with existing -me documents. In this +release, the vertical spacing is controlled by the $v and $V registers +which have the same meaning as $r and $R in earlier groff releases. +In addition, if the $r or $R register is set to a value that would be +correct for for the BSD -me macros and a low resolution device is not +being used, then an appropriate value for the $v or $V register will +be derived from the $r or $R register. + +The groff -me macros work with -C and (I think) with Unix troff. + +For backward compatibility with BSD -me, the \*{ and \*} strings are +also available as \*[ and \*]. Of course, \*[ will only be usable +with -C. + +The \*T string has been deleted. Use \*(Tm instead. + +Xditview +-------- + +The `n', Space and Return keys are bound to the Next Page action. The +`p', BackSpace and Delete keys are bound to the Previous Page action. +The `q' key is bound to the Quit action. + +The `r' key is bound to a rerasterize action that reruns groff, and +redisplays the current page. + +VERSION 1.05 +============ + +Pic +--- + +There is a alternative assignment operator `:=' which interacts +differently with blocks. + +There is a new command `command', which allows the values of variables +to be passed through to troff or TeX. + +The `print' command now accepts multiple arguments. + +String comparison expressions (using `==' or `!=') are allowed in more +contexts. + +Grotty +------ + +Horizontal and vertical lines drawn with \D'l ...' will be rendered +using -, | and + characters. This is intended to give reasonable +results with boxed tables. It won't work well with pic. + +Macros +------ + +The -mdoc macros have been upgraded to the version in the second +Berkeley networking release. This version is not completely +compatible with earlier versions; the old version is still available +as -mdoc.old. The grog script has been enhanced so that it can +usually determine whether a document requires the old or new versions. + +With -TX75, -TX100 and -TXps, the PSPIC macro will produce a box +around where the picture would appear with -Tps. + +VERSION 1.04 +============ + +An implementation of the -mm macros is included. + +The directory in which temporary files are created can be controlled +by setting the GROFF_TMPDIR or TMPDIR environment variables. + +Pic +--- + +Some MS-DOS support (see pic/make-dos-dist). + +Grops +----- + +There are two new \X commands (\X'ps: invis' and \X'ps: endinvis') +which make it possible to have substitute characters that are +displayed when previewing with -TXps but ignored when printing with +grops. + +Xditview +-------- + +Support for scalable fonts. + +VERSION 1.03 +============ + +No changes other than bug fixes. + +VERSION 1.02 +============ + +There is an implementation of refer and associated programs. groff -R +preprocesses with grefer; no mechanism is provided for passing +arguments to grefer because most grefer options have equivalent +commands which can be included in the file. grog also supports refer. + +There is an alternative perl implementation of the grog script. + +The code field in lines in the charset section of font description +files is now allowed to contain an arbitrary integer (previously it +was required to lie between 0 and 255). Currently grops and grodvi +use only the low order 8 bits of the value. Grodvi will use the +complete value; however, this is unlikely to be useful with +traditional TeX tools (.tfm files only allow 8 bit character codes.) + +Left and right double quotes can be obtained with \(lq and \(rq +respectively. + +There is a new program called pfbtops which translates PostScript +fonts in pfb format to ASCII. + +A slightly modified version of the Berkeley tmac.doc is included. + +Troff +----- + +In long escape names the closing ] is now required to be at the same +input level as the opening [. + +The \A'S' escape sequence returns 1 or 0 according as S is or is not +suitable for use as a name. + +\~ produces an unbreakable space that can be stretched when the line +is adjusted. + +The `mso' request is like the `so' request except that it searches for +the file in the same directories in which tmac.X is searched for when +the -mX option is given. + +The escape sequence `\R' is similar to the `nr' request. + +Eqn +--- + +A new `special' primitive allows you to add new types of unary +constructs by writing a troff macro. + +Pic +--- + +The implementation no longer uses gperf. + +Grops +----- + +The compile-time -DBROKEN_SPOOLER option has been replaced by a +BROKEN_SPOOLER_FLAGS option. This allows more precise control over +how grops should workaround broken spoolers and previewers. There is +a new -b option that can change this at run-time. + +Grops now generates PostScript that complies with version 3.0 of the +Document Structuring Convention. + +The resource management component of grops (the part that deals with +imported documents and downloadable fonts) has been rewritten and now +supports version 3.0 of the Document Structuring Conventions. The +%%DocumentFonts comment is no longer supported; you must use the +%%Document{Needed,Supplied}{Fonts,Resources} comments instead +(or as well.) + +tmac.psatk contains some macros that support the mechanism used by the +Andrew Toolkit for including PostScript graphics in troff documents. + +Xditview +-------- + +Parts of xditview have been rewritten so that it can be used with the +output of gtroff -Tps. groff -TXps will run gtroff -Tps with +gxditview. + +There is a new menu entry `Print' which brings up a dialog box for +specifying a command with which the file being previewed should be +printed. + +Xditview now uses imake. + +VERSION 1.01 +============ + +The groff command now understands the gtroff `-a' and `-i' options. + +With the `m' and `n' scale indicators, the scale factor is rounded +horizontally before being applied. This makes (almost) no difference +for devices with `hor' equal to 1, but it makes groff with -Tascii or +-Tlatin1 behave more like nroff in its treatment of these scale +indicators. Accordingly tmac.tty now calls the `nroff' request so +that the `n' condition will be true. + +The device-specific macros (tmac.ps, tmac.dvi, tmac.tty and tmac.X) +have been made to work at least somewhat with -C. In particular the +special characters defined by these macros now work with -C. + +groff -Tdvi -p will now pass pic the -x flag; this will enable filling +of arrowheads and boxes, provided that your dvi driver supports the +latest version of the tpic specials. + +Eqn +--- + +There is a new `-N' option that tells eqn not to allow newlines in +delimiters. This allows eqn to recover better from missing closing +delimiters. The groff command will pass on a `-N' option to eqn. + +Grops +----- + +You can now use psfig with grops. See the file ps/psfig.diff. I do +not recommend using psfig for new documents. + +The command \X'ps: file F' is similar to \X'ps: exec ...' except that +the PostScript code is read from the file F instead of being contained +within the \X command. This was added to support psfig. + +Grodvi +------ + +There are font files HB and HI corresponding to cmsssbx10 and cmssi10. + +Macros +------ + +The groff -me macros now work with the -C option. As a result, they +may also work with Unix nroff/troff. + +In -me, the $r and $R number registers now contain the line spacing as +a percentage of the pointsize expressed in units (normally about 120). +The previous definition was useless with low resolution devices such +as X75 and X100. + +VERSION 1.00 +============ + +A -ms-like macro-package is now included. + +The name for the Icelandic lowercase eth character has been changed +from \(-d to \(Sd. + +Troff +----- + +There is a new request `nroff', which makes the `n' built-in condition +true and the `t' built-in condition false; also a new request `troff' +which undoes the effect of the `nroff' request. This is intended only +for backward compatibility: it is usually better to test \n(.H or +\n(.V or to use the `c' built-in condition. + +The \R escape sequence has been deleted. Use \E instead. + +There are `break' and `continue' requests for use with the `while' +request. + +There is a request `hym' that can ensure that when the current +adjustment mode is not `b' a line will not be hyphenated if it is no +more than a given amount short, and a request `hys' that can ensure +that when the current adjustment mode is `b' a line will not be +hyphenated if it can be justified by adding no more than a given +amount of extra space to each word space. + +There is a request `rj' similar to `ce' that right justifies lines. + +A warning of type `space' will be given when a call is made to an +undefined request or macro with a name longer than two characters, and +the first two characters of the name make a name that is defined. +This is intended to find places where a space has been omitted been a +request or macro and its argument. This type of warning is enabled by +default. + +Pic +--- + +A comma is permitted between the arguments to the `reset' command. + +For use with TeX, there is a new `-c' option that makes gpic treat +lines beginning with `.' in a way that is more compatible with tpic +(but ugly). + +Eqn +--- + +It is no longer necessary to add `space 0' at the beginning of +complicated equations inside pictures. + +`prime' is now treated as an ordinary character, as in Unix eqn. The +previous behaviour of `prime' as an operator can now be obtained using +`opprime'. + +Xditview +-------- + +There are two new devices X75-12 and X100-12 which are the same as X75 +and X100 except that they are optimized for documents that use mostly +12 point text. + +VERSION 0.6 +=========== + +The installation process has been refined to make it easy for you to +share groff with someone who has the same type of machine as you but +does not have a C++ compiler. See the end of the INSTALL file for +details. + +There is a man page for the tfmtodit program which explains how to use +your own fonts with groff -Tdvi. + +There is a man page for afmtodit which explains how to use your own +PostScript fonts with groff -Tps. + +The \N escape sequence is now fully supported. It can now be used to +access any character in a font by its output code, even if it doesn't +have a groff name. This is made possible by a convention in the font +files that a character name of `---' refers to an unnamed character. +The drivers now all support the `N' command required for this. The font +description files have been updated to include unnamed characters. + +The `x' command in font description files has been removed: instead +any unknown commands are automatically made available to the drivers. +If you constructed your own font files with an earlier version of +tfmtodit or afmtodit, you must construct them again using the current +version. + +Characters between 0200 and 0237 octal are no longer legal input +characters. Note that these are not used in ISO 8859. + +A command called `grog' has been added, similar to the `doctype' +command described in Kernighan and Pike. + +Groff +----- + +The groff command has some new options: -V prints the pipeline +instead of executing it; -P passes an argument to the postprocessor, +-L passes an argument to the spooler. + +There is a C++ implementation of the groff command. This handles some +things slightly better than the shell script. In particular, it can +correctly handle arguments containing characters that have a special +meaning to the shell; it can give an error message when child +processes other than the last in the pipeline terminate abnormally; +its exit status can take account of the exit statuses of all its child +processes; it is a little more efficient; when geqn is used, it +searches for the eqnchar file in the same way that font metric files +are searched for, rather than expecting to find it in one particular +directory. + +Gtroff +------ + +There is font translation feature: For example, you can tell gtroff to +use font `HR' whenever font `H' is requested with the line + .ftr H HR +This would be useful for a document that uses `H' to refer to +Helvetica. + +There are some new number registers: `.kern' contains the current kern +mode, `.lg' the current ligature mode, `.x' the major version number, +`.y' the minor version number, `.ce' the number of lines to be +centered in the current environment, `.trunc' the amount of vertical +space truncated by the most recently sprung vertical position trap, +`.ne' the amount of vertical space needed in the last `ne' request +that caused a vertical position trap to be sprung. + +The `cf' request now behaves sensibly in a diversion. If used in a +diversion, it will now arrange for the file to be copied to the output +when the diversion is reread. + +There is a new request `trf' (transparent file) similar to `cf', but +more like `\!'. + +There is a new escape sequence `\Y[xxx]', roughly equivalent to +`\X'\*[xxx]'', except that the contents of string or macro xxx are not +interpreted, and xxx may contain newlines. This requires an output +format extension; the drivers have been modified to understand this. +Grops has also been modified to cope with newlines in the arguments to +\X commands; grops has a new \X command mdef, which is like def except +that it has a first argument giving the number of definitions. + +There is a new warning category `escape' which warns about unknown +escape sequences. + +The `fp' request now takes an optional third argument giving the external +name of the font. + +The `\_' character is now automatically translated to `\(ul' as in troff. + +The environment variable `GROFF_HYPHEN' gives the name of the file +containing the hyphenation patterns. + +There is a `\C'xxx'' escape sequence equivalent to `\[xxx]'. + +Characters ", ', ), ], *, \(dg are now initially transparent for the purposes +of end of sentence recognition. + +There is an anti-recursion feature in the `char' request, so you can +say `.char \(bu \s+2\(bu\s-2'. + +The limit on the number of font positions has been removed. +Accordingly `\n[.fp]' never returns 0. + +The restriction on the number of numbered environments has been removed. + +There is a new escape sequence `\E' that makes it possible to +guarantee that an escape sequence won't get interpreted in copy-mode. +The `\R' escape sequence is accordingly now deprecated. + +Gpic +---- + +Arguments of the form `X anything X' (in the `copy thru', `sh', `for', +`if' and `define' constructs) can now be of the form `{ anything }'. + +If the `linethick' variable is negative (as it now is initially), +lines will be drawn with a thickness proportional to the current point +size. + +The `rand' function now takes no arguments and returns a number between +0 and 1. The old syntax is still supported. + +`^' can be used in expressions to indicate exponentiation. + +In the `for' construct the argument to the by clause can be prefixed +by `*' to indicate that the increment is multiplicative. + +A bare expression may be used as an attribute. If the current +direction is `dir', then an attribute `expr' is equivalent to +`dir expr' + +There is a `sprintf' construct that allows numbers to be formatted and used +wherever a quoted string can be used. + +The height of a text object without an explicit height attribute is +the number of text strings associated with the object times the value +of the `textht' variable. + +The maximum height and width of a picture is controlled by the +`maxpswid' and `maxpsht' variables. + +Gtbl +---- + +Gtbl can now handle gracefully the situation where the `ce' request +has been applied to a table. + +Geqn +---- + +The `ifdef' primitive has been generalized. + +A tilde accent can be put underneath a box using `utilde'. This +defined using a general `uaccent' primitive. + +Grops +----- + +There is a new PostScript font downloading scheme which handles font +downloading for imported illustrations. Previously, the name of the +file containing the font was given in the `x download' line in the +groff font metric file. Now, there is a `download' file which says +for each PostScript font name which file contains that font. Grops +can also now handle inter-font dependencies, where one downloadable +font depends on some other (possibly downloadable) font. + +The `T' font has been removed. The characters it used to provide are +now provided by `char' definitions in tmac.ps. TSymbol.ps has also +been removed, and the tweaks it provided are now provided by `char' +definitions. diff --git a/contrib/groff/PROBLEMS b/contrib/groff/PROBLEMS new file mode 100644 index 000000000000..cc879908c95f --- /dev/null +++ b/contrib/groff/PROBLEMS @@ -0,0 +1,548 @@ +This file describes various problems that have been encountered in +compiling, installing and running groff. Suggestions for additions or +other improvements to this file are welcome. + +* I get lots of `numeric overflow' error messages whenever I run +groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler. + +Make sure -DCFRONT_ANSI_BUG is included in DEFINES in the top-level +Makefile. If that doesn't solve the problem, define INT_MIN as +-INT_MAX in libgroff/lib.h. + +* I get errors when I try to compile groff with Sun C++ version 3 or +earlier. + +Groff requires header files that are moderately compatible with AT&T +C++ and ANSI C. With some versions of Sun C++, the supplied header +files need some of the following changes to meet this requirement: +<string.h> must declare the mem* functions, (just add `#include +<memory.h>' to <string.h>); the first argument to fopen and freopen +should be declared as `const char *'; the first argument to fread +should be declared as `void *'; the first argument to fwrite should be +declared as `const void *'; malloc should be declared to return `void +*'; in <alloca.h>, the declaration `extern "C" { void +*__builtin_alloca(int); }' should be added; declarations of getopt(), +optarg, optind and opterr should be added to <stdlib.h>; in +<sys/signal.h> the return type and the second argument type of +signal() should be changed to be `void (*)(int)'. + +You can either change them in place, or copy them to some other +directory and include that directory with a -I option. + +* I get errors when I try to compile groff with DEC C++. + +Fix the declaration of write() in <unistd.h> so that the second +argument is a const char *. Fix the declaration of open() in +<sys/file.h> so that the first argument is a const char *. + +* On Ultrix, the make stops with the message + + *** Error code 1 + + Stop. + +for no apparent reason. + +Use GNU make. + +* I'm having problems compiling groff on 386BSD 0.1. + +If you're using ash as /bin/sh, you'll need the following patch. + +*** gendef.sh.org Sun Jun 30 13:30:36 1991 +--- gendef.sh Sun Feb 28 10:23:49 1993 +*************** +*** 3,9 **** + file=$1 + shift + +! defs="#define $1" + shift + for def + do +--- 3,10 ---- + file=$1 + shift + +! x=$1 +! defs="#define $x" + shift + for def + do + +You'll also need to change dirnamemax.c so that it doesn't use +pathconf(). + +* While compiling on Xenix, ranlib libgroff.a fails. + +The system ranlib can't handle externals longer than 40 characters. +Use the ranlib included in demon.co.uk:/pub/xenix/g++-1.40.3a.v1 +instead. + +* Groff can't handle my troff document. It works fine with AT&T troff. + +Read the section on incompatibilities in gtroff(1). Try using the -C +option. Alternatively there's the sed script in tmac/fixmacros.sed +which will attempt to edit a file of macros so that it can be used +with groff without the -C flag. + +* groff -Tdvi produces dvi files that use fonts at weird magnifications. + +Yes, it does. You may need to compile fonts with Metafont at these +magnifications. The CompileFonts script in the devdvi/generate +directory may help you to do this. (It will take a *long* time.) + +* pic output is not centered horizontally; pictures sometimes run off +the bottom of the page. + +The macro package you are using is not supplying appropriate definitions +of PS and PE. Give groff a -mpic option. + +* I'm having problems including PostScript illustrations using the PSPIC +macro. + +A PostScript document must meet three requirements in order to be +included with the PSPIC macro: it must comply with the Adobe Document +Structuring Conventions; it must contain a BoundingBox line; it must +be ``well-behaved''. The BoundingBox line should be of the form: + + %%BoundingBox: llx lly urx ury + +where llx, lly, urx, ury are the coordinates of the lower left x, +lower left y, upper right x, upper right y of the bounding box of +marks on the page expressed as integers in the default PostScript +coordinate system (72 units per inch, origin at bottom left corner). +A useful tactic is to print out the illustration by itself (you may +need to add a `showpage' at the end), and physically measure the +bounding box. For more detail on these requirements, read the +specification of Encapsulated PostScript format. (This is available +from the Adobe file server; send a message with a body of `help' to +ps-file-server@adobe.com.) + +* I've configured groff for A4 paper, but gtroff still seems to think +that the length of a page (as returned by \n(.p) is 11 inches. + +This is intentional. The PAGE option is used only by grops. For +compatibility with ditroff, the default page length in gtroff is +always 11 inches. The page length can be changed with the `pl' +request. + +* Groff doesn't use the font names I'm used to. + +Use the `ftr' request. See gtroff(1). + +* I get errors using the Unix -ms macros with groff -e -C. + +Apply this change: + +*** /usr/lib/ms/ms.eqn Tue Apr 25 02:14:28 1989 +--- ms.eqn Sun Nov 11 10:33:59 1990 +*************** +*** 22,29 **** + .. + . \" EN - end of a displayed equation + .de EN +! .if !\\*(10 .br + .di + .rm EZ + .nr ZN \\n(dn + .if \\n(ZN>0 .if \\n(YE=0 .LP +--- 22,30 ---- + .. + . \" EN - end of a displayed equation + .de EN +! .if \\n(.k>0 .br + .di ++ .ds 10 \\*(EZ\\ + .rm EZ + .nr ZN \\n(dn + .if \\n(ZN>0 .if \\n(YE=0 .LP + + +* gpic doesn't accept the syntax `chop N M' for chopping both ends of a +line. + +The correct syntax is `chop N chop M'. + +* With gpic -t, when I print `line ->; box' using a dvi to ps +program, the arrow head sticks through into the inside of the box. + +The dvi to ps program should be modified to set the line cap and +line join parameters to 1 while printing tpic specials. + +* When I print the output groff -Tps, the output is always shifted up +by about 0.7 inches; I'm using 8.5x11 inch paper. + +Make sure that PAGE is defined to be `letter' in the top-level +Makefile. + +* When I try to print the output of groff -Tps, I get no output at all +from the printer, and the log file shows the error +%%[ error: undefined; offendingcommand: BP ]%% +I using TranScript spooling software. + +This is a bug in the page reversal filter in early versions of +TranScript. Change the `broken' parameter in +/usr/local/lib/groff/font/devps/DESC to 7. + +* When I preview groff -Tps output using the Sun OpenWindows 2.0 pageview +program, all the pages are displayed on top of each other. + +This is a defect in pageview. Change the `broken' parameter in +/usr/local/lib/groff/font/devps/DESC to 2. + +* With groff -TX75, -TX100or -X, I can only view the first page. + +The left mouse button brings up a menu that allows you to view other +pages. + +* When I print the output of groff -Tdvi, I just get a black dot in +upper left corner. + +Some dvi drivers (notably early versions of xtex) do not correctly +handle dvi files that use a resolution different from that used by dvi +files produced by TeX. Try getting a more up to date driver. + +* I get lots of errors when I use groff with the AT&T -mm macros. + +The AT&T -mm macros need a few changes to work with groff; `make +install.dwbmm' will copy your -mm macros to groff's macro directory +and make the necessary changes. You may need to edit the commands for +the install.mm target in the Makefile. Alternatively use the groff +-mm macros. + +* gtroff doesn't understand lines like `.ce99' with no space between +the name of the request or macro and the arguments. + +Gtroff requires a space between macro or request and its arguments +because it allows the use of long names for macros and requests. You +can use the -C option or the `cp' request to put gtroff into a +compatibility mode in which it is not possible to use long names for +macros but in which no space is required between macros and their +arguments. The use of compatibility mode is strongly discouraged. + +* gtroff gives warnings about lines like + .ev \" a comment +(with a tab after the .ev). + +A tab character cannot be used as a substitute for a space character +(except in one case: between a control character at the beginning of a +line and the name of a macro or request). For example, in Unix troff + .ps \" restore the previous point size +(with a tab after the .ps) will NOT restore the previous point-size; +instead it will be silently ignored. Since this is very likely to be +an error, gtroff can give a warning about it. If you want to align +comments, you can do it like this: + .ev\" \" a comment + +* I don't like the page headers and footers produced by groff -man. + +There seem to be many different styles of page header and footer +produced by different versions of the -man macros. You will need to +modify macros/tmac.an to suit your personal taste. For example, if +you want the center of the page header to say + UNIX Programmer's Manual +you will need to change the line + .el .ds an-extra3 \"UNIX Programmer's Manual +to + .el .ds an-extra3 UNIX Programmer's Manual + +* While formatting a manual page, groff complains about not being able to +break lines. The problem seems to be caused by a line like: + .TP \w'label'+2 + +The -man documentation says that the default scale indicator for TP +macro is `n'. The groff -man macros implement this correctly, so that +the argument will be evaluated as if it were + \w'label'n+2n +The Unix -man macros don't implement this correctly (probably because +it's hard to do in Unix troff); they just append `n' to the entire +argument, so that it will be evaluated as if it were + \w'label'u+2n +The solution is to fix the manual page: + .TP \w'label'u+2 + +* I'm having problems formatting Ultrix man pages with groff -man. + +The Ultrix man pages use a number of non-standard extensions to the +Unix man macros. One solution is to use the Ultrix -man macros with +groff. Rename /usr/local/lib/groff/tmac/tmac.an to +/usr/local/lib/groff/tmac/tmac.an.gnu, copy /usr/lib/tmac/tmac.an to +/usr/local/lib/groff/tmac/tmac.an and apply the following patch (from +Frank Wortner): + +*** /usr/local/lib/groff/tmac/tmac.an Wed Sep 9 12:29:28 1992 +--- /usr/lib/tmac/tmac.an Fri Jul 24 19:58:19 1992 +*************** +*** 489,495 **** + . \" make special case of shift out of italic + .de }S + .ds ]F +! .if \\$12 .if !\\$5 .ds ]F \^ + .ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" + .el \\$3 + .}f +--- 489,495 ---- + . \" make special case of shift out of italic + .de }S + .ds ]F +! .if \\$12 .if !\\$5 .ds ]F\^ + .ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" + .el \\$3 + .}f + +Another possible solution is to install tmac/man.ultrix as +/usr/local/lib/groff/tmac/man.local. + +* I'm having problems formatting HP-UX 9.0 man pages with groff -man. + +Rename /usr/local/lib/groff/tmac/tmac.an to (for example) +/usr/local/lib/groff/tmac/tmac.gan, copy HP's tmac.an into +/usr/local/lib/groff/tmac/tmac.an, and either put `.cp 1' at the +beginning or filter it (and any files it .so's) through +tmac/fixmacros.sed. + +* I'm having problems formatting man pages produced by the perl +wrapman script. + +Some versions of wrapman have a superfluous blank line before the .TH +line. This must be deleted. Then either use groff -C, or apply the +following patch: + +*** wrapman.~2~ Sun Jan 19 12:10:24 1992 +--- wrapman Tue Aug 10 02:06:41 1993 +*************** +*** 35,41 **** + $line1 .= <IN> if $line1 =~ /eval/; + $line1 .= <IN> if $line1 =~ /argv/; + $line2 = <IN>; +! next if $line2 eq "'di';\n"; + + # Pull the old switcheroo. + +--- 35,41 ---- + $line1 .= <IN> if $line1 =~ /eval/; + $line1 .= <IN> if $line1 =~ /argv/; + $line2 = <IN>; +! next if $line2 eq "'di ';\n" || $line2 eq "'di';\n"; + + # Pull the old switcheroo. + +*************** +*** 49,56 **** + + print OUT $line1; + print OUT <<EOF; +! 'di'; +! 'ig00'; + # + # $header + # +--- 49,58 ---- + + print OUT $line1; + print OUT <<EOF; +! 'di '; +! 'ds 00 \\"'; +! 'eo '; +! 'ig 00 '; + # + # $header + # +*************** +*** 72,85 **** + + # These next few lines are legal in both Perl and nroff. + +! $null.00; # finish .ig + + 'di \\" finish diversion--previous line must be blank + .nr nl 0-1 \\" fake up transition to first page again + .nr % 0 \\" start at page 1 +! '; __END__ ##### From here on it's a standard manual page ##### + .TH $PROG 1 "$month $mday, 19$year" +- .AT 3 + .SH NAME + $prog \\- whatever + .SH SYNOPSIS +--- 74,87 ---- + + # These next few lines are legal in both Perl and nroff. + +! $null.00 ; # finish .ig +! 'ec \\'; + + 'di \\" finish diversion--previous line must be blank + .nr nl 0-1 \\" fake up transition to first page again + .nr % 0 \\" start at page 1 +! .\\"'; __END__ ##### From here on it's a standard manual page ##### + .TH $PROG 1 "$month $mday, 19$year" + .SH NAME + $prog \\- whatever + .SH SYNOPSIS + + +* When I preview documents using -TX75 or -TX100, the layout is not the same +as when I print the document with -Tps: the line and page breaks come +in different places. + +Use groff -X -Tps. + +* When I try to run gxditview, I get the error: +Error: Widget viewport has zero width and/or height + +This error means you haven't correctly installed the application +defaults file, GXditview.ad; ``make install'' does this for you +automatically, so either you didn't do ``make install'', or you don't +have imake configured correctly. + +* groff uses up an enormous amount of memory processing large files. +I'm using 386BSD 0.1. + +386BSD includes an old version of g++, 1.39, which has a bug that +causes a major memory leak in gtroff. Apply the following fix to g++ +and recompile groff: + +*** cplus-decl.c.~1~ Mon Aug 6 05:28:59 1990 +--- cplus-decl.c Wed Jun 5 08:55:04 1991 +*************** +*** 7951,7961 **** + + /* At the end, call delete if that's what's requested. */ + if (TREE_GETS_DELETE (current_class_type)) + exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node), + get_identifier (OPERATOR_DELETE_FORMAT), +! build_tree_list (NULL_TREE, integer_zero_node), + NULL_TREE, LOOKUP_NORMAL); + else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type)) + exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0); + else + exprstmt = 0; +--- 7951,7961 ---- + + /* At the end, call delete if that's what's requested. */ + if (TREE_GETS_DELETE (current_class_type)) + exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node), + get_identifier (OPERATOR_DELETE_FORMAT), +! build_tree_list (NULL_TREE, current_class_decl), + NULL_TREE, LOOKUP_NORMAL); + else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type)) + exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0); + else + exprstmt = 0; + +* Where can I get grap? + +Grap is not freely available, but there is a nawk script implementing +an extended subset of grap available for ftp as +ftp.informatik.uni-rostock.de:/pub/local/software/prag-1.0.shar.gz. + +* How can I use groff with an old LaserJet printer that doesn't work +with groff -Tlj4? + +You have at least 3 options: + +- use groff -Tps with GNU Ghostscript; + +- use groff -Tdvi with a TeX .dvi to Laserjet driver; + +- use groff with the LaserJet driver in Chris Lewis' psroff package +(available for ftp from: +ftp.uunet.ca:/distrib/chris_lewis/psroff3.0pl17). + +* Groff seems to generate level 3 Postscript, but my printer is only a +level 1 or 2 PostScript printer. + +In fact groff generates only level 1 PostScript. The `%!PS-Adobe-3.0' +comment at the beginning of PostScript output generated by groff +indicates that the file conforms to version 3.0 of the Adobe Document +Structuring Conventions. The output generated by groff should be +printable on any PostScript printer. Problems with groff output's not +printing are most often caused by the spooling system. + +* The \n(st and \n(sb registers don't seem to work. I thought \w set +them to the height and depth of its argument, but the registers always +seem to be 0. + +\n(st and \n(sb aren't supposed to give the height and depth of the +string rather they give the minimum and maximum vertical displacement +of the baseline. For example for \v'2u'\v'-3u', \n(st will be 1 and +\n(sb will be -2. The height and depth of the string is available in +the \n[rst] and \n[rsb] registers: these are groff extensions. + +* On an SGI system, how can I make the man command use groff? + +From David Hinds <dhinds@allegro.stanford.edu> (some of these steps +are unnecessary if you install with the `g' Makefile variable defined +as empty): + +Create a script called 'eqn': + + > #!/bin/sh + > if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi + > geqn $* + +and a script called 'neqn': + + > #!/bin/sh + > if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi + > geqn -Tascii $* + +and do: + + > ln -s gnroff nroff + +and edit the end of the gnroff script to be: + + > rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'` + > exec groff -Wall -mtty-char $T $opts $rest + +To get PostScript output from 'man -t', you also need to create a +'psroff' script similar to 'nroff'. Here are the context diffs: + +*** /usr/local/bin/nroff Sat Feb 13 15:51:09 1993 +--- /usr/local/bin/psroff Sat Feb 13 17:45:46 1993 +*************** +*** 1,8 **** + #!/bin/sh +! # Emulate nroff with groff. + + prog="$0" +! T=-Tascii + opts= + + for i +--- 1,8 ---- + #!/bin/sh +! # Emulate psroff with groff. + + prog="$0" +! T=-Tps + opts= + + for i +*************** +*** 25,30 **** +--- 25,33 ---- + -Tascii|-Tlatin1) + T=$1 + ;; ++ -t) ++ # ignore -- default is send to stdout ++ ;; + -T*) + # ignore other devices + ;; +*************** +*** 49,53 **** + rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'` + + # This shell script is intended for use with man, so warnings are + # probably not wanted. Also load nroff-style character definitions. +! exec groff -Wall -mtty-char $T $opts $rest +--- 52,56 ---- + rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'` + + # This shell script is intended for use with man, so warnings are +! # probably not wanted. +! exec groff -Wall $T $opts $rest diff --git a/contrib/groff/PROJECTS b/contrib/groff/PROJECTS new file mode 100644 index 000000000000..1691e0321a99 --- /dev/null +++ b/contrib/groff/PROJECTS @@ -0,0 +1,17 @@ +Here are some things that would be useful additions to groff: + + grap + + -mv macros (for typesetting viewgraphs and slides) + + a deroff that understands long names + + a page-makeup postprocessor and associated macro package + (like pm and -mpm) + + a complete, self-contained manual (trent@cs.pdx.edu is working on this) + +If you want to work on one of these, I suggest you contact me first. + +James Clark +jjc@jclark.com diff --git a/contrib/groff/README b/contrib/groff/README new file mode 100644 index 000000000000..bd28842185e6 --- /dev/null +++ b/contrib/groff/README @@ -0,0 +1,36 @@ +This is the GNU groff document formatting system. The version number +is given in the file VERSION. + +Included in this release are implementations of troff, pic, eqn, tbl, +refer, the -man macros and the -ms macros, and drivers for PostScript, +TeX dvi format, HP LaserJet 4 printers, and typewriter-like devices. +Also included is a modified version of the Berkeley -me macros, an +enhanced version of the X11 xditview previewer, and an implementation +of the -mm macros contributed by Joergen Haegg (jh@efd.lth.se). + +See the file INSTALL for installation instructions. You will require +a C++ compiler. + +The file NEWS describes recent user-visible changes to groff. + +Groff is free software. See the file COPYING for copying permission. + +The file PROBLEMS describes various problems that have been +encountered in compiling, installing, and running groff. + +For the moment, the documentation assumes that you are already +familiar with the Unix versions of troff, -man, -ms and the +preprocessors. + +The most recent released version of groff is always available by +anonymous ftp from prep.ai.mit.edu in the directory pub/gnu. + +Please report bugs using the form in the file BUG-REPORT; the idea of +this is to make sure that I have all the information I need to fix the +bug. At the very least, read the BUG-REPORT form and make sure that +you supply all the information that it asks for. Even if you are not +sure that something is a bug, report it using BUG-REPORT: this will +enable me to determine whether it really is a bug or not. + +James Clark +jjc@jclark.com diff --git a/contrib/groff/TODO b/contrib/groff/TODO new file mode 100644 index 000000000000..9cb74c239f65 --- /dev/null +++ b/contrib/groff/TODO @@ -0,0 +1,26 @@ +Better selection of paper sizes with -Tps. + +Make -Tlj4 work with -X. + +Guess man5ext and man7ext variables. + +Provide man.sun implementing .TX. + +Improve GROFF_PRINT macro in aclocal.m4. + +Put all dev* files in a separate subdirectory `font'. + +Provide a `check' target. + +Provide a `bindist' target. + +Implement tmac.bib in terms of tmac.s. + +Support long options using GNU getopt. + +Catch the following error in -me: +.(z +.(l C +.)z + +Arrows for next/previous page from R5 xditview. diff --git a/contrib/groff/VERSION b/contrib/groff/VERSION new file mode 100644 index 000000000000..c044b1a3269e --- /dev/null +++ b/contrib/groff/VERSION @@ -0,0 +1 @@ +1.10 diff --git a/contrib/groff/aclocal.m4 b/contrib/groff/aclocal.m4 new file mode 100644 index 000000000000..b152d2f7ca9d --- /dev/null +++ b/contrib/groff/aclocal.m4 @@ -0,0 +1,385 @@ +dnl Autoconf macros for groff. +dnl Copyright (C) 1989, 1990, 1991, 1992, 1995 Free Software Foundation, Inc. +dnl +dnl This file is part of groff. +dnl +dnl groff is free software; you can redistribute it and/or modify it under +dnl the terms of the GNU General Public License as published by the Free +dnl Software Foundation; either version 2, or (at your option) any later +dnl version. +dnl +dnl groff is distributed in the hope that it will be useful, but WITHOUT ANY +dnl WARRANTY; without even the implied warranty of MERCHANTABILITY or +dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +dnl for more details. +dnl +dnl You should have received a copy of the GNU General Public License along +dnl with groff; see the file COPYING. If not, write to the Free Software +dnl Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +dnl +AC_DEFUN(GROFF_PRINT, +[if test -z "$PSPRINT" +then + AC_CHECK_PROGS(LPR,lpr) + AC_CHECK_PROGS(LP,lp) + if test -n "$LPR" && test -n "$LP" + then + # HP-UX provides an lpr command that emulates lpr using lp, + # but it doesn't have lpq; in this case we want to use lp + # rather than lpr. + AC_CHECK_PROGS(LPQ,lpq) + test -n "$LPQ" || LPR= + fi + if test -n "$LPR" + then + PSPRINT="$LPR" + elif test -n "$LP" + then + PSPRINT="$LP" + fi +fi +AC_SUBST(PSPRINT) +AC_MSG_CHECKING([for command to use for printing PostScript files]) +AC_MSG_RESULT($PSPRINT) +# Figure out DVIPRINT from PSPRINT. +AC_MSG_CHECKING([for command to use for printing dvi files]) +if test -n "$PSPRINT" && test -z "$DVIPRINT" +then + if test "X$PSPRINT" = "Xlpr" + then + DVIPRINT="lpr -d" + else + DVIPRINT="$PSPRINT" + fi +fi +AC_SUBST(DVIPRINT) +AC_MSG_RESULT($DVIPRINT)])dnl +dnl Bison generated parsers have problems with C++ compilers other than g++. +dnl So byacc is preferred over bison. +AC_DEFUN(GROFF_PROG_YACC, +[AC_CHECK_PROGS(YACC, byacc 'bison -y', yacc)]) +dnl GROFF_CSH_HACK(if hack present, if not present) +AC_DEFUN(GROFF_CSH_HACK, +[AC_MSG_CHECKING([for csh hash hack]) +cat <<EOF >conftest.sh +#!/bin/sh +true || exit 0 +export PATH || exit 0 +exit 1 +EOF +chmod +x conftest.sh +if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1 +then + AC_MSG_RESULT(yes); $1 +else + AC_MSG_RESULT(no); $2 +fi +rm -f conftest.sh +])dnl +dnl From udodo!hans@relay.NL.net (Hans Zuidam) +AC_DEFUN(GROFF_ISC_SYSV3, +[AC_MSG_CHECKING([for ISC 3.x or 4.x]) +changequote(,)dnl +if grep '[34]\.' /usr/options/cb.name >/dev/null 2>&1 +changequote([,])dnl +then + AC_MSG_RESULT(yes) + AC_DEFINE(_SYSV3) +else + AC_MSG_RESULT(no) +fi])dnl +AC_DEFUN(GROFF_POSIX, +[AC_MSG_CHECKING([whether -D_POSIX_SOURCE is necessary]) +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_TRY_COMPILE([#include <stdio.h> +extern "C" { void fileno(int); }],, +AC_MSG_RESULT(yes);AC_DEFINE(_POSIX_SOURCE), +AC_MSG_RESULT(no)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_GETOPT, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([declaration of getopt in stdlib.h]) +AC_TRY_COMPILE( +[#include <stdlib.h> +extern "C" { void getopt(int); }],,AC_MSG_RESULT(no), +AC_MSG_RESULT(yes);AC_DEFINE(STDLIB_H_DECLARES_GETOPT)) +AC_MSG_CHECKING([declaration of getopt in unistd.h]) +AC_TRY_COMPILE([#include <sys/types.h> +#include <unistd.h> +extern "C" { void getopt(int); }],,AC_MSG_RESULT(no), +AC_MSG_RESULT(yes);AC_DEFINE(UNISTD_H_DECLARES_GETOPT)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_PUTENV, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([declaration of putenv]) +AC_TRY_COMPILE([#include <stdlib.h> +extern "C" { void putenv(int); }],,AC_MSG_RESULT(no), +AC_MSG_RESULT(yes) +AC_DEFINE(STDLIB_H_DECLARES_PUTENV)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_POPEN, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([declaration of popen]) +AC_TRY_COMPILE([#include <stdio.h> +extern "C" { void popen(int); }],,AC_MSG_RESULT(no), +AC_MSG_RESULT(yes);AC_DEFINE(STDIO_H_DECLARES_POPEN)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_PCLOSE, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([declaration of pclose]) +AC_TRY_COMPILE([#include <stdio.h> +extern "C" { void pclose(int); }],,AC_MSG_RESULT(no), +AC_MSG_RESULT(yes);AC_DEFINE(STDIO_H_DECLARES_PCLOSE)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_OSFCN_H, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([C++ <osfcn.h>]) +AC_TRY_COMPILE([#include <osfcn.h>], +[read(0, 0, 0); open(0, 0);],AC_MSG_RESULT(yes);AC_DEFINE(HAVE_CC_OSFCN_H), +AC_MSG_RESULT(no)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_LIMITS_H, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([C++ <limits.h>]) +AC_TRY_COMPILE([#include <limits.h>], +[int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX;], +AC_MSG_RESULT(yes);AC_DEFINE(HAVE_CC_LIMITS_H),AC_MSG_RESULT(no)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_TIME_T, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([for declaration of time_t]) +AC_TRY_COMPILE([#include <time.h>], +[time_t t = time(0); struct tm *p = localtime(&t);],AC_MSG_RESULT(yes), +AC_MSG_RESULT(no);AC_DEFINE(LONG_FOR_TIME_T)) +AC_LANG_RESTORE])dnl +AC_DEFUN(GROFF_STRUCT_EXCEPTION, +[AC_MSG_CHECKING([struct exception]) +AC_TRY_COMPILE([#include <math.h>], +[struct exception e;], +AC_MSG_RESULT(yes);AC_DEFINE(HAVE_STRUCT_EXCEPTION), +AC_MSG_RESULT(no))])dnl +AC_DEFUN(GROFF_ARRAY_DELETE, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([whether ANSI array delete syntax supported]) +AC_TRY_COMPILE(, +changequote(,)dnl +char *p = new char[5]; delete [] p;changequote([,]), +AC_MSG_RESULT(yes),AC_MSG_RESULT(no);AC_DEFINE(ARRAY_DELETE_NEEDS_SIZE)) +AC_LANG_RESTORE])dnl +dnl +AC_DEFUN(GROFF_TRADITIONAL_CPP, +[AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_MSG_CHECKING([traditional preprocessor]) +AC_TRY_COMPILE([#define name2(a,b) a/**/b],[int name2(foo,bar);], +AC_MSG_RESULT(yes);AC_DEFINE(TRADITIONAL_CPP), +AC_MSG_RESULT(no)) +AC_LANG_RESTORE])dnl + +AC_DEFUN(GROFF_WCOREFLAG, +[AC_MSG_CHECKING([w_coredump]) +AC_TRY_RUN([ +#include <sys/types.h> +#include <sys/wait.h> +main() +{ +#ifdef WCOREFLAG + exit(1); +#else + int i = 0; + ((union wait *)&i)->w_coredump = 1; + exit(i != 0200); +#endif +} +],AC_MSG_RESULT(yes);AC_DEFINE(WCOREFLAG,0200),AC_MSG_RESULT(no), +AC_MSG_RESULT(no))])dnl +dnl +AC_DEFUN(GROFF_BROKEN_SPOOLER_FLAGS, +[AC_MSG_CHECKING([default value for grops -b option]) +test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7 +AC_MSG_RESULT($BROKEN_SPOOLER_FLAGS) +AC_SUBST(BROKEN_SPOOLER_FLAGS)])dnl +dnl +AC_DEFUN(GROFF_PAGE, +[AC_MSG_CHECKING([default paper size]) +if test -z "$PAGE" +then + descfile= + if test -r $prefix/share/groff/font/devps/DESC + then + descfile=$prefix/share/groff/font/devps/DESC + elif test -r $prefix/lib/groff/font/devps/DESC + then + descfile=$prefix/lib/groff/font/devps/DESC + fi + if test -n "$descfile" \ + && grep "^paperlength 841890" $descfile >/dev/null 2>&1 + then + PAGE=A4 + else + PAGE=letter + fi +fi +if test -z "$PAGE" +then + dom=`awk '([$]1 == "dom" || [$]1 == "search") { print [$]2; exit}' \ + /etc/resolv.conf 2>/dev/null` + + if test -z "$dom" + then + dom=`(domainname) 2>/dev/null | tr -d '+'` + if test -z "$dom" + then + dom=`(hostname) 2>/dev/null | grep '\.'` + fi + fi + +changequote(,)dnl + # If the top-level domain is two letters and it's not `us' or `ca' + # then they probably use A4 paper. + case "$dom" in + *.[Uu][Ss]|*.[Cc][Aa]) ;; + *.[A-Za-z][A-Za-z]) PAGE=A4 ;; + esac +changequote([,])dnl +fi +test -n "$PAGE" || PAGE=letter +AC_MSG_RESULT($PAGE) +AC_SUBST(PAGE)])dnl +dnl +AC_DEFUN(GROFF_CXX_CHECK, +[AC_REQUIRE([AC_C_CROSS]) +AC_REQUIRE([AC_PROG_CXX]) +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +if test "$cross_compiling" = no; then +AC_MSG_CHECKING([that C++ compiler can compile simple program]) +fi +AC_TRY_RUN([int main() { return 0; }], +AC_MSG_RESULT(yes), +AC_MSG_RESULT(no) +AC_MSG_ERROR([a working C++ compiler is required]),:) +if test "$cross_compiling" = no; then +AC_MSG_CHECKING([that C++ static constructors and destructors are called]) +fi +AC_TRY_RUN([ +extern "C" { + void _exit(int); +} +int i; +struct A { + char dummy; + A() { i = 1; } + ~A() { if (i == 1) _exit(0); } +}; +A a; +int main() { return 1; } +], +AC_MSG_RESULT(yes), +AC_MSG_RESULT(no) +AC_MSG_ERROR([a working C++ compiler is required]),:) +AC_MSG_CHECKING([that header files support C++]) +AC_TRY_LINK([#include <stdio.h>], +[fopen(0, 0);],AC_MSG_RESULT(yes), +AC_MSG_RESULT(no) +AC_MSG_ERROR([header files do not support C++ (if you are using a version of gcc/g++ earlier than 2.5, you should install libg++)])) +AC_LANG_RESTORE +])dnl +dnl +AC_DEFUN(GROFF_TMAC, +[ +AC_MSG_CHECKING([for prefix of system macro packages]) +sys_tmac_prefix= +sys_tmac_file_prefix= +for d in /usr/share/lib/tmac /usr/lib/tmac +do + for t in "" tmac. + do + for m in an s m + do + f=$d/$t$m + if test -z "$sys_tmac_prefix" \ + && test -f $f \ + && grep '^\.if' $f >/dev/null 2>&1 + then + sys_tmac_prefix=$d/$t + sys_tmac_file_prefix=$t + fi + done + done +done +AC_MSG_RESULT($sys_tmac_prefix) +AC_SUBST(sys_tmac_prefix) +tmac_wrap= +AC_MSG_CHECKING([which system macro packages should be made available]) +if test "x$sys_tmac_file_prefix" = "xtmac." +then + for f in $sys_tmac_prefix* + do + suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` + case "$suff" in + e);; + *) + grep "Copyright.*Free Software Foundation" $f >/dev/null \ + || tmac_wrap="$tmac_wrap $suff" + ;; + esac + done +elif test -n "$sys_tmac_prefix" +then + files=`echo $sys_tmac_prefix*` + grep "\\.so" $files >conftest.sol + for f in $files + do + case "$f" in + ${sys_tmac_prefix}e) ;; + *.me) ;; + */ms.*) ;; + *) + b=`basename $f` + if grep "\\.so.*/$b\$" conftest.sol >/dev/null \ + || grep -l "Copyright.*Free Software Foundation" $f >/dev/null + then + : + else + suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` + case "$suff" in + tmac.*);; + *) tmac_wrap="$tmac_wrap $suff" ;; + esac + fi + esac + done + rm -f conftest.sol +fi +AC_MSG_RESULT([$tmac_wrap]) +AC_SUBST(tmac_wrap) +])dnl +AC_DEFUN(GROFF_G, +[AC_MSG_CHECKING([for existing troff installation]) +if test "x`(echo .tm '|n(.g' | tr '|' '\\\\' | troff -z -i 2>&1) 2>/dev/null`" \ + = x0 +then + AC_MSG_RESULT(yes) + g=g +else + AC_MSG_RESULT(no) + g= +fi +AC_SUBST(g) +])dnl +dnl We need the path to install-sh to be absolute. +AC_DEFUN(GROFF_INSTALL_SH, +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +ac_dir=`cd $ac_aux_dir; pwd` +ac_install_sh="$ac_dir/install-sh -c" +]) diff --git a/contrib/groff/addftinfo/Makefile.dep b/contrib/groff/addftinfo/Makefile.dep new file mode 100644 index 000000000000..e38c273c8d59 --- /dev/null +++ b/contrib/groff/addftinfo/Makefile.dep @@ -0,0 +1,3 @@ +addftinfo.o: addftinfo.cc ../include/lib.h ../include/errarg.h \ + ../include/error.h ../include/stringclass.h ../include/cset.h guess.h +guess.o: guess.cc guess.h diff --git a/contrib/groff/addftinfo/Makefile.sub b/contrib/groff/addftinfo/Makefile.sub new file mode 100644 index 000000000000..95a8f5bf5857 --- /dev/null +++ b/contrib/groff/addftinfo/Makefile.sub @@ -0,0 +1,6 @@ +PROG=addftinfo +MAN1=addftinfo.n +XLIBS=$(LIBGROFF) +OBJS=addftinfo.o guess.o +CCSRCS=addftinfo.cc guess.cc +HDRS=guess.h diff --git a/contrib/groff/addftinfo/addftinfo.cc b/contrib/groff/addftinfo/addftinfo.cc new file mode 100644 index 000000000000..55b62427d145 --- /dev/null +++ b/contrib/groff/addftinfo/addftinfo.cc @@ -0,0 +1,196 @@ +// -*- C++ -*- +/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. + Written by James Clark (jjc@jclark.com) + +This file is part of groff. + +groff is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +groff is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with groff; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include <stdio.h> +#include <ctype.h> +#include <string.h> +#include <assert.h> +#include <stdlib.h> +#include <errno.h> +#include "lib.h" +#include "errarg.h" +#include "error.h" +#include "stringclass.h" +#include "cset.h" +#include "guess.h" + +static void usage(); +static void convert_font(const font_params &, FILE *, FILE *); + +typedef int font_params::*param_t; + +static struct { + const char *name; + param_t par; +} param_table[] = { + { "x-height", &font_params::x_height }, + { "fig-height", &font_params::fig_height }, + { "asc-height", &font_params::asc_height }, + { "body-height", &font_params::body_height }, + { "cap-height", &font_params::cap_height }, + { "comma-depth", &font_params::comma_depth }, + { "desc-depth", &font_params::desc_depth }, + { "body-depth", &font_params::body_depth }, +}; + +// These are all in thousandths of an em. +// These values are correct for PostScript Times Roman. + +#define DEFAULT_X_HEIGHT 448 +#define DEFAULT_FIG_HEIGHT 676 +#define DEFAULT_ASC_HEIGHT 682 +#define DEFAULT_BODY_HEIGHT 676 +#define DEFAULT_CAP_HEIGHT 662 +#define DEFAULT_COMMA_DEPTH 143 +#define DEFAULT_DESC_DEPTH 217 +#define DEFAULT_BODY_DEPTH 177 + +int main(int argc, char **argv) +{ + program_name = argv[0]; + if (argc < 4) + usage(); + int resolution; + if (sscanf(argv[argc-3], "%d", &resolution) != 1) + usage(); + if (resolution <= 0) + fatal("resolution must be > 0"); + int unitwidth; + if (sscanf(argv[argc-2], "%d", &unitwidth) != 1) + usage(); + if (unitwidth <= 0) + fatal("unitwidth must be > 0"); + font_params param; + const char *font = argv[argc-1]; + param.italic = (font[0] != '\0' && strchr(font, '\0')[-1] == 'I'); + param.em = (resolution*unitwidth)/72; + param.x_height = DEFAULT_X_HEIGHT; + param.fig_height = DEFAULT_FIG_HEIGHT; + param.asc_height = DEFAULT_ASC_HEIGHT; + param.body_height = DEFAULT_BODY_HEIGHT; + param.cap_height = DEFAULT_CAP_HEIGHT; + param.comma_depth = DEFAULT_COMMA_DEPTH; + param.desc_depth = DEFAULT_DESC_DEPTH; + param.body_depth = DEFAULT_BODY_DEPTH; + int i; + for (i = 1; i < argc && argv[i][0] == '-'; i++) { + if (argv[i][1] == '-' && argv[i][2] == '\0') { + i++; + break; + } + if (i + 1 >= argc) + usage(); + int j; + for (j = 0;; j++) { + if (j >= sizeof(param_table)/sizeof(param_table[0])) + fatal("parameter `%1' not recognized", argv[i] + 1); + if (strcmp(param_table[j].name, argv[i] + 1) == 0) + break; + } + if (sscanf(argv[i+1], "%d", &(param.*(param_table[j].par))) != 1) + fatal("invalid argument `%1'", argv[i+1]); + i++; + } + if (argc - i != 3) + usage(); + errno = 0; + FILE *infp = fopen(font, "r"); + if (infp == 0) + fatal("can't open `%1': %2", font, strerror(errno)); + convert_font(param, infp, stdout); + return 0; +} + +static void usage() +{ + fprintf(stderr, "usage: %s [-param value] ... resolution unitwidth font\n", + program_name); + exit(1); +} + +static int get_line(FILE *fp, string *p) +{ + int c; + p->clear(); + while ((c = getc(fp)) != EOF) { + *p += char(c); + if (c == '\n') + break; + } + return p->length() > 0; +} + +static void convert_font(const font_params ¶m, FILE *infp, FILE *outfp) +{ + string s; + while (get_line(infp, &s)) { + put_string(s, outfp); + if (s.length() >= 8 + && strncmp(&s[0], "charset", 7)) + break; + } + while (get_line(infp, &s)) { + s += '\0'; + string name; + const char *p = s.contents(); + while (csspace(*p)) + p++; + while (*p != '\0' && !csspace(*p)) + name += *p++; + while (csspace(*p)) + p++; + for (const char *q = s.contents(); q < p; q++) + putc(*q, outfp); + char *next; + char_metric metric; + metric.width = (int)strtol(p, &next, 10); + if (next != p) { + printf("%d", metric.width); + p = next; + metric.type = (int)strtol(p, &next, 10); + if (next != p) { + name += '\0'; + guess(name.contents(), param, &metric); + if (metric.sk == 0) { + if (metric.left_ic == 0) { + if (metric.ic == 0) { + if (metric.depth == 0) { + if (metric.height != 0) + printf(",%d", metric.height); + } + else + printf(",%d,%d", metric.height, metric.depth); + } + else + printf(",%d,%d,%d", metric.height, metric.depth, metric.ic); + } + else + printf(",%d,%d,%d,%d", metric.height, metric.depth, metric.ic, + metric.left_ic); + } + else + printf(",%d,%d,%d,%d,%d", metric.height, metric.depth, metric.ic, + metric.left_ic, metric.sk); + } + } + fputs(p, outfp); + } +} + diff --git a/contrib/groff/addftinfo/addftinfo.man b/contrib/groff/addftinfo/addftinfo.man new file mode 100644 index 000000000000..6741c171f643 --- /dev/null +++ b/contrib/groff/addftinfo/addftinfo.man @@ -0,0 +1,102 @@ +.ig \"-*- nroff -*- +Copyright (C) 1989-1995 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be included in +translations approved by the Free Software Foundation instead of in +the original English. +.. +.TH ADDFTINFO @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" +.SH NAME +addftinfo \- add information to troff font files for use with groff +.SH SYNOPSIS +.B addftinfo +[ +.BI \- param\ value\fR.\|.\|. +] +.I res +.I unitwidth +.I font +.SH DESCRIPTION +.B addftinfo +reads a troff font file +and adds some additional font-metric information +that is used by the groff system. +The font file with the information added is written on the +standard output. +The information added is guessed using +some parametric information about the font +and assumptions +about the traditional troff names for characters. +The main information added is the heights and depths of characters. +The +.I res +and +.I unitwidth +arguments should be the same as the corresponding parameters +in the DESC file; +.I font +is the name of the file describing the font; +if +.I font +ends with +.B I +the font will be assumed to be italic. +.SH OPTIONS +Each of the options changes one of the parameters that is used +to derive the heights and depths. +Like the existing quantities in the font +file, each +.I value +is in +.RI inches/ res +for a font whose point size is +.IR unitwidth . +.I param +must be one of: +.TP +.B x-height +The height of lowercase letters without ascenders such as x. +.TP +.B fig-height +The height of figures (digits). +.TP +.B asc-height +The height of characters with ascenders, such as b, d or l. +.TP +.B body-height +The height of characters such as parentheses. +.TP +.B cap-height +The height of uppercase letters such as A. +.TP +.B comma-depth +The depth of a comma. +.TP +.B desc-depth +The depth of characters with descenders, such as p,q, or y. +.TP +.B body-depth +The depth of characters such as parentheses. +.LP +.B addftinfo +makes no attempt to use the specified parameters to guess +the unspecified parameters. +If a parameter is not specified the default will be used. +The defaults are chosen to have the reasonable values for +a Times font. +.SH "SEE ALSO" +.BR font (5) +.BR groff_font (@MAN5EXT@), +.BR groff (@MAN1EXT@), +.BR groff_char (@MAN7EXT@) diff --git a/contrib/groff/addftinfo/guess.cc b/contrib/groff/addftinfo/guess.cc new file mode 100644 index 000000000000..dcfd4c92cb9b --- /dev/null +++ b/contrib/groff/addftinfo/guess.cc @@ -0,0 +1,490 @@ +// -*- C++ -*- +/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. + Written by James Clark (jjc@jclark.com) + +This file is part of groff. + +groff is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +groff is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with groff; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "guess.h" + +void guess(const char *s, const font_params ¶m, char_metric *metric) +{ + int &height = metric->height; + int &depth = metric->depth; + + metric->ic = 0; + metric->left_ic = 0; + metric->sk = 0; + height = 0; + depth = 0; + if (s[0] == '\0' || (s[1] != '\0' && s[2] != '\0')) + goto do_default; +#define HASH(c1, c2) (((unsigned char)(c1) << 8) | (unsigned char)(c2)) + switch (HASH(s[0], s[1])) { + default: + do_default: + if (metric->type & 01) + depth = param.desc_depth; + if (metric->type & 02) + height = param.asc_height; + else + height = param.x_height; + break; + case HASH('\\', '|'): + case HASH('\\', '^'): + case HASH('\\', '&'): + // these have zero height and depth + break; + case HASH('f', 0): + height = param.asc_height; + if (param.italic) + depth = param.desc_depth; + break; + case HASH('a', 0): + case HASH('c', 0): + case HASH('e', 0): + case HASH('m', 0): + case HASH('n', 0): + case HASH('o', 0): + case HASH('r', 0): + case HASH('s', 0): + case HASH('u', 0): + case HASH('v', 0): + case HASH('w', 0): + case HASH('x', 0): + case HASH('z', 0): + height = param.x_height; + break; + case HASH('i', 0): + height = param.x_height; + break; + case HASH('b', 0): + case HASH('d', 0): + case HASH('h', 0): + case HASH('k', 0): + case HASH('l', 0): + case HASH('F', 'i'): + case HASH('F', 'l'): + case HASH('f', 'f'): + case HASH('f', 'i'): + case HASH('f', 'l'): + height = param.asc_height; + break; + case HASH('t', 0): + height = param.asc_height; + break; + case HASH('g', 0): + case HASH('p', 0): + case HASH('q', 0): + case HASH('y', 0): + height = param.x_height; + depth = param.desc_depth; + break; + case HASH('j', 0): + height = param.x_height; + depth = param.desc_depth; + break; + case HASH('A', 0): + case HASH('B', 0): + case HASH('C', 0): + case HASH('D', 0): + case HASH('E', 0): + case HASH('F', 0): + case HASH('G', 0): + case HASH('H', 0): + case HASH('I', 0): + case HASH('J', 0): + case HASH('K', 0): + case HASH('L', 0): + case HASH('M', 0): + case HASH('N', 0): + case HASH('O', 0): + case HASH('P', 0): + case HASH('Q', 0): + case HASH('R', 0): + case HASH('S', 0): + case HASH('T', 0): + case HASH('U', 0): + case HASH('V', 0): + case HASH('W', 0): + case HASH('X', 0): + case HASH('Y', 0): + case HASH('Z', 0): + height = param.cap_height; + break; + case HASH('*', 'A'): + case HASH('*', 'B'): + case HASH('*', 'C'): + case HASH('*', 'D'): + case HASH('*', 'E'): + case HASH('*', 'F'): + case HASH('*', 'G'): + case HASH('*', 'H'): + case HASH('*', 'I'): + case HASH('*', 'K'): + case HASH('*', 'L'): + case HASH('*', 'M'): + case HASH('*', 'N'): + case HASH('*', 'O'): + case HASH('*', 'P'): + case HASH('*', 'Q'): + case HASH('*', 'R'): + case HASH('*', 'S'): + case HASH('*', 'T'): + case HASH('*', 'U'): + case HASH('*', 'W'): + case HASH('*', 'X'): + case HASH('*', 'Y'): + case HASH('*', 'Z'): + height = param.cap_height; + break; + case HASH('0', 0): + case HASH('1', 0): + case HASH('2', 0): + case HASH('3', 0): + case HASH('4', 0): + case HASH('5', 0): + case HASH('6', 0): + case HASH('7', 0): + case HASH('8', 0): + case HASH('9', 0): + case HASH('1', '2'): + case HASH('1', '4'): + case HASH('3', '4'): + height = param.fig_height; + break; + case HASH('(', 0): + case HASH(')', 0): + case HASH('[', 0): + case HASH(']', 0): + case HASH('{', 0): + case HASH('}', 0): + height = param.body_height; + depth = param.body_depth; + break; + case HASH('i', 's'): + height = (param.em*3)/4; + depth = param.em/4; + break; + case HASH('*', 'a'): + case HASH('*', 'e'): + case HASH('*', 'i'): + case HASH('*', 'k'): + case HASH('*', 'n'): + case HASH('*', 'o'): + case HASH('*', 'p'): + case HASH('*', 's'): + case HASH('*', 't'): + case HASH('*', 'u'): + case HASH('*', 'w'): + height = param.x_height; + break; + case HASH('*', 'd'): + case HASH('*', 'l'): + height = param.asc_height; + break; + case HASH('*', 'g'): + case HASH('*', 'h'): + case HASH('*', 'm'): + case HASH('*', 'r'): + case HASH('*', 'x'): + case HASH('*', 'y'): + height = param.x_height; + depth = param.desc_depth; + break; + case HASH('*', 'b'): + case HASH('*', 'c'): + case HASH('*', 'f'): + case HASH('*', 'q'): + case HASH('*', 'z'): + height = param.asc_height; + depth = param.desc_depth; + break; + case HASH('t', 's'): + height = param.x_height; + depth = param.desc_depth; + break; + case HASH('!', 0): + case HASH('?', 0): + case HASH('"', 0): + case HASH('#', 0): + case HASH('$', 0): + case HASH('%', 0): + case HASH('&', 0): + case HASH('*', 0): + case HASH('+', 0): + height = param.asc_height; + break; + case HASH('`', 0): + case HASH('\'', 0): + height = param.asc_height; + break; + case HASH('~', 0): + case HASH('^', 0): + case HASH('a', 'a'): + case HASH('g', 'a'): + height = param.asc_height; + break; + case HASH('r', 'u'): + case HASH('.', 0): + break; + case HASH(',', 0): + depth = param.comma_depth; + break; + case HASH('m', 'i'): + case HASH('-', 0): + case HASH('h', 'y'): + case HASH('e', 'm'): + height = param.x_height; + break; + case HASH(':', 0): + height = param.x_height; + break; + case HASH(';', 0): + height = param.x_height; + depth = param.comma_depth; + break; + case HASH('=', 0): + case HASH('e', 'q'): + height = param.x_height; + break; + case HASH('<', 0): + case HASH('>', 0): + case HASH('>', '='): + case HASH('<', '='): + case HASH('@', 0): + case HASH('/', 0): + case HASH('|', 0): + case HASH('\\', 0): + height = param.asc_height; + break; + case HASH('_', 0): + case HASH('u', 'l'): + case HASH('\\', '_'): + depth = param.em/4; + break; + case HASH('r', 'n'): + height = (param.em*3)/4; + break; + case HASH('s', 'r'): + height = (param.em*3)/4; + depth = param.em/4; + break; + case HASH('b', 'u'): + case HASH('s', 'q'): + case HASH('d', 'e'): + case HASH('d', 'g'): + case HASH('f', 'm'): + case HASH('c', 't'): + case HASH('r', 'g'): + case HASH('c', 'o'): + case HASH('p', 'l'): + case HASH('*', '*'): + case HASH('s', 'c'): + case HASH('s', 'l'): + case HASH('=', '='): + case HASH('~', '='): + case HASH('a', 'p'): + case HASH('!', '='): + case HASH('-', '>'): + case HASH('<', '-'): + case HASH('u', 'a'): + case HASH('d', 'a'): + case HASH('m', 'u'): + case HASH('d', 'i'): + case HASH('+', '-'): + case HASH('c', 'u'): + case HASH('c', 'a'): + case HASH('s', 'b'): + case HASH('s', 'p'): + case HASH('i', 'b'): + case HASH('i', 'p'): + case HASH('i', 'f'): + case HASH('p', 'd'): + case HASH('g', 'r'): + case HASH('n', 'o'): + case HASH('p', 't'): + case HASH('e', 's'): + case HASH('m', 'o'): + case HASH('b', 'r'): + case HASH('d', 'd'): + case HASH('r', 'h'): + case HASH('l', 'h'): + case HASH('o', 'r'): + case HASH('c', 'i'): + height = param.asc_height; + break; + case HASH('l', 't'): + case HASH('l', 'b'): + case HASH('r', 't'): + case HASH('r', 'b'): + case HASH('l', 'k'): + case HASH('r', 'k'): + case HASH('b', 'v'): + case HASH('l', 'f'): + case HASH('r', 'f'): + case HASH('l', 'c'): + case HASH('r', 'c'): + height = (param.em*3)/4; + depth = param.em/4; + break; +#if 0 + case HASH('%', '0'): + case HASH('-', '+'): + case HASH('-', 'D'): + case HASH('-', 'd'): + case HASH('-', 'd'): + case HASH('-', 'h'): + case HASH('.', 'i'): + case HASH('.', 'j'): + case HASH('/', 'L'): + case HASH('/', 'O'): + case HASH('/', 'l'): + case HASH('/', 'o'): + case HASH('=', '~'): + case HASH('A', 'E'): + case HASH('A', 'h'): + case HASH('A', 'N'): + case HASH('C', 's'): + case HASH('D', 'o'): + case HASH('F', 'c'): + case HASH('F', 'o'): + case HASH('I', 'J'): + case HASH('I', 'm'): + case HASH('O', 'E'): + case HASH('O', 'f'): + case HASH('O', 'K'): + case HASH('O', 'm'): + case HASH('O', 'R'): + case HASH('P', 'o'): + case HASH('R', 'e'): + case HASH('S', '1'): + case HASH('S', '2'): + case HASH('S', '3'): + case HASH('T', 'P'): + case HASH('T', 'p'): + case HASH('Y', 'e'): + case HASH('\\', '-'): + case HASH('a', '"'): + case HASH('a', '-'): + case HASH('a', '.'): + case HASH('a', '^'): + case HASH('a', 'b'): + case HASH('a', 'c'): + case HASH('a', 'd'): + case HASH('a', 'e'): + case HASH('a', 'h'): + case HASH('a', 'o'): + case HASH('a', 't'): + case HASH('a', '~'): + case HASH('b', 'a'): + case HASH('b', 'b'): + case HASH('b', 's'): + case HASH('c', '*'): + case HASH('c', '+'): + case HASH('f', '/'): + case HASH('f', 'a'): + case HASH('f', 'c'): + case HASH('f', 'o'): + case HASH('h', 'a'): + case HASH('h', 'o'): + case HASH('i', 'j'): + case HASH('l', 'A'): + case HASH('l', 'B'): + case HASH('l', 'C'): + case HASH('m', 'd'): + case HASH('n', 'c'): + case HASH('n', 'e'): + case HASH('n', 'm'): + case HASH('o', 'A'): + case HASH('o', 'a'): + case HASH('o', 'e'): + case HASH('o', 'q'): + case HASH('p', 'l'): + case HASH('p', 'p'): + case HASH('p', 's'): + case HASH('r', '!'): + case HASH('r', '?'): + case HASH('r', 'A'): + case HASH('r', 'B'): + case HASH('r', 'C'): + case HASH('r', 's'): + case HASH('s', 'h'): + case HASH('s', 's'): + case HASH('t', 'e'): + case HASH('t', 'f'): + case HASH('t', 'i'): + case HASH('t', 'm'): + case HASH('~', '~'): + case HASH('v', 'S'): + case HASH('v', 'Z'): + case HASH('v', 's'): + case HASH('v', 'z'): + case HASH('^', 'A'): + case HASH('^', 'E'): + case HASH('^', 'I'): + case HASH('^', 'O'): + case HASH('^', 'U'): + case HASH('^', 'a'): + case HASH('^', 'e'): + case HASH('^', 'i'): + case HASH('^', 'o'): + case HASH('^', 'u'): + case HASH('`', 'A'): + case HASH('`', 'E'): + case HASH('`', 'I'): + case HASH('`', 'O'): + case HASH('`', 'U'): + case HASH('`', 'a'): + case HASH('`', 'e'): + case HASH('`', 'i'): + case HASH('`', 'o'): + case HASH('`', 'u'): + case HASH('~', 'A'): + case HASH('~', 'N'): + case HASH('~', 'O'): + case HASH('~', 'a'): + case HASH('~', 'n'): + case HASH('~', 'o'): + case HASH('\'', 'A'): + case HASH('\'', 'C'): + case HASH('\'', 'E'): + case HASH('\'', 'I'): + case HASH('\'', 'O'): + case HASH('\'', 'U'): + case HASH('\'', 'a'): + case HASH('\'', 'c'): + case HASH('\'', 'e'): + case HASH('\'', 'i'): + case HASH('\'', 'o'): + case HASH('\'', 'u') + case HASH(':', 'A'): + case HASH(':', 'E'): + case HASH(':', 'I'): + case HASH(':', 'O'): + case HASH(':', 'U'): + case HASH(':', 'Y'): + case HASH(':', 'a'): + case HASH(':', 'e'): + case HASH(':', 'i'): + case HASH(':', 'o'): + case HASH(':', 'u'): + case HASH(':', 'y'): + case HASH(',', 'C'): + case HASH(',', 'c'): +#endif + } +} diff --git a/contrib/groff/addftinfo/guess.h b/contrib/groff/addftinfo/guess.h new file mode 100644 index 000000000000..4471dda8d9a6 --- /dev/null +++ b/contrib/groff/addftinfo/guess.h @@ -0,0 +1,44 @@ +// -*- C++ -*- +/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. + Written by James Clark (jjc@jclark.com) + +This file is part of groff. + +groff is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +groff is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License along +with groff; see the file COPYING. If not, write to the Free Software +Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +struct font_params { + int italic; + int em; + int x_height; + int fig_height; + int cap_height; + int asc_height; + int body_height; + int comma_depth; + int desc_depth; + int body_depth; +}; + +struct char_metric { + int width; + int type; + int height; + int depth; + int ic; + int left_ic; + int sk; +}; + +void guess(const char *s, const font_params ¶m, char_metric *metric); diff --git a/contrib/groff/afmtodit/Makefile.sub b/contrib/groff/afmtodit/Makefile.sub new file mode 100644 index 000000000000..fb5daac6ce84 --- /dev/null +++ b/contrib/groff/afmtodit/Makefile.sub @@ -0,0 +1,21 @@ +MAN1=afmtodit.n +CLEANADD=afmtodit + +all: afmtodit + +afmtodit: afmtodit.pl + if test -n "$(PERLPATH)"; then \ + sed -e 's;/usr/bin/perl;$(PERLPATH);' \ + $(srcdir)/afmtodit.pl >afmtodit; \ + else \ + cp $(srcdir)/afmtodit.pl afmtodit; \ + fi + chmod +x afmtodit + +install_data: afmtodit + -test -d $(bindir) || mkdir $(bindir) + -rm -f $(bindir)/afmtodit + $(INSTALL_PROGRAM) afmtodit $(bindir)/afmtodit + +uninstall_sub: + -rm -f $(bindir)/afmtodit diff --git a/contrib/groff/afmtodit/afmtodit.man b/contrib/groff/afmtodit/afmtodit.man new file mode 100644 index 000000000000..84fe8f292c0f --- /dev/null +++ b/contrib/groff/afmtodit/afmtodit.man @@ -0,0 +1,221 @@ +.ig \"-*- nroff -*- +Copyright (C) 1989-1995 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be included in +translations approved by the Free Software Foundation instead of in +the original English. +.. +.\" Like TP, but if specified indent is more than half +.\" the current line-length - indent, use the default indent. +.de Tp +.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +.el .TP "\\$1" +.. +.TH AFMTODIT @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" +.SH NAME +afmtodit \- create font files for use with groff \-Tps +.SH SYNOPSIS +.B afmtodit +[ +.B \-ns +] +[ +.BI \-d desc_file +] +[ +.BI \-e enc_file +] +[ +.BI \-i n +] +[ +.BI \-a n +] +.I afm_file +.I map_file +.I font +.SH DESCRIPTION +.B afmtodit +creates a font file for use with groff and +.BR grops . +.B afmtodit +is written in perl; +you must have perl version 3 installed in order to run +.BR afmtodit . +.I afm_file +is the AFM (Adobe Font Metric) file for the font. +.I map_file +is a file that says which groff character names map onto +each PostScript character name; +this file should contain a sequence of lines of the form +.IP +.I +ps_char groff_char +.LP +where +.I ps_char +is the PostScript name of the character +and +.I groff_char +is the groff name of the character (as used in the groff font file.) +The same +.I ps_char +can occur multiple times in the file; +each +.I groff_char +must occur at most once. +.I font +is the groff name of the font. +If a PostScript character is in the encoding to be used for the font +but is not mentioned in +.I map_file +then +.B afmtodit +will put it in the groff font file as an unnamed character, +which can be accessed by the +.B \eN +escape sequence in +.BR troff . +The groff font file will be output to a file called +.IR font . +.LP +If there is a downloadable font file for the font, it may be listed in +the file +.BR @FONTDIR@/devps/download ; +see +.BR grops (@MAN1EXT@). +.LP +If the +.B \-i +option is used, +.B afmtodit +will automatically generate an italic correction, +a left italic correction and a subscript correction +for each character +(the significance of these parameters is explained in +.BR groff_font (@MAN5EXT@)); +these parameters may be specified for individual characters by +adding to the +.I afm_file +lines of the form: +.IP +.BI italicCorrection\ ps_char\ n +.br +.BI leftItalicCorrection\ ps_char\ n +.br +.BI subscriptCorrection\ ps_char\ n +.LP +where +.I ps_char +is the PostScript name of the character, +and +.I n +is the desired value of the corresponding parameter in thousandths of an em. +These parameters are normally needed only for italic (or oblique) fonts. +.SH OPTIONS +.TP +.B \-n +Don't output a +.B ligatures +command for this font. +Use this with constant-width fonts. +.TP +.B \-s +The font is special. +The effect of this option is to add the +.B special +command to the font file. +.TP +.BI \-d desc_file +The device description file is +.I desc_file +rather than the default +.BR DESC . +.TP +.BI \-e enc_file +The PostScript font should be reencoded to use the encoding described +in enc_file. +The format of +.I enc_file +is described in +.BR grops (@MAN1EXT@). +.TP +.BI \-a n +Use +.I n +as the slant parameter in the font file; +this is used by groff in the positioning of accents. +By default +.B afmtodit +uses the negative of the ItalicAngle specified in the afm file; +with true italic fonts it is sometimes desirable to use +a slant that is less than this. +If you find that characters from an italic font have accents +placed too far to the right over them, +then use the +.B \-a +option to give the font a smaller slant. +.TP +.BI \-i n +Generate an italic correction for each character so that +the character's width plus the character's italic correction +is equal to +.I n +thousandths of an em +plus the amount by which the right edge of the character's bounding +is to the right of the character's origin. +If this would result in a negative italic correction, use a zero +italic correction instead. +.IP +Also generate a subscript correction equal to the +product of the tangent of the slant of the font and +four fifths of the x-height of the font. +If this would result in a subscript correction greater than the italic +correction, use a subscript correction equal to the italic correction +instead. +.IP +Also generate a left italic correction for each character +equal to +.I n +thousandths of an em +plus the amount by which the left edge of the character's bounding box +is to the left of the character's origin. +The left italic correction may be negative. +.IP +This option is normally needed only with italic (or oblique) fonts. +The font files distributed with groff were created using an option of +.B \-i50 +for italic fonts. +.SH FILES +.Tp \w'\fB@FONTDIR@/devps/download'u+2n +.B @FONTDIR@/devps/DESC +Device description file. +.TP +.BI @FONTDIR@/devps/ F +Font description file for font +.IR F . +.TP +.B @FONTDIR@/devps/download +List of downloadable fonts. +.TP +.B @FONTDIR@/devps/text.enc +Encoding used for text fonts. +.TP +.B @FONTDIR@/devps/generate/textmap +Standard mapping. +.SH "SEE ALSO" +.BR groff (@MAN1EXT@), +.BR grops (@MAN1EXT@), +.BR groff_font (@MAN5EXT@), +.BR perl (1) diff --git a/contrib/groff/afmtodit/afmtodit.pl b/contrib/groff/afmtodit/afmtodit.pl new file mode 100644 index 000000000000..c3d839a224a8 --- /dev/null +++ b/contrib/groff/afmtodit/afmtodit.pl @@ -0,0 +1,326 @@ +#! /usr/bin/perl -P- +# -*- Perl -*- +#Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. +# Written by James Clark (jjc@jclark.com) +# +#This file is part of groff. +# +#groff is free software; you can redistribute it and/or modify it under +#the terms of the GNU General Public License as published by the Free +#Software Foundation; either version 2, or (at your option) any later +#version. +# +#groff is distributed in the hope that it will be useful, but WITHOUT ANY +#WARRANTY; without even the implied warranty of MERCHANTABILITY or +#FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +#for more details. +# +#You should have received a copy of the GNU General Public License along +#with groff; see the file COPYING. If not, write to the Free Software +#Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +$prog = $0; +$prog =~ s@.*/@@; + +do 'getopts.pl'; +do Getopts('e:sd:i:a:n'); + +if ($#ARGV != 2) { + die "Usage: $prog [-ns] [-d DESC] [-e encoding] [-i n] [-a angle] afmfile mapfile font\n"; +} + +$afm = $ARGV[0]; +$map = $ARGV[1]; +$font = $ARGV[2]; +$desc = $opt_d || "DESC"; + +# read the afm file + +open(AFM, $afm) || die "$prog: can't open \`$ARGV[0]': $!\n"; + +while (<AFM>) { + chop; + @field = split(' '); + if ($field[0] eq "FontName") { + $psname = $field[1]; + } + elsif($field[0] eq "ItalicAngle") { + $italic_angle = -$field[1]; + } + elsif ($field[0] eq "KPX") { + if ($#field == 3) { + push(kern1, $field[1]); + push(kern2, $field[2]); + push(kernx, $field[3]); + } + } + elsif ($field[0] eq "italicCorrection") { + $italic_correction{$field[1]} = $field[2]; + } + elsif ($field[0] eq "leftItalicCorrection") { + $left_italic_correction{$field[1]} = $field[2]; + } + elsif ($field[0] eq "subscriptCorrection") { + $subscript_correction{$field[1]} = $field[2]; + } + elsif ($field[0] eq "StartCharMetrics") { + while (<AFM>) { + @field = split(' '); + last if ($field[0] eq "EndCharMetrics"); + if ($field[0] eq "C") { + $c = -1; + $wx = 0; + $n = ""; + $lly = 0; + $ury = 0; + $llx = 0; + $urx = 0; + $c = $field[1]; + $i = 2; + while ($i <= $#field) { + if ($field[$i] eq "WX") { + $w = $field[$i + 1]; + $i += 2; + } + elsif ($field[$i] eq "N") { + $n = $field[$i + 1]; + $i += 2; + } + elsif ($field[$i] eq "B") { + $llx = $field[$i + 1]; + $lly = $field[$i + 2]; + $urx = $field[$i + 3]; + $ury = $field[$i + 4]; + $i += 5; + } + elsif ($field[$i] eq "L") { + push(ligatures, $field[$i + 2]); + $i += 3; + } + else { + while ($i <= $#field && $field[$i] ne ";") { + $i++; + } + $i++; + } + } + if (!$opt_e && $c != -1) { + $encoding[$c] = $n; + $in_encoding{$n} = 1; + } + $width{$n} = $w; + $height{$n} = $ury; + $depth{$n} = -$lly; + $left_side_bearing{$n} = -$llx; + $right_side_bearing{$n} = $urx - $w; + } + } + } +} +close(AFM); + +# read the DESC file + +$sizescale = 1; + +open(DESC, $desc) || die "$prog: can't open \`$desc': $!\n"; +while (<DESC>) { + next if /^#/; + chop; + @field = split(' '); + last if $field[0] eq "charset"; + if ($field[0] eq "res") { $resolution = $field[1]; } + if ($field[0] eq "unitwidth") { $unitwidth = $field[1]; } + if ($field[0] eq "sizescale") { $sizescale = $field[1]; } +} +close(DESC); + +if ($opt_e) { + # read the encoding file + + open(ENCODING, $opt_e) || die "$prog: can't open \`$opt_e': $!\n"; + while (<ENCODING>) { + chop; + @field = split(' '); + if ($#field == 1) { + if ($field[1] >= 0 && defined $width{$field[0]}) { + $encoding[$field[1]] = $field[0]; + $in_encoding{$field[0]} = 1; + } + } + } + close(ENCODING); +} + +# read the map file + +open(MAP, $map) || die "$prog: can't open \`$map': $!\n"; +while (<MAP>) { + next if /^#/; + chop; + @field = split(' '); + if ($#field == 1 && $in_encoding{$field[0]}) { + if (defined $mapped{$field[1]}) { + warn "Both $mapped{$field[1]} and $field[0] map to $field[1]"; + } + elsif ($field[1] eq "space") { + # the PostScript character "space" is automatically mapped + # to the groff character "space"; this is for grops + warn "you are not allowed to map to the groff character `space'"; + } + elsif ($field[0] eq "space") { + warn "you are not allowed to map the PostScript character `space'"; + } + else { + $nmap{$field[0]} += 0; + $map{$field[0],$nmap{$field[0]}} = $field[1]; + $nmap{$field[0]} += 1; + $mapped{$field[1]} = $field[0]; + } + } +} +close(MAP); + +$italic_angle = $opt_a if $opt_a; + +# print it all out + +open(FONT, ">$font") || die "$prog: can't open \`$font' for output: $!\n"; +select(FONT); + +print("name $font\n"); +print("internalname $psname\n") if $psname; +print("special\n") if $opt_s; +printf("slant %g\n", $italic_angle) if $italic_angle != 0; +printf("spacewidth %d\n", do conv($width{"space"})) if defined $width{"space"}; + +if ($opt_e) { + $e = $opt_e; + $e =~ s@.*/@@; + print("encoding $e\n"); +} + +if (!$opt_n && $#ligatures >= 0) { + print("ligatures"); + foreach $lig (@ligatures) { + print(" $lig"); + } + print(" 0\n"); +} + +if ($#kern1 >= 0) { + print("kernpairs\n"); + + for ($i = 0; $i <= $#kern1; $i++) { + $c1 = $kern1[$i]; + $c2 = $kern2[$i]; + if ($in_encoding{$c1} == 1 && $nmap{$c1} != 0 + && $in_encoding{$c2} == 1 && $nmap{$c2} != 0) { + for ($j = 0; $j < $nmap{$c1}; $j++) { + for ($k = 0; $k < $nmap{$c2}; $k++) { + if ($kernx[$i] != 0) { + printf("%s %s %d\n", + $map{$c1,$j}, + $map{$c2,$k}, + do conv($kernx[$i])); + } + } + } + } + } +} + +# characters not shorter than asc_boundary are considered to have ascenders +$asc_boundary = $height{"t"} - 1; + +# likewise for descenders +$desc_boundary = $depth{"g"}; +$desc_boundary = $depth{"j"} if $depth{"j"} < $desc_boundary; +$desc_boundary = $depth{"p"} if $depth{"p"} < $desc_boundary; +$desc_boundary = $depth{"q"} if $depth{"q"} < $desc_boundary; +$desc_boundary = $depth{"y"} if $depth{"y"} < $desc_boundary; +$desc_boundary -= 1; + +if (defined $height{"x"}) { + $xheight = $height{"x"}; +} +elsif (defined $height{"alpha"}) { + $xheight = $height{"alpha"}; +} +else { + $xheight = 450; +} + +$italic_angle = $italic_angle*3.14159265358979323846/180.0; +$slant = sin($italic_angle)/cos($italic_angle); +$slant = 0 if $slant < 0; + +print("charset\n"); +for ($i = 0; $i < 256; $i++) { + $ch = $encoding[$i]; + if ($ch ne "" && $ch ne "space") { + $map{$ch,"0"} = "---" if $nmap{$ch} == 0; + $type = 0; + $h = $height{$ch}; + $h = 0 if $h < 0; + $d = $depth{$ch}; + $d = 0 if $d < 0; + $type = 1 if $d >= $desc_boundary; + $type += 2 if $h >= $asc_boundary; + printf("%s\t%d", $map{$ch,"0"}, do conv($width{$ch})); + $italic_correction = 0; + $left_math_fit = 0; + $subscript_correction = 0; + if (defined $opt_i) { + $italic_correction = $right_side_bearing{$ch} + $opt_i; + $italic_correction = 0 if $italic_correction < 0; + $subscript_correction = $slant * $xheight * .8; + $subscript_correction = $italic_correction if + $subscript_correction > $italic_correction; + $left_math_fit = $left_side_bearing{$ch} + $opt_i; + } + if (defined $italic_correction{$ch}) { + $italic_correction = $italic_correction{$ch}; + } + if (defined $left_italic_correction{$ch}) { + $left_math_fit = $left_italic_correction{$ch}; + } + if (defined $subscript_correction{$ch}) { + $subscript_correction = $subscript_correction{$ch}; + } + if ($subscript_correction != 0) { + printf(",%d,%d", do conv($h), do conv($d)); + printf(",%d,%d,%d", do conv($italic_correction), + do conv($left_math_fit), + do conv($subscript_correction)); + } + elsif ($left_math_fit != 0) { + printf(",%d,%d", do conv($h), do conv($d)); + printf(",%d,%d", do conv($italic_correction), + do conv($left_math_fit)); + } + elsif ($italic_correction != 0) { + printf(",%d,%d", do conv($h), do conv($d)); + printf(",%d", do conv($italic_correction)); + } + elsif ($d != 0) { + printf(",%d,%d", do conv($h), do conv($d)); + } + else { + # always put the height in to stop groff guessing + printf(",%d", do conv($h)); + } + printf("\t%d", $type); + printf("\t0%03o\t%s\n", $i, $ch); + for ($j = 1; $j < $nmap{$ch}; $j++) { + printf("%s\t\"\n", $map{$ch,$j}); + } + } + if ($ch eq "space" && defined $width{"space"}) { + printf("space\t%d\t0\t0%03o\n", do conv($width{"space"}), $i); + } +} + +sub conv { + $_[0]*$unitwidth*$resolution/(72*1000*$sizescale) + ($_[0] < 0 ? -.5 : .5); +} diff --git a/contrib/groff/configure b/contrib/groff/configure new file mode 100755 index 000000000000..3806f6eeb189 --- /dev/null +++ b/contrib/groff/configure @@ -0,0 +1,2184 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.4 +# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE + +# Initialize some other variables. +subdirs= + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -build | --build | --buil | --bui | --bu | --b) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=* | --b=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=PREFIX install architecture-dependent files in PREFIX + [same as prefix] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +--enable and --with options recognized:$ac_help +EOF + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.4" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = set; then LANG=C; export LANG; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=groff/groff.cc + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + +if test "x$prefix" = xNONE; then +echo $ac_n "checking for prefix by ""... $ac_c" 1>&6 +# Extract the first word of "grops", so it can be a program name with args. +set dummy grops; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_path_GROPS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GROPS" in + /*) + ac_cv_path_GROPS="$GROPS" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GROPS="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +GROPS="$ac_cv_path_GROPS" +if test -n "$GROPS"; then + echo "$ac_t""$GROPS" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -n "$ac_cv_path_GROPS"; then + prefix=`echo $ac_cv_path_GROPS|sed 's%/[^/][^/]*//*[^/][^/]*$%%'` + fi +fi + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="cc" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <<EOF +#ifdef __GNUC__ + yes; +#endif +EOF +if ${CC-cc} -E conftest.c 2>&5 | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 +if test $ac_cv_prog_gcc = yes; then + GCC=yes + if test "${CFLAGS+set}" != set; then + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_gcc_g=yes +else + ac_cv_prog_gcc_g=no +fi +rm -f conftest* + +fi + echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6 + if test $ac_cv_prog_gcc_g = yes; then + CFLAGS="-g -O" + else + CFLAGS="-O" + fi + fi +else + GCC= + test "${CFLAGS+set}" = set || CFLAGS="-g" +fi + +for ac_prog in $CCC c++ g++ gcc CC cxx +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CXX="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CXX="$ac_cv_prog_CXX" +if test -n "$CXX"; then + echo "$ac_t""$CXX" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$CXX" && break +done +test -n "$CXX" || CXX="gcc" + + +echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.C <<EOF +#ifdef __GNUC__ + yes; +#endif +EOF +if ${CXX-g++} -E conftest.C 2>&5 | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gxx=yes +else + ac_cv_prog_gxx=no +fi +fi +echo "$ac_t""$ac_cv_prog_gxx" 1>&6 +if test $ac_cv_prog_gxx = yes; then + GXX=yes + if test "${CXXFLAGS+set}" != set; then + echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_gxx_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.cc +if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then + ac_cv_prog_gxx_g=yes +else + ac_cv_prog_gxx_g=no +fi +rm -f conftest* + +fi + echo "$ac_t""$ac_cv_prog_gxx_g" 1>&6 + if test $ac_cv_prog_gxx_g = yes; then + CXXFLAGS="-g -O" + else + CXXFLAGS="-O" + fi + fi +else + GXX= + test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" +fi + +# If we cannot run a trivial program, we must be cross compiling. +echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_cross=yes +else +cat > conftest.$ac_ext <<EOF +#line 599 "configure" +#include "confdefs.h" +main(){return(0);} +EOF +eval $ac_link +if test -s conftest && (./conftest; exit) 2>/dev/null; then + ac_cv_c_cross=no +else + ac_cv_c_cross=yes +fi +fi +rm -fr conftest* +fi +cross_compiling=$ac_cv_c_cross +echo "$ac_t""$ac_cv_c_cross" 1>&6 + + + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +if test "$cross_compiling" = no; then +echo $ac_n "checking that C++ compiler can compile simple program""... $ac_c" 1>&6 +fi +if test "$cross_compiling" = yes; then + : +else +cat > conftest.$ac_ext <<EOF +#line 631 "configure" +#include "confdefs.h" +#ifdef __cplusplus +extern "C" void exit(int); +#endif +int main() { return 0; } +EOF +eval $ac_link +if test -s conftest && (./conftest; exit) 2>/dev/null; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +{ echo "configure: error: a working C++ compiler is required" 1>&2; exit 1; } +fi +fi +rm -fr conftest* +if test "$cross_compiling" = no; then +echo $ac_n "checking that C++ static constructors and destructors are called""... $ac_c" 1>&6 +fi +if test "$cross_compiling" = yes; then + : +else +cat > conftest.$ac_ext <<EOF +#line 654 "configure" +#include "confdefs.h" +#ifdef __cplusplus +extern "C" void exit(int); +#endif + +extern "C" { + void _exit(int); +} +int i; +struct A { + char dummy; + A() { i = 1; } + ~A() { if (i == 1) _exit(0); } +}; +A a; +int main() { return 1; } + +EOF +eval $ac_link +if test -s conftest && (./conftest; exit) 2>/dev/null; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +{ echo "configure: error: a working C++ compiler is required" 1>&2; exit 1; } +fi +fi +rm -fr conftest* +echo $ac_n "checking that header files support C++""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 684 "configure" +#include "confdefs.h" +#include <stdio.h> +int main() { return 0; } +int t() { +fopen(0, 0); +; return 0; } +EOF +if eval $ac_link; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +{ echo "configure: error: header files do not support C++ (if you are using a version of gcc/g++ earlier than 2.5, you should install libg++)" 1>&2; exit 1; } +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +if test -z "$PSPRINT" +then + for ac_prog in lpr +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_LPR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LPR"; then + ac_cv_prog_LPR="$LPR" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_LPR="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +LPR="$ac_cv_prog_LPR" +if test -n "$LPR"; then + echo "$ac_t""$LPR" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$LPR" && break +done + + for ac_prog in lp +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_LP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LP"; then + ac_cv_prog_LP="$LP" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_LP="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +LP="$ac_cv_prog_LP" +if test -n "$LP"; then + echo "$ac_t""$LP" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$LP" && break +done + + if test -n "$LPR" && test -n "$LP" + then + # HP-UX provides an lpr command that emulates lpr using lp, + # but it doesn't have lpq; in this case we want to use lp + # rather than lpr. + for ac_prog in lpq +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_LPQ'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$LPQ"; then + ac_cv_prog_LPQ="$LPQ" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_LPQ="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +LPQ="$ac_cv_prog_LPQ" +if test -n "$LPQ"; then + echo "$ac_t""$LPQ" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$LPQ" && break +done + + test -n "$LPQ" || LPR= + fi + if test -n "$LPR" + then + PSPRINT="$LPR" + elif test -n "$LP" + then + PSPRINT="$LP" + fi +fi + +echo $ac_n "checking for command to use for printing PostScript files""... $ac_c" 1>&6 +echo "$ac_t""$PSPRINT" 1>&6 +# Figure out DVIPRINT from PSPRINT. +echo $ac_n "checking for command to use for printing dvi files""... $ac_c" 1>&6 +if test -n "$PSPRINT" && test -z "$DVIPRINT" +then + if test "X$PSPRINT" = "Xlpr" + then + DVIPRINT="lpr -d" + else + DVIPRINT="$PSPRINT" + fi +fi + +echo "$ac_t""$DVIPRINT" 1>&6 +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_path_PERLPATH'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$PERLPATH" in + /*) + ac_cv_path_PERLPATH="$PERLPATH" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_PERLPATH="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_PERLPATH" && ac_cv_path_PERLPATH="/usr/bin/perl" + ;; +esac +fi +PERLPATH="$ac_cv_path_PERLPATH" +if test -n "$PERLPATH"; then + echo "$ac_t""$PERLPATH" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +for ac_prog in byacc 'bison -y' +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_YACC="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +YACC="$ac_cv_prog_YACC" +if test -n "$YACC"; then + echo "$ac_t""$YACC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +ac_dir=`cd $ac_aux_dir; pwd` +ac_install_sh="$ac_dir/install-sh -c" + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + for ac_prog in ginstall installbsd scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + # OSF/1 installbsd also uses dspmsg, but is usable. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_ifs" + # As a last resort, use the slow shell script. + test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh" +fi + INSTALL="$ac_cv_path_install" +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + rm -f conftestdata +if ln -s X conftestdata 2>/dev/null +then + rm -f conftestdata + ac_cv_prog_LN_S="ln -s" +else + ac_cv_prog_LN_S=ln +fi +fi +LN_S="$ac_cv_prog_LN_S" +if test "$ac_cv_prog_LN_S" = "ln -s"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +echo $ac_n "checking for csh hash hack""... $ac_c" 1>&6 +cat <<EOF >conftest.sh +#!/bin/sh +true || exit 0 +export PATH || exit 0 +exit 1 +EOF +chmod +x conftest.sh +if echo ./conftest.sh | (csh >/dev/null 2>&1) >/dev/null 2>&1 +then + echo "$ac_t""yes" 1>&6; SH_SCRIPT_SED_CMD='1s/.*/:/' +else + echo "$ac_t""no" 1>&6; SH_SCRIPT_SED_CMD='' +fi +rm -f conftest.sh + + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext <<EOF +#line 1056 "configure" +#include "confdefs.h" +#include <assert.h> +Syntax Error +EOF +eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext <<EOF +#line 1070 "configure" +#include "confdefs.h" +#include <assert.h> +Syntax Error +EOF +eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +for ac_hdr in unistd.h dirent.h limits.h sys/dir.h stdlib.h +do +ac_safe=`echo "$ac_hdr" | tr './\055' '___'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1103 "configure" +#include "confdefs.h" +#include <$ac_hdr> +EOF +eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | tr '[a-z]./\055' '[A-Z]___'` + cat >> confdefs.h <<EOF +#define $ac_tr_hdr 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +done + +echo $ac_n "checking for ISC 3.x or 4.x""... $ac_c" 1>&6 +if grep '[34]\.' /usr/options/cb.name >/dev/null 2>&1 +then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define _SYSV3 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +echo $ac_n "checking whether -D_POSIX_SOURCE is necessary""... $ac_c" 1>&6 + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +cat > conftest.$ac_ext <<EOF +#line 1151 "configure" +#include "confdefs.h" +#include <stdio.h> +extern "C" { void fileno(int); } +int main() { return 0; } +int t() { + +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define _POSIX_SOURCE 1 +EOF + +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking declaration of getopt in stdlib.h""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1187 "configure" +#include "confdefs.h" +#include <stdlib.h> +extern "C" { void getopt(int); } +int main() { return 0; } +int t() { + +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 +else + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define STDLIB_H_DECLARES_GETOPT 1 +EOF + +fi +rm -f conftest* + +echo $ac_n "checking declaration of getopt in unistd.h""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1210 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <unistd.h> +extern "C" { void getopt(int); } +int main() { return 0; } +int t() { + +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 +else + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define UNISTD_H_DECLARES_GETOPT 1 +EOF + +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking declaration of putenv""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1247 "configure" +#include "confdefs.h" +#include <stdlib.h> +extern "C" { void putenv(int); } +int main() { return 0; } +int t() { + +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 +else + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +cat >> confdefs.h <<\EOF +#define STDLIB_H_DECLARES_PUTENV 1 +EOF + +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking declaration of popen""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1284 "configure" +#include "confdefs.h" +#include <stdio.h> +extern "C" { void popen(int); } +int main() { return 0; } +int t() { + +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 +else + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define STDIO_H_DECLARES_POPEN 1 +EOF + +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking declaration of pclose""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1320 "configure" +#include "confdefs.h" +#include <stdio.h> +extern "C" { void pclose(int); } +int main() { return 0; } +int t() { + +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 +else + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define STDIO_H_DECLARES_PCLOSE 1 +EOF + +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking C++ <osfcn.h>""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1356 "configure" +#include "confdefs.h" +#include <osfcn.h> +int main() { return 0; } +int t() { +read(0, 0, 0); open(0, 0); +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define HAVE_CC_OSFCN_H 1 +EOF + +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking C++ <limits.h>""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1391 "configure" +#include "confdefs.h" +#include <limits.h> +int main() { return 0; } +int t() { +int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX; +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define HAVE_CC_LIMITS_H 1 +EOF + +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking for declaration of time_t""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1426 "configure" +#include "confdefs.h" +#include <time.h> +int main() { return 0; } +int t() { +time_t t = time(0); struct tm *p = localtime(&t); +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +else + rm -rf conftest* + echo "$ac_t""no" 1>&6;cat >> confdefs.h <<\EOF +#define LONG_FOR_TIME_T 1 +EOF + +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1457 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <signal.h> +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) (); +int main() { return 0; } +int t() { +int i; +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + ac_cv_type_signal=void +else + rm -rf conftest* + ac_cv_type_signal=int +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_signal" 1>&6 +cat >> confdefs.h <<EOF +#define RETSIGTYPE $ac_cv_type_signal +EOF + + +echo $ac_n "checking struct exception""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1491 "configure" +#include "confdefs.h" +#include <math.h> +int main() { return 0; } +int t() { +struct exception e; +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define HAVE_STRUCT_EXCEPTION 1 +EOF + +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + +echo $ac_n "checking for working mmap""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_func_mmap'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap=no +else +cat > conftest.$ac_ext <<EOF +#line 1519 "configure" +#include "confdefs.h" + +/* Thanks to Mike Haertel and Jim Avera for this test. */ +#include <sys/types.h> +#include <fcntl.h> +#include <sys/mman.h> + +#ifdef BSD +# ifndef BSD4_1 +# define HAVE_GETPAGESIZE +# endif +#endif + +#ifndef HAVE_GETPAGESIZE +# include <sys/param.h> +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif +# else +# ifdef NBPC +# define getpagesize() NBPC +# else +# define getpagesize() PAGESIZE /* SVR4 */ +# endif +# endif +# endif +#endif + +#ifdef __osf__ +# define valloc malloc +#endif + +#ifdef __cplusplus +extern "C" { void *valloc(unsigned), *malloc(unsigned); } +#else +char *valloc(), *malloc(); +#endif + +int +main() +{ + char *buf1, *buf2, *buf3; + int i = getpagesize(), j; + int i2 = getpagesize()*2; + int fd; + + buf1 = (char *)valloc(i2); + buf2 = (char *)valloc(i); + buf3 = (char *)malloc(i2); + for (j = 0; j < i2; ++j) + *(buf1 + j) = rand(); + fd = open("conftestmmap", O_CREAT | O_RDWR, 0666); + write(fd, buf1, i2); + mmap(buf2, i, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE, fd, 0); + for (j = 0; j < i; ++j) + if (*(buf1 + j) != *(buf2 + j)) + exit(1); + lseek(fd, (long)i, 0); + read(fd, buf2, i); /* read into mapped memory -- file should not change */ + /* (it does in i386 SVR4.0 - Jim Avera, jima@netcom.com) */ + lseek(fd, (long)0, 0); + read(fd, buf3, i2); + for (j = 0; j < i2; ++j) + if (*(buf1 + j) != *(buf3 + j)) + exit(1); + exit(0); +} + +EOF +eval $ac_link +if test -s conftest && (./conftest; exit) 2>/dev/null; then + ac_cv_func_mmap=yes +else + ac_cv_func_mmap=no +fi +fi +rm -fr conftest* +fi +echo "$ac_t""$ac_cv_func_mmap" 1>&6 +if test $ac_cv_func_mmap = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_MMAP 1 +EOF + +fi + +saved_libs="$LIBS" +LIBS="$LIBS -lm" +for ac_func in fmod strtol getcwd strerror putenv +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1620 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +char $ac_func(); + +int main() { return 0; } +int t() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if eval $ac_link; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +LIBOBJS="$LIBOBJS ${ac_func}.o" +fi + +done + +LIBS="$saved_libs" +for ac_func in rename mkstemp +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1670 "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +char $ac_func(); + +int main() { return 0; } +int t() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if eval $ac_link; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr '[a-z]' '[A-Z]'` + cat >> confdefs.h <<EOF +#define $ac_tr_func 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +done + +echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1719 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <signal.h> +/* NetBSD declares sys_siglist in unistd.h. */ +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +int main() { return 0; } +int t() { +char *msg = *(sys_siglist + 1); +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + ac_cv_decl_sys_siglist=yes +else + rm -rf conftest* + ac_cv_decl_sys_siglist=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_decl_sys_siglist" 1>&6 +if test $ac_cv_decl_sys_siglist = yes; then + cat >> confdefs.h <<\EOF +#define SYS_SIGLIST_DECLARED 1 +EOF + +fi + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking whether ANSI array delete syntax supported""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1759 "configure" +#include "confdefs.h" + +int main() { return 0; } +int t() { +char *p = new char[5]; delete [] p; +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +else + rm -rf conftest* + echo "$ac_t""no" 1>&6;cat >> confdefs.h <<\EOF +#define ARRAY_DELETE_NEEDS_SIZE 1 +EOF + +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking traditional preprocessor""... $ac_c" 1>&6 +cat > conftest.$ac_ext <<EOF +#line 1794 "configure" +#include "confdefs.h" +#define name2(a,b) a/**/b +int main() { return 0; } +int t() { +int name2(foo,bar); +; return 0; } +EOF +if eval $ac_compile; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define TRADITIONAL_CPP 1 +EOF + +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' + +echo $ac_n "checking w_coredump""... $ac_c" 1>&6 +if test "$cross_compiling" = yes; then + echo "$ac_t""no" 1>&6 +else +cat > conftest.$ac_ext <<EOF +#line 1825 "configure" +#include "confdefs.h" + +#include <sys/types.h> +#include <sys/wait.h> +main() +{ +#ifdef WCOREFLAG + exit(1); +#else + int i = 0; + ((union wait *)&i)->w_coredump = 1; + exit(i != 0200); +#endif +} + +EOF +eval $ac_link +if test -s conftest && (./conftest; exit) 2>/dev/null; then + echo "$ac_t""yes" 1>&6;cat >> confdefs.h <<\EOF +#define WCOREFLAG 0200 +EOF + +else + echo "$ac_t""no" 1>&6 +fi +fi +rm -fr conftest* +echo $ac_n "checking default value for grops -b option""... $ac_c" 1>&6 +test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7 +echo "$ac_t""$BROKEN_SPOOLER_FLAGS" 1>&6 + +echo $ac_n "checking default paper size""... $ac_c" 1>&6 +if test -z "$PAGE" +then + descfile= + if test -r $prefix/share/groff/font/devps/DESC + then + descfile=$prefix/share/groff/font/devps/DESC + elif test -r $prefix/lib/groff/font/devps/DESC + then + descfile=$prefix/lib/groff/font/devps/DESC + fi + if test -n "$descfile" \ + && grep "^paperlength 841890" $descfile >/dev/null 2>&1 + then + PAGE=A4 + else + PAGE=letter + fi +fi +if test -z "$PAGE" +then + dom=`awk '($1 == "dom" || $1 == "search") { print $2; exit}' \ + /etc/resolv.conf 2>/dev/null` + + if test -z "$dom" + then + dom=`(domainname) 2>/dev/null | tr -d '+'` + if test -z "$dom" + then + dom=`(hostname) 2>/dev/null | grep '\.'` + fi + fi + + # If the top-level domain is two letters and it's not `us' or `ca' + # then they probably use A4 paper. + case "$dom" in + *.[Uu][Ss]|*.[Cc][Aa]) ;; + *.[A-Za-z][A-Za-z]) PAGE=A4 ;; + esac +fi +test -n "$PAGE" || PAGE=letter +echo "$ac_t""$PAGE" 1>&6 + +echo $ac_n "checking for existing troff installation""... $ac_c" 1>&6 +if test "x`(echo .tm '|n(.g' | tr '|' '\\\\' | troff -z -i 2>&1) 2>/dev/null`" \ + = x0 +then + echo "$ac_t""yes" 1>&6 + g=g +else + echo "$ac_t""no" 1>&6 + g= +fi + + + +echo $ac_n "checking for prefix of system macro packages""... $ac_c" 1>&6 +sys_tmac_prefix= +sys_tmac_file_prefix= +for d in /usr/share/lib/tmac /usr/lib/tmac +do + for t in "" tmac. + do + for m in an s m + do + f=$d/$t$m + if test -z "$sys_tmac_prefix" \ + && test -f $f \ + && grep '^\.if' $f >/dev/null 2>&1 + then + sys_tmac_prefix=$d/$t + sys_tmac_file_prefix=$t + fi + done + done +done +echo "$ac_t""$sys_tmac_prefix" 1>&6 + +tmac_wrap= +echo $ac_n "checking which system macro packages should be made available""... $ac_c" 1>&6 +if test "x$sys_tmac_file_prefix" = "xtmac." +then + for f in $sys_tmac_prefix* + do + suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` + case "$suff" in + e);; + *) + grep "Copyright.*Free Software Foundation" $f >/dev/null \ + || tmac_wrap="$tmac_wrap $suff" + ;; + esac + done +elif test -n "$sys_tmac_prefix" +then + files=`echo $sys_tmac_prefix*` + grep "\\.so" $files >conftest.sol + for f in $files + do + case "$f" in + ${sys_tmac_prefix}e) ;; + *.me) ;; + */ms.*) ;; + *) + b=`basename $f` + if grep "\\.so.*/$b\$" conftest.sol >/dev/null \ + || grep -l "Copyright.*Free Software Foundation" $f >/dev/null + then + : + else + suff=`echo $f | sed -e "s;$sys_tmac_prefix;;"` + case "$suff" in + tmac.*);; + *) tmac_wrap="$tmac_wrap $suff" ;; + esac + fi + esac + done + rm -f conftest.sol +fi +echo "$ac_t""$tmac_wrap" 1>&6 + + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ + >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS <<EOF +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.4" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\\\&%]/\\\\&/g; + s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +$ac_vpsub +$extrasub +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@GROPS@%$GROPS%g +s%@CC@%$CC%g +s%@CXX@%$CXX%g +s%@LPR@%$LPR%g +s%@LP@%$LP%g +s%@LPQ@%$LPQ%g +s%@PSPRINT@%$PSPRINT%g +s%@DVIPRINT@%$DVIPRINT%g +s%@PERLPATH@%$PERLPATH%g +s%@YACC@%$YACC%g +s%@RANLIB@%$RANLIB%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@LN_S@%$LN_S%g +s%@SH_SCRIPT_SED_CMD@%$SH_SCRIPT_SED_CMD%g +s%@CPP@%$CPP%g +s%@LIBOBJS@%$LIBOBJS%g +s%@BROKEN_SPOOLER_FLAGS@%$BROKEN_SPOOLER_FLAGS%g +s%@PAGE@%$PAGE%g +s%@g@%$g%g +s%@sys_tmac_prefix@%$sys_tmac_prefix%g +s%@tmac_wrap@%$tmac_wrap%g + +CEOF +EOF +cat >> $CONFIG_STATUS <<EOF + +CONFIG_FILES=\${CONFIG_FILES-"Makefile"} +EOF +cat >> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust relative srcdir, etc. for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file +fi; done +rm -f conftest.subs + + + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/contrib/groff/configure.in b/contrib/groff/configure.in new file mode 100644 index 000000000000..f925170b839c --- /dev/null +++ b/contrib/groff/configure.in @@ -0,0 +1,49 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT(groff/groff.cc) +AC_PREFIX_PROGRAM(grops) +dnl checks for programs +AC_PROG_CC +AC_PROG_CXX +GROFF_CXX_CHECK +GROFF_PRINT +AC_PATH_PROG(PERLPATH, perl, /usr/bin/perl) +GROFF_PROG_YACC +AC_PROG_RANLIB +GROFF_INSTALL_SH +AC_PROG_INSTALL +AC_PROG_LN_S +GROFF_CSH_HACK(SH_SCRIPT_SED_CMD='1s/.*/:/', SH_SCRIPT_SED_CMD='') +AC_SUBST(SH_SCRIPT_SED_CMD) +dnl checks for headers +AC_CHECK_HEADERS(unistd.h dirent.h limits.h sys/dir.h stdlib.h) +GROFF_ISC_SYSV3 +GROFF_POSIX +GROFF_GETOPT +GROFF_PUTENV +GROFF_POPEN +GROFF_PCLOSE +GROFF_OSFCN_H +GROFF_LIMITS_H +dnl checks for typedefs +GROFF_TIME_T +AC_TYPE_SIGNAL +GROFF_STRUCT_EXCEPTION +dnl checks for functions +AC_FUNC_MMAP +saved_libs="$LIBS" +LIBS="$LIBS -lm" +AC_REPLACE_FUNCS(fmod strtol getcwd strerror putenv) +LIBS="$saved_libs" +AC_CHECK_FUNCS(rename mkstemp) +AC_DECL_SYS_SIGLIST +dnl checks for compiler characteristics +GROFF_ARRAY_DELETE +GROFF_TRADITIONAL_CPP +dnl checks for operating system services +GROFF_WCOREFLAG +dnl other random stuff +GROFF_BROKEN_SPOOLER_FLAGS +GROFF_PAGE +GROFF_G +GROFF_TMAC +AC_OUTPUT(Makefile) diff --git a/contrib/groff/devX100-12/CB b/contrib/groff/devX100-12/CB new file mode 100644 index 000000000000..3751184aadcc --- /dev/null +++ b/contrib/groff/devX100-12/CB @@ -0,0 +1,306 @@ +name CB +spacewidth 10 +charset +--- 10,1 0 040 +! 10,11 0 041 +" 10,11 0 042 +# 10,11,1 0 043 +sh " +$ 10,12,1 0 044 +Do " +% 10,11 0 045 +& 10,9 0 046 +' 10,11 0 047 +( 10,11,2 0 050 +) 10,11,2 0 051 +* 10,11 0 052 ++ 10,9 0 053 +, 10,2,3 0 054 +\- 10,6 0 055 +. 10,2 0 056 +/ 10,12,2 0 057 +sl " +0 10,11 0 060 +1 10,11 0 061 +2 10,11 0 062 +3 10,11 0 063 +4 10,11 0 064 +5 10,11 0 065 +6 10,11 0 066 +7 10,11 0 067 +8 10,11 0 070 +9 10,11 0 071 +: 10,7 0 072 +; 10,7,3 0 073 +< 10,9 0 074 += 10,7 0 075 +eq " +> 10,9 0 076 +? 10,10 0 077 +@ 10,11,1 0 0100 +at " +A 10,10 0 0101 +B 10,10 0 0102 +C 10,10 0 0103 +D 10,10 0 0104 +E 10,10 0 0105 +F 10,10 0 0106 +G 10,10 0 0107 +H 10,10 0 0110 +I 10,10 0 0111 +J 10,10 0 0112 +K 10,10 0 0113 +L 10,10 0 0114 +M 10,10 0 0115 +N 10,10 0 0116 +O 10,10 0 0117 +P 10,10 0 0120 +Q 10,10,2 0 0121 +R 10,10 0 0122 +S 10,10 0 0123 +T 10,10 0 0124 +U 10,10 0 0125 +V 10,10 0 0126 +W 10,10 0 0127 +X 10,10 0 0130 +Y 10,10 0 0131 +Z 10,10 0 0132 +[ 10,11,2 0 0133 +lB " +\ 10,12,2 0 0134 +rs " +] 10,11,2 0 0135 +rB " +^ 10,11 0 0136 +a^ " +ha " +_ 10,0,3 0 0137 +` 10,11 0 0140 +oq " +a 10,7 0 0141 +b 10,11 0 0142 +c 10,7 0 0143 +d 10,11 0 0144 +e 10,7 0 0145 +f 10,11 0 0146 +g 10,7,3 0 0147 +h 10,11 0 0150 +i 10,10 0 0151 +j 10,10,3 0 0152 +k 10,11 0 0153 +l 10,11 0 0154 +m 10,7 0 0155 +n 10,7 0 0156 +o 10,7 0 0157 +p 10,7,3 0 0160 +q 10,7,3 0 0161 +r 10,7 0 0162 +s 10,7 0 0163 +t 10,9 0 0164 +u 10,7 0 0165 +v 10,7 0 0166 +w 10,7 0 0167 +x 10,7 0 0170 +y 10,7,3 0 0171 +z 10,7 0 0172 +{ 10,11,2 0 0173 +lC " +| 10,11,2 0 0174 +or " +ba " +} 10,11,2 0 0175 +rC " +~ 10,6 0 0176 +a~ " +ap " +ti " +r! 10,7,3 0 0241 +¡ " +ct 10,10 0 0242 +¢ " +Po 10,10 0 0243 +£ " +Cs 10,8 0 0244 +¤ " +Ye 10,10 0 0245 +¥ " +bb 10,11,2 0 0246 +¦ " +sc 10,11,1 0 0247 +§ " +ad 10,10 0 0250 +¨ " +co 10,10 0 0251 +© " +Of 10,10 0 0252 +ª " +Fo 10,7 0 0253 +« " +no 10,7 0 0254 +¬ " +- 10,6 0 0255 +hy " + " +rg 10,10 0 0256 +® " +a- 10,10 0 0257 +¯ " +de 10,11 0 0260 +° " ++- 10,9 0 0261 +± " +S2 10,11 0 0262 +² " +S3 10,11 0 0263 +³ " +aa 10,11 0 0264 +´ " +µ 10,7,3 0 0265 +ps 10,11,1 0 0266 +¶ " +md 10,6 0 0267 +· " +ac 10,1,3 0 0270 +¸ " +S1 10,11 0 0271 +¹ " +Om 10,10 0 0272 +º " +Fc 10,7 0 0273 +» " +14 10,11 0 0274 +¼ " +12 10,11 0 0275 +½ " +34 10,11 0 0276 +¾ " +r? 10,7,3 0 0277 +¿ " +`A 10,14 0 0300 +À " +'A 10,14 0 0301 +Á " +^A 10,14 0 0302 +Â " +~A 10,13 0 0303 +Ã " +:A 10,13 0 0304 +Ä " +oA 10,14 0 0305 +Å " +AE 10,10 0 0306 +Æ " +,C 10,10,3 0 0307 +Ç " +`E 10,14 0 0310 +È " +'E 10,14 0 0311 +É " +^E 10,14 0 0312 +Ê " +:E 10,13 0 0313 +Ë " +`I 10,14 0 0314 +Ì " +'I 10,14 0 0315 +Í " +^I 10,14 0 0316 +Î " +:I 10,13 0 0317 +Ï " +-D 10,10 0 0320 +Ð " +~N 10,13 0 0321 +Ñ " +`O 10,14 0 0322 +Ò " +'O 10,14 0 0323 +Ó " +^O 10,14 0 0324 +Ô " +~O 10,13 0 0325 +Õ " +:O 10,13 0 0326 +Ö " +mu 10,8 0 0327 +× " +/O 10,11,1 0 0330 +Ø " +`U 10,14 0 0331 +Ù " +'U 10,14 0 0332 +Ú " +^U 10,14 0 0333 +Û " +:U 10,13 0 0334 +Ü " +'Y 10,14 0 0335 +Ý " +TP 10,10 0 0336 +Þ " +ss 10,11 0 0337 +ß " +`a 10,11 0 0340 +à " +'a 10,11 0 0341 +á " +^a 10,11 0 0342 +â " +~a 10,10 0 0343 +ã " +:a 10,10 0 0344 +ä " +oa 10,12 0 0345 +å " +ae 10,7 0 0346 +æ " +,c 10,7,3 0 0347 +ç " +`e 10,11 0 0350 +è " +'e 10,11 0 0351 +é " +^e 10,11 0 0352 +ê " +:e 10,10 0 0353 +ë " +`i 10,11 0 0354 +ì " +'i 10,11 0 0355 +í " +^i 10,11 0 0356 +î " +:i 10,10 0 0357 +ï " +Sd 10,12 0 0360 +ð " +~n 10,10 0 0361 +ñ " +`o 10,11 0 0362 +ò " +'o 10,11 0 0363 +ó " +^o 10,11 0 0364 +ô " +~o 10,10 0 0365 +õ " +:o 10,10 0 0366 +ö " +di 10,9 0 0367 +÷ " +/o 10,8,1 0 0370 +ø " +`u 10,11 0 0371 +ù " +'u 10,11 0 0372 +ú " +^u 10,11 0 0373 +û " +:u 10,10 0 0374 +ü " +'y 10,11,3 0 0375 +ý " +Tp 10,11,3 0 0376 +þ " +:y 10,10,3 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/CBI b/contrib/groff/devX100-12/CBI new file mode 100644 index 000000000000..d7d0145a09a9 --- /dev/null +++ b/contrib/groff/devX100-12/CBI @@ -0,0 +1,306 @@ +name CBI +spacewidth 10 +charset +--- 10,1 0 040 +! 10,11 0 041 +" 10,11 0 042 +# 10,11,1 0 043 +sh " +$ 10,12,1 0 044 +Do " +% 10,11 0 045 +& 10,9 0 046 +' 10,11 0 047 +( 10,11,2 0 050 +) 10,11,2 0 051 +* 10,11 0 052 ++ 10,9 0 053 +, 10,2,3 0 054 +\- 10,6 0 055 +. 10,2 0 056 +/ 10,12,2 0 057 +sl " +0 10,11 0 060 +1 10,11 0 061 +2 10,11 0 062 +3 10,11 0 063 +4 10,11 0 064 +5 10,11 0 065 +6 10,11 0 066 +7 10,11 0 067 +8 10,11 0 070 +9 10,11 0 071 +: 10,7 0 072 +; 10,7,3 0 073 +< 10,9 0 074 += 10,7 0 075 +eq " +> 10,9 0 076 +? 10,10 0 077 +@ 10,11,1 0 0100 +at " +A 10,10 0 0101 +B 10,10 0 0102 +C 10,10 0 0103 +D 10,10 0 0104 +E 10,10 0 0105 +F 10,10 0 0106 +G 10,10 0 0107 +H 10,10 0 0110 +I 10,10 0 0111 +J 10,10 0 0112 +K 10,10 0 0113 +L 10,10 0 0114 +M 10,10 0 0115 +N 10,10 0 0116 +O 10,10 0 0117 +P 10,10 0 0120 +Q 10,10,2 0 0121 +R 10,10 0 0122 +S 10,10 0 0123 +T 10,10 0 0124 +U 10,10 0 0125 +V 10,10 0 0126 +W 10,10 0 0127 +X 10,10 0 0130 +Y 10,10 0 0131 +Z 10,10 0 0132 +[ 10,11,2 0 0133 +lB " +\ 10,12,2 0 0134 +rs " +] 10,11,2 0 0135 +rB " +^ 10,11 0 0136 +a^ " +ha " +_ 10,0,3 0 0137 +` 10,11 0 0140 +oq " +a 10,7 0 0141 +b 10,11 0 0142 +c 10,7 0 0143 +d 10,11 0 0144 +e 10,7 0 0145 +f 10,11 0 0146 +g 10,7,3 0 0147 +h 10,11 0 0150 +i 10,10 0 0151 +j 10,10,3 0 0152 +k 10,11 0 0153 +l 10,11 0 0154 +m 10,7 0 0155 +n 10,7 0 0156 +o 10,7 0 0157 +p 10,7,3 0 0160 +q 10,7,3 0 0161 +r 10,7 0 0162 +s 10,7 0 0163 +t 10,9 0 0164 +u 10,7 0 0165 +v 10,7 0 0166 +w 10,7 0 0167 +x 10,7 0 0170 +y 10,7,3 0 0171 +z 10,7 0 0172 +{ 10,11,2 0 0173 +lC " +| 10,11,2 0 0174 +or " +ba " +} 10,11,2 0 0175 +rC " +~ 10,6 0 0176 +a~ " +ap " +ti " +r! 10,7,4 0 0241 +¡ " +ct 10,10 0 0242 +¢ " +Po 10,10 0 0243 +£ " +Cs 10,8 0 0244 +¤ " +Ye 10,10 0 0245 +¥ " +bb 10,11,2 0 0246 +¦ " +sc 10,11,1 0 0247 +§ " +ad 10,10 0 0250 +¨ " +co 10,10 0 0251 +© " +Of 10,10 0 0252 +ª " +Fo 10,7 0 0253 +« " +no 10,7 0 0254 +¬ " +- 10,6 0 0255 +hy " + " +rg 10,10 0 0256 +® " +a- 10,9 0 0257 +¯ " +de 10,11 0 0260 +° " ++- 10,10 0 0261 +± " +S2 10,11 0 0262 +² " +S3 10,11 0 0263 +³ " +aa 10,11 0 0264 +´ " +µ 10,7,3 0 0265 +ps 10,11,1 0 0266 +¶ " +md 10,6 0 0267 +· " +ac 10,0,3 0 0270 +¸ " +S1 10,11 0 0271 +¹ " +Om 10,10 0 0272 +º " +Fc 10,7 0 0273 +» " +14 10,11 0 0274 +¼ " +12 10,11 0 0275 +½ " +34 10,11 0 0276 +¾ " +r? 10,7,4 0 0277 +¿ " +`A 10,14 0 0300 +À " +'A 10,14 0 0301 +Á " +^A 10,14 0 0302 +Â " +~A 10,13 0 0303 +Ã " +:A 10,13 0 0304 +Ä " +oA 10,14 0 0305 +Å " +AE 10,10 0 0306 +Æ " +,C 10,10,3 0 0307 +Ç " +`E 10,14 0 0310 +È " +'E 10,14 0 0311 +É " +^E 10,14 0 0312 +Ê " +:E 10,13 0 0313 +Ë " +`I 10,14 0 0314 +Ì " +'I 10,14 0 0315 +Í " +^I 10,14 0 0316 +Î " +:I 10,13 0 0317 +Ï " +-D 10,10 0 0320 +Ð " +~N 10,13 0 0321 +Ñ " +`O 10,14 0 0322 +Ò " +'O 10,14 0 0323 +Ó " +^O 10,14 0 0324 +Ô " +~O 10,13 0 0325 +Õ " +:O 10,13 0 0326 +Ö " +mu 10,8 0 0327 +× " +/O 10,10 0 0330 +Ø " +`U 10,14 0 0331 +Ù " +'U 10,14 0 0332 +Ú " +^U 10,14 0 0333 +Û " +:U 10,13 0 0334 +Ü " +'Y 10,14 0 0335 +Ý " +TP 10,10 0 0336 +Þ " +ss 10,11 0 0337 +ß " +`a 10,11 0 0340 +à " +'a 10,11 0 0341 +á " +^a 10,11 0 0342 +â " +~a 10,10 0 0343 +ã " +:a 10,10 0 0344 +ä " +oa 10,11 0 0345 +å " +ae 10,7 0 0346 +æ " +,c 10,7,3 0 0347 +ç " +`e 10,11 0 0350 +è " +'e 10,11 0 0351 +é " +^e 10,11 0 0352 +ê " +:e 10,10 0 0353 +ë " +`i 10,11 0 0354 +ì " +'i 10,11 0 0355 +í " +^i 10,11 0 0356 +î " +:i 10,10 0 0357 +ï " +Sd 10,12 0 0360 +ð " +~n 10,10 0 0361 +ñ " +`o 10,11 0 0362 +ò " +'o 10,11 0 0363 +ó " +^o 10,11 0 0364 +ô " +~o 10,10 0 0365 +õ " +:o 10,10 0 0366 +ö " +di 10,9 0 0367 +÷ " +/o 10,8,1 0 0370 +ø " +`u 10,11 0 0371 +ù " +'u 10,11 0 0372 +ú " +^u 10,11 0 0373 +û " +:u 10,10 0 0374 +ü " +'y 10,11,3 0 0375 +ý " +Tp 10,11,3 0 0376 +þ " +:y 10,10,3 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/CI b/contrib/groff/devX100-12/CI new file mode 100644 index 000000000000..804f71f779e6 --- /dev/null +++ b/contrib/groff/devX100-12/CI @@ -0,0 +1,306 @@ +name CI +spacewidth 10 +charset +--- 10,1 0 040 +! 10,11 0 041 +" 10,11 0 042 +# 10,11,1 0 043 +sh " +$ 10,12,1 0 044 +Do " +% 10,11 0 045 +& 10,9 0 046 +' 10,11 0 047 +( 10,11,2 0 050 +) 10,11,2 0 051 +* 10,10 0 052 ++ 10,9 0 053 +, 10,2,2 0 054 +\- 10,5 0 055 +. 10,2 0 056 +/ 10,11,2 0 057 +sl " +0 10,11 0 060 +1 10,11 0 061 +2 10,11 0 062 +3 10,11 0 063 +4 10,11 0 064 +5 10,11 0 065 +6 10,11 0 066 +7 10,11 0 067 +8 10,11 0 070 +9 10,11 0 071 +: 10,7 0 072 +; 10,7,2 0 073 +< 10,9 0 074 += 10,7 0 075 +eq " +> 10,9 0 076 +? 10,10 0 077 +@ 10,11,1 0 0100 +at " +A 10,10 0 0101 +B 10,10 0 0102 +C 10,10 0 0103 +D 10,10 0 0104 +E 10,10 0 0105 +F 10,10 0 0106 +G 10,10 0 0107 +H 10,10 0 0110 +I 10,10 0 0111 +J 10,10 0 0112 +K 10,10 0 0113 +L 10,10 0 0114 +M 10,10 0 0115 +N 10,10 0 0116 +O 10,10 0 0117 +P 10,10 0 0120 +Q 10,10,2 0 0121 +R 10,10 0 0122 +S 10,10 0 0123 +T 10,10 0 0124 +U 10,10 0 0125 +V 10,10 0 0126 +W 10,10 0 0127 +X 10,10 0 0130 +Y 10,10 0 0131 +Z 10,10 0 0132 +[ 10,11,2 0 0133 +lB " +\ 10,11,2 0 0134 +rs " +] 10,11,2 0 0135 +rB " +^ 10,11 0 0136 +a^ " +ha " +_ 10,0,3 0 0137 +` 10,11 0 0140 +oq " +a 10,7 0 0141 +b 10,10 0 0142 +c 10,7 0 0143 +d 10,10 0 0144 +e 10,7 0 0145 +f 10,10 0 0146 +g 10,7,3 0 0147 +h 10,10 0 0150 +i 10,11 0 0151 +j 10,11,3 0 0152 +k 10,10 0 0153 +l 10,10 0 0154 +m 10,7 0 0155 +n 10,7 0 0156 +o 10,7 0 0157 +p 10,7,3 0 0160 +q 10,7,3 0 0161 +r 10,7 0 0162 +s 10,7 0 0163 +t 10,9 0 0164 +u 10,7 0 0165 +v 10,7 0 0166 +w 10,7 0 0167 +x 10,7 0 0170 +y 10,7,3 0 0171 +z 10,7 0 0172 +{ 10,11,2 0 0173 +lC " +| 10,10,2 0 0174 +or " +ba " +} 10,11,2 0 0175 +rC " +~ 10,6 0 0176 +a~ " +ap " +ti " +r! 10,7,4 0 0241 +¡ " +ct 10,10 0 0242 +¢ " +Po 10,10 0 0243 +£ " +Cs 10,8 0 0244 +¤ " +Ye 10,10 0 0245 +¥ " +bb 10,11,2 0 0246 +¦ " +sc 10,11,1 0 0247 +§ " +ad 10,10 0 0250 +¨ " +co 10,10 0 0251 +© " +Of 10,10 0 0252 +ª " +Fo 10,7 0 0253 +« " +no 10,6 0 0254 +¬ " +- 10,5 0 0255 +hy " + " +rg 10,10 0 0256 +® " +a- 10,10 0 0257 +¯ " +de 10,11 0 0260 +° " ++- 10,9 0 0261 +± " +S2 10,11 0 0262 +² " +S3 10,11 0 0263 +³ " +aa 10,11 0 0264 +´ " +µ 10,7,3 0 0265 +ps 10,11,1 0 0266 +¶ " +md 10,6 0 0267 +· " +ac 10,0,3 0 0270 +¸ " +S1 10,11 0 0271 +¹ " +Om 10,10 0 0272 +º " +Fc 10,7 0 0273 +» " +14 10,11 0 0274 +¼ " +12 10,11 0 0275 +½ " +34 10,11 0 0276 +¾ " +r? 10,7,3 0 0277 +¿ " +`A 10,14 0 0300 +À " +'A 10,14 0 0301 +Á " +^A 10,14 0 0302 +Â " +~A 10,13 0 0303 +Ã " +:A 10,13 0 0304 +Ä " +oA 10,14 0 0305 +Å " +AE 10,10 0 0306 +Æ " +,C 10,10,3 0 0307 +Ç " +`E 10,14 0 0310 +È " +'E 10,14 0 0311 +É " +^E 10,14 0 0312 +Ê " +:E 10,13 0 0313 +Ë " +`I 10,14 0 0314 +Ì " +'I 10,14 0 0315 +Í " +^I 10,14 0 0316 +Î " +:I 10,13 0 0317 +Ï " +-D 10,10 0 0320 +Ð " +~N 10,13 0 0321 +Ñ " +`O 10,14 0 0322 +Ò " +'O 10,14 0 0323 +Ó " +^O 10,14 0 0324 +Ô " +~O 10,13 0 0325 +Õ " +:O 10,13 0 0326 +Ö " +mu 10,8 0 0327 +× " +/O 10,10 0 0330 +Ø " +`U 10,14 0 0331 +Ù " +'U 10,14 0 0332 +Ú " +^U 10,14 0 0333 +Û " +:U 10,13 0 0334 +Ü " +'Y 10,14 0 0335 +Ý " +TP 10,10 0 0336 +Þ " +ss 10,11 0 0337 +ß " +`a 10,11 0 0340 +à " +'a 10,11 0 0341 +á " +^a 10,11 0 0342 +â " +~a 10,10 0 0343 +ã " +:a 10,10 0 0344 +ä " +oa 10,11 0 0345 +å " +ae 10,7 0 0346 +æ " +,c 10,7,3 0 0347 +ç " +`e 10,11 0 0350 +è " +'e 10,11 0 0351 +é " +^e 10,11 0 0352 +ê " +:e 10,10 0 0353 +ë " +`i 10,11 0 0354 +ì " +'i 10,11 0 0355 +í " +^i 10,11 0 0356 +î " +:i 10,10 0 0357 +ï " +Sd 10,11 0 0360 +ð " +~n 10,10 0 0361 +ñ " +`o 10,11 0 0362 +ò " +'o 10,11 0 0363 +ó " +^o 10,11 0 0364 +ô " +~o 10,10 0 0365 +õ " +:o 10,10 0 0366 +ö " +di 10,8 0 0367 +÷ " +/o 10,8,1 0 0370 +ø " +`u 10,11 0 0371 +ù " +'u 10,11 0 0372 +ú " +^u 10,11 0 0373 +û " +:u 10,10 0 0374 +ü " +'y 10,11,3 0 0375 +ý " +Tp 10,11,3 0 0376 +þ " +:y 10,10,3 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/CR b/contrib/groff/devX100-12/CR new file mode 100644 index 000000000000..140ec55d0756 --- /dev/null +++ b/contrib/groff/devX100-12/CR @@ -0,0 +1,306 @@ +name CR +spacewidth 10 +charset +--- 10,1 0 040 +! 10,11 0 041 +" 10,11 0 042 +# 10,11,1 0 043 +sh " +$ 10,12,1 0 044 +Do " +% 10,11 0 045 +& 10,9 0 046 +' 10,11 0 047 +( 10,11,2 0 050 +) 10,11,2 0 051 +* 10,11 0 052 ++ 10,9 0 053 +, 10,2,2 0 054 +\- 10,5 0 055 +. 10,2 0 056 +/ 10,11,2 0 057 +sl " +0 10,11 0 060 +1 10,11 0 061 +2 10,11 0 062 +3 10,11 0 063 +4 10,11 0 064 +5 10,11 0 065 +6 10,11 0 066 +7 10,11 0 067 +8 10,11 0 070 +9 10,11 0 071 +: 10,7 0 072 +; 10,7,2 0 073 +< 10,9 0 074 += 10,7 0 075 +eq " +> 10,9 0 076 +? 10,10 0 077 +@ 10,11,1 0 0100 +at " +A 10,10 0 0101 +B 10,10 0 0102 +C 10,10 0 0103 +D 10,10 0 0104 +E 10,10 0 0105 +F 10,10 0 0106 +G 10,10 0 0107 +H 10,10 0 0110 +I 10,10 0 0111 +J 10,10 0 0112 +K 10,10 0 0113 +L 10,10 0 0114 +M 10,10 0 0115 +N 10,10 0 0116 +O 10,10 0 0117 +P 10,10 0 0120 +Q 10,10,2 0 0121 +R 10,10 0 0122 +S 10,10 0 0123 +T 10,10 0 0124 +U 10,10 0 0125 +V 10,10 0 0126 +W 10,10 0 0127 +X 10,10 0 0130 +Y 10,10 0 0131 +Z 10,10 0 0132 +[ 10,11,2 0 0133 +lB " +\ 10,11,2 0 0134 +rs " +] 10,11,2 0 0135 +rB " +^ 10,11 0 0136 +a^ " +ha " +_ 10,0,3 0 0137 +` 10,11 0 0140 +oq " +a 10,7 0 0141 +b 10,10 0 0142 +c 10,7 0 0143 +d 10,10 0 0144 +e 10,7 0 0145 +f 10,10 0 0146 +g 10,7,3 0 0147 +h 10,10 0 0150 +i 10,10 0 0151 +j 10,10,3 0 0152 +k 10,10 0 0153 +l 10,10 0 0154 +m 10,7 0 0155 +n 10,7 0 0156 +o 10,7 0 0157 +p 10,7,3 0 0160 +q 10,7,3 0 0161 +r 10,7 0 0162 +s 10,7 0 0163 +t 10,9 0 0164 +u 10,7 0 0165 +v 10,7 0 0166 +w 10,7 0 0167 +x 10,7 0 0170 +y 10,7,3 0 0171 +z 10,7 0 0172 +{ 10,11,2 0 0173 +lC " +| 10,10,2 0 0174 +or " +ba " +} 10,11,2 0 0175 +rC " +~ 10,6 0 0176 +a~ " +ap " +ti " +r! 10,7,3 0 0241 +¡ " +ct 10,10 0 0242 +¢ " +Po 10,10 0 0243 +£ " +Cs 10,8 0 0244 +¤ " +Ye 10,10 0 0245 +¥ " +bb 10,10,2 0 0246 +¦ " +sc 10,11,1 0 0247 +§ " +ad 10,10 0 0250 +¨ " +co 10,10 0 0251 +© " +Of 10,10 0 0252 +ª " +Fo 10,7 0 0253 +« " +no 10,6 0 0254 +¬ " +- 10,5 0 0255 +hy " + " +rg 10,10 0 0256 +® " +a- 10,9 0 0257 +¯ " +de 10,11 0 0260 +° " ++- 10,9 0 0261 +± " +S2 10,11 0 0262 +² " +S3 10,11 0 0263 +³ " +aa 10,11 0 0264 +´ " +µ 10,7,3 0 0265 +ps 10,11,1 0 0266 +¶ " +md 10,6 0 0267 +· " +ac 10,1,3 0 0270 +¸ " +S1 10,11 0 0271 +¹ " +Om 10,10 0 0272 +º " +Fc 10,7 0 0273 +» " +14 10,11 0 0274 +¼ " +12 10,11 0 0275 +½ " +34 10,11 0 0276 +¾ " +r? 10,7,3 0 0277 +¿ " +`A 10,14 0 0300 +À " +'A 10,14 0 0301 +Á " +^A 10,14 0 0302 +Â " +~A 10,13 0 0303 +Ã " +:A 10,13 0 0304 +Ä " +oA 10,14 0 0305 +Å " +AE 10,10 0 0306 +Æ " +,C 10,10,3 0 0307 +Ç " +`E 10,14 0 0310 +È " +'E 10,14 0 0311 +É " +^E 10,14 0 0312 +Ê " +:E 10,13 0 0313 +Ë " +`I 10,14 0 0314 +Ì " +'I 10,14 0 0315 +Í " +^I 10,14 0 0316 +Î " +:I 10,13 0 0317 +Ï " +-D 10,10 0 0320 +Ð " +~N 10,13 0 0321 +Ñ " +`O 10,14 0 0322 +Ò " +'O 10,14 0 0323 +Ó " +^O 10,14 0 0324 +Ô " +~O 10,13 0 0325 +Õ " +:O 10,13 0 0326 +Ö " +mu 10,8 0 0327 +× " +/O 10,10 0 0330 +Ø " +`U 10,14 0 0331 +Ù " +'U 10,14 0 0332 +Ú " +^U 10,14 0 0333 +Û " +:U 10,13 0 0334 +Ü " +'Y 10,14 0 0335 +Ý " +TP 10,10 0 0336 +Þ " +ss 10,11 0 0337 +ß " +`a 10,11 0 0340 +à " +'a 10,11 0 0341 +á " +^a 10,11 0 0342 +â " +~a 10,10 0 0343 +ã " +:a 10,10 0 0344 +ä " +oa 10,12 0 0345 +å " +ae 10,7 0 0346 +æ " +,c 10,7,3 0 0347 +ç " +`e 10,11 0 0350 +è " +'e 10,11 0 0351 +é " +^e 10,11 0 0352 +ê " +:e 10,10 0 0353 +ë " +`i 10,11 0 0354 +ì " +'i 10,11 0 0355 +í " +^i 10,11 0 0356 +î " +:i 10,10 0 0357 +ï " +Sd 10,11 0 0360 +ð " +~n 10,10 0 0361 +ñ " +`o 10,11 0 0362 +ò " +'o 10,11 0 0363 +ó " +^o 10,11 0 0364 +ô " +~o 10,10 0 0365 +õ " +:o 10,10 0 0366 +ö " +di 10,8 0 0367 +÷ " +/o 10,8,1 0 0370 +ø " +`u 10,11 0 0371 +ù " +'u 10,11 0 0372 +ú " +^u 10,11 0 0373 +û " +:u 10,10 0 0374 +ü " +'y 10,11,3 0 0375 +ý " +Tp 10,11,3 0 0376 +þ " +:y 10,10,3 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/DESC b/contrib/groff/devX100-12/DESC new file mode 100644 index 000000000000..ead70b97f03a --- /dev/null +++ b/contrib/groff/devX100-12/DESC @@ -0,0 +1,9 @@ +styles R I B BI +fonts 6 0 0 0 0 0 S +sizes 8 10 12 14 18 24 0 +res 100 +X11 +hor 1 +vert 1 +unitwidth 12 +postpro gxditview diff --git a/contrib/groff/devX100-12/HB b/contrib/groff/devX100-12/HB new file mode 100644 index 000000000000..e68615e14aa1 --- /dev/null +++ b/contrib/groff/devX100-12/HB @@ -0,0 +1,306 @@ +name HB +spacewidth 5 +charset +--- 5,1 0 040 +! 6,12 0 041 +" 8,12 0 042 +# 9,12 0 043 +sh " +$ 9,13,1 0 044 +Do " +% 14,12 0 045 +& 12,12 0 046 +' 5,12 0 047 +( 6,12,3 0 050 +) 6,12,3 0 051 +* 6,12 0 052 ++ 10,8 0 053 +, 4,2,3 0 054 +\- 10,5 0 055 +. 4,2 0 056 +/ 5,12 0 057 +sl " +0 9,12 0 060 +1 9,12 0 061 +2 9,12 0 062 +3 9,12 0 063 +4 9,12 0 064 +5 9,12 0 065 +6 9,12 0 066 +7 9,12 0 067 +8 9,12 0 070 +9 9,12 0 071 +: 5,8 0 072 +; 5,8,3 0 073 +< 10,8 0 074 += 10,7 0 075 +eq " +> 10,8 0 076 +? 10,12 0 077 +@ 16,12,2 0 0100 +at " +A 12,12 0 0101 +B 12,12 0 0102 +C 12,12 0 0103 +D 12,12 0 0104 +E 11,12 0 0105 +F 10,12 0 0106 +G 13,12 0 0107 +H 12,12 0 0110 +I 4,12 0 0111 +J 9,12 0 0112 +K 12,12 0 0113 +L 10,12 0 0114 +M 13,12 0 0115 +N 12,12 0 0116 +O 13,12 0 0117 +P 11,12 0 0120 +Q 13,12,1 0 0121 +R 12,12 0 0122 +S 11,12 0 0123 +T 10,12 0 0124 +U 12,12 0 0125 +V 11,12 0 0126 +W 15,12 0 0127 +X 11,12 0 0130 +Y 11,12 0 0131 +Z 10,12 0 0132 +[ 6,12,3 0 0133 +lB " +\ 5,12 0 0134 +rs " +] 6,12,3 0 0135 +rB " +^ 10,12 0 0136 +a^ " +ha " +_ 9,0,3 0 0137 +` 5,12 0 0140 +oq " +a 9,9 0 0141 +b 10,12 0 0142 +c 9,9 0 0143 +d 10,12 0 0144 +e 9,9 0 0145 +f 5,12 0 0146 +g 10,9,4 0 0147 +h 10,12 0 0150 +i 4,12 0 0151 +j 5,12,4 0 0152 +k 9,12 0 0153 +l 5,12 0 0154 +m 14,9 0 0155 +n 10,9 0 0156 +o 10,9 0 0157 +p 10,9,4 0 0160 +q 10,9,4 0 0161 +r 6,9 0 0162 +s 9,9 0 0163 +t 6,11 0 0164 +u 10,9 0 0165 +v 9,9 0 0166 +w 13,9 0 0167 +x 9,9 0 0170 +y 9,9,4 0 0171 +z 8,9 0 0172 +{ 6,12,3 0 0173 +lC " +| 4,12,4 0 0174 +or " +ba " +} 6,12,3 0 0175 +rC " +~ 10,6 0 0176 +a~ " +ap " +ti " +r! 6,9,3 0 0241 +¡ " +ct 9,10,1 0 0242 +¢ " +Po 9,12 0 0243 +£ " +Cs 9,9 0 0244 +¤ " +Ye 9,12 0 0245 +¥ " +bb 5,12,4 0 0246 +¦ " +sc 9,12,3 0 0247 +§ " +ad 6,12 0 0250 +¨ " +co 12,12 0 0251 +© " +Of 6,12 0 0252 +ª " +Fo 9,8 0 0253 +« " +no 10,7 0 0254 +¬ " +- 5,5 0 0255 +hy " + " +rg 12,12 0 0256 +® " +a- 6,11 0 0257 +¯ " +de 7,12 0 0260 +° " ++- 10,11 0 0261 +± " +S2 6,12 0 0262 +² " +S3 6,12 0 0263 +³ " +aa 6,13 0 0264 +´ " +µ 10,9,3 0 0265 +ps 9,12,3 0 0266 +¶ " +md 5,6 0 0267 +· " +ac 6,0,4 0 0270 +¸ " +S1 6,12 0 0271 +¹ " +Om 6,12 0 0272 +º " +Fc 9,8 0 0273 +» " +14 14,12 0 0274 +¼ " +12 14,12 0 0275 +½ " +34 14,12 0 0276 +¾ " +r? 10,9,3 0 0277 +¿ " +`A 12,16 0 0300 +À " +'A 12,16 0 0301 +Á " +^A 12,16 0 0302 +Â " +~A 12,15 0 0303 +Ã " +:A 12,15 0 0304 +Ä " +oA 12,16 0 0305 +Å " +AE 16,12 0 0306 +Æ " +,C 12,12,4 0 0307 +Ç " +`E 11,16 0 0310 +È " +'E 11,16 0 0311 +É " +^E 11,16 0 0312 +Ê " +:E 11,15 0 0313 +Ë " +`I 4,16 0 0314 +Ì " +'I 4,16 0 0315 +Í " +^I 4,16 0 0316 +Î " +:I 4,15 0 0317 +Ï " +-D 12,12 0 0320 +Ð " +~N 12,15 0 0321 +Ñ " +`O 13,16 0 0322 +Ò " +'O 13,16 0 0323 +Ó " +^O 13,16 0 0324 +Ô " +~O 13,15 0 0325 +Õ " +:O 13,15 0 0326 +Ö " +mu 10,9 0 0327 +× " +/O 13,12 0 0330 +Ø " +`U 12,16 0 0331 +Ù " +'U 12,16 0 0332 +Ú " +^U 12,16 0 0333 +Û " +:U 12,15 0 0334 +Ü " +'Y 11,16 0 0335 +Ý " +TP 11,12 0 0336 +Þ " +ss 10,12 0 0337 +ß " +`a 9,13 0 0340 +à " +'a 9,13 0 0341 +á " +^a 9,13 0 0342 +â " +~a 9,12 0 0343 +ã " +:a 9,12 0 0344 +ä " +oa 9,13 0 0345 +å " +ae 15,9 0 0346 +æ " +,c 9,9,4 0 0347 +ç " +`e 9,13 0 0350 +è " +'e 9,13 0 0351 +é " +^e 9,13 0 0352 +ê " +:e 9,12 0 0353 +ë " +`i 4,13 0 0354 +ì " +'i 4,13 0 0355 +í " +^i 4,13 0 0356 +î " +:i 4,12 0 0357 +ï " +Sd 10,12 0 0360 +ð " +~n 10,12 0 0361 +ñ " +`o 10,13 0 0362 +ò " +'o 10,13 0 0363 +ó " +^o 10,13 0 0364 +ô " +~o 10,12 0 0365 +õ " +:o 10,12 0 0366 +ö " +di 10,8 0 0367 +÷ " +/o 10,9 0 0370 +ø " +`u 10,13 0 0371 +ù " +'u 10,13 0 0372 +ú " +^u 10,13 0 0373 +û " +:u 10,12 0 0374 +ü " +'y 9,13,4 0 0375 +ý " +Tp 10,12,4 0 0376 +þ " +:y 9,12,4 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/HBI b/contrib/groff/devX100-12/HBI new file mode 100644 index 000000000000..6723ddff1286 --- /dev/null +++ b/contrib/groff/devX100-12/HBI @@ -0,0 +1,306 @@ +name HBI +spacewidth 5 +charset +--- 5,1 0 040 +! 6,12 0 041 +" 8,12 0 042 +# 9,12 0 043 +sh " +$ 9,13,1 0 044 +Do " +% 14,12 0 045 +& 12,12 0 046 +' 5,12 0 047 +( 6,12,3 0 050 +) 6,12,3 0 051 +* 6,12 0 052 ++ 10,8 0 053 +, 4,2,3 0 054 +\- 10,5 0 055 +. 4,2 0 056 +/ 5,12 0 057 +sl " +0 10,12 0 060 +1 9,12 0 061 +2 10,12 0 062 +3 9,12 0 063 +4 9,12 0 064 +5 9,12 0 065 +6 9,12 0 066 +7 9,12 0 067 +8 9,12 0 070 +9 9,12 0 071 +: 5,8 0 072 +; 5,8,3 0 073 +< 10,8 0 074 += 10,7 0 075 +eq " +> 10,8 0 076 +? 10,12 0 077 +@ 16,12,2 0 0100 +at " +A 12,12 0 0101 +B 12,12 0 0102 +C 12,12 0 0103 +D 12,12 0 0104 +E 11,12 0 0105 +F 10,12 0 0106 +G 13,12 0 0107 +H 12,12 0 0110 +I 4,12 0 0111 +J 9,12 0 0112 +K 12,12 0 0113 +L 10,12 0 0114 +M 13,12 0 0115 +N 12,12 0 0116 +O 13,12 0 0117 +P 11,12 0 0120 +Q 13,12,1 0 0121 +R 12,12 0 0122 +S 11,12 0 0123 +T 10,12 0 0124 +U 12,12 0 0125 +V 11,12 0 0126 +W 15,12 0 0127 +X 11,12 0 0130 +Y 11,12 0 0131 +Z 10,12 0 0132 +[ 6,12,3 0 0133 +lB " +\ 5,12 0 0134 +rs " +] 6,12,3 0 0135 +rB " +^ 10,12 0 0136 +a^ " +ha " +_ 9,0,3 0 0137 +` 5,12 0 0140 +oq " +a 9,9 0 0141 +b 10,12 0 0142 +c 9,9 0 0143 +d 10,12 0 0144 +e 9,9 0 0145 +f 5,12 0 0146 +g 10,9,4 0 0147 +h 10,12 0 0150 +i 4,12 0 0151 +j 5,12,4 0 0152 +k 9,12 0 0153 +l 5,12 0 0154 +m 14,9 0 0155 +n 10,9 0 0156 +o 10,9 0 0157 +p 10,9,4 0 0160 +q 10,9,4 0 0161 +r 6,9 0 0162 +s 9,9 0 0163 +t 6,12 0 0164 +u 10,9 0 0165 +v 9,9 0 0166 +w 13,9 0 0167 +x 9,9 0 0170 +y 9,9,4 0 0171 +z 8,9 0 0172 +{ 6,12,3 0 0173 +lC " +| 3,12,4 0 0174 +or " +ba " +} 6,12,3 0 0175 +rC " +~ 10,5 0 0176 +a~ " +ap " +ti " +r! 6,9,3 0 0241 +¡ " +ct 9,10,1 0 0242 +¢ " +Po 9,12 0 0243 +£ " +Cs 9,9 0 0244 +¤ " +Ye 9,12 0 0245 +¥ " +bb 5,12,4 0 0246 +¦ " +sc 9,12,3 0 0247 +§ " +ad 6,12 0 0250 +¨ " +co 12,12 0 0251 +© " +Of 6,12 0 0252 +ª " +Fo 9,8 0 0253 +« " +no 10,7 0 0254 +¬ " +- 5,5 0 0255 +hy " + " +rg 12,12 0 0256 +® " +a- 6,11 0 0257 +¯ " +de 7,12 0 0260 +° " ++- 10,11 0 0261 +± " +S2 6,12 0 0262 +² " +S3 6,12 0 0263 +³ " +aa 6,13 0 0264 +´ " +µ 10,9,4 0 0265 +ps 9,12,3 0 0266 +¶ " +md 5,6 0 0267 +· " +ac 6,0,4 0 0270 +¸ " +S1 6,12 0 0271 +¹ " +Om 6,12 0 0272 +º " +Fc 9,8 0 0273 +» " +14 14,12 0 0274 +¼ " +12 14,12 0 0275 +½ " +34 14,12 0 0276 +¾ " +r? 10,9,3 0 0277 +¿ " +`A 12,16 0 0300 +À " +'A 12,16 0 0301 +Á " +^A 12,16 0 0302 +Â " +~A 12,15 0 0303 +Ã " +:A 12,15 0 0304 +Ä " +oA 12,15 0 0305 +Å " +AE 17,12 0 0306 +Æ " +,C 12,12,4 0 0307 +Ç " +`E 11,16 0 0310 +È " +'E 11,16 0 0311 +É " +^E 11,16 0 0312 +Ê " +:E 11,15 0 0313 +Ë " +`I 4,16 0 0314 +Ì " +'I 4,16 0 0315 +Í " +^I 4,16 0 0316 +Î " +:I 4,15 0 0317 +Ï " +-D 12,12 0 0320 +Ð " +~N 12,15 0 0321 +Ñ " +`O 13,16 0 0322 +Ò " +'O 13,16 0 0323 +Ó " +^O 13,16 0 0324 +Ô " +~O 13,15 0 0325 +Õ " +:O 13,15 0 0326 +Ö " +mu 10,8 0 0327 +× " +/O 13,12 0 0330 +Ø " +`U 12,16 0 0331 +Ù " +'U 12,16 0 0332 +Ú " +^U 12,16 0 0333 +Û " +:U 12,15 0 0334 +Ü " +'Y 11,16 0 0335 +Ý " +TP 11,12 0 0336 +Þ " +ss 10,12 0 0337 +ß " +`a 9,13 0 0340 +à " +'a 9,13 0 0341 +á " +^a 9,13 0 0342 +â " +~a 9,12 0 0343 +ã " +:a 9,12 0 0344 +ä " +oa 9,13 0 0345 +å " +ae 15,9 0 0346 +æ " +,c 9,9,4 0 0347 +ç " +`e 9,13 0 0350 +è " +'e 9,13 0 0351 +é " +^e 9,13 0 0352 +ê " +:e 9,12 0 0353 +ë " +`i 4,13 0 0354 +ì " +'i 4,13 0 0355 +í " +^i 4,13 0 0356 +î " +:i 4,12 0 0357 +ï " +Sd 10,13 0 0360 +ð " +~n 10,12 0 0361 +ñ " +`o 10,13 0 0362 +ò " +'o 10,13 0 0363 +ó " +^o 10,13 0 0364 +ô " +~o 10,12 0 0365 +õ " +:o 10,12 0 0366 +ö " +di 10,8 0 0367 +÷ " +/o 10,9 0 0370 +ø " +`u 10,13 0 0371 +ù " +'u 10,13 0 0372 +ú " +^u 10,13 0 0373 +û " +:u 10,12 0 0374 +ü " +'y 9,13,4 0 0375 +ý " +Tp 10,12,4 0 0376 +þ " +:y 9,12,4 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/HI b/contrib/groff/devX100-12/HI new file mode 100644 index 000000000000..f002cd630433 --- /dev/null +++ b/contrib/groff/devX100-12/HI @@ -0,0 +1,306 @@ +name HI +spacewidth 5 +charset +--- 5,1 0 040 +! 5,12 0 041 +" 6,12 0 042 +# 9,12 0 043 +sh " +$ 9,13,1 0 044 +Do " +% 14,12 0 045 +& 11,12 0 046 +' 4,12 0 047 +( 6,12,3 0 050 +) 6,12,3 0 051 +* 6,12 0 052 ++ 10,9 0 053 +, 4,2,2 0 054 +\- 10,5 0 055 +. 4,2 0 056 +/ 5,12 0 057 +sl " +0 9,12 0 060 +1 9,12 0 061 +2 9,12 0 062 +3 9,12 0 063 +4 9,12 0 064 +5 9,12 0 065 +6 9,12 0 066 +7 9,12 0 067 +8 9,12 0 070 +9 9,12 0 071 +: 4,9 0 072 +; 4,9,2 0 073 +< 10,9 0 074 += 10,6 0 075 +eq " +> 10,9 0 076 +? 9,12 0 077 +@ 17,12,1 0 0100 +at " +A 11,12 0 0101 +B 11,12 0 0102 +C 12,12 0 0103 +D 12,12 0 0104 +E 11,12 0 0105 +F 10,12 0 0106 +G 13,12 0 0107 +H 12,12 0 0110 +I 4,12 0 0111 +J 8,12 0 0112 +K 11,12 0 0113 +L 9,12 0 0114 +M 13,12 0 0115 +N 12,12 0 0116 +O 13,12 0 0117 +P 11,12 0 0120 +Q 13,12,1 0 0121 +R 12,12 0 0122 +S 11,12 0 0123 +T 10,12 0 0124 +U 12,12 0 0125 +V 11,12 0 0126 +W 16,12 0 0127 +X 11,12 0 0130 +Y 11,12 0 0131 +Z 10,12 0 0132 +[ 5,12,3 0 0133 +lB " +\ 5,12 0 0134 +rs " +] 5,12,3 0 0135 +rB " +^ 8,12 0 0136 +a^ " +ha " +_ 9,0,3 0 0137 +` 4,12 0 0140 +oq " +a 9,9 0 0141 +b 9,12 0 0142 +c 8,9 0 0143 +d 9,12 0 0144 +e 9,9 0 0145 +f 5,12 0 0146 +g 9,9,4 0 0147 +h 9,12 0 0150 +i 3,12 0 0151 +j 4,12,4 0 0152 +k 8,12 0 0153 +l 4,12 0 0154 +m 14,9 0 0155 +n 9,9 0 0156 +o 9,9 0 0157 +p 9,9,4 0 0160 +q 9,9,4 0 0161 +r 5,9 0 0162 +s 8,9 0 0163 +t 5,11 0 0164 +u 9,9 0 0165 +v 8,9 0 0166 +w 12,9 0 0167 +x 8,9 0 0170 +y 8,9,4 0 0171 +z 8,9 0 0172 +{ 6,12,3 0 0173 +lC " +| 3,12,4 0 0174 +or " +ba " +} 6,12,3 0 0175 +rC " +~ 10,6 0 0176 +a~ " +ap " +ti " +r! 6,9,3 0 0241 +¡ " +ct 9,10,1 0 0242 +¢ " +Po 9,12 0 0243 +£ " +Cs 9,10 0 0244 +¤ " +Ye 9,12 0 0245 +¥ " +bb 4,12,4 0 0246 +¦ " +sc 9,12,3 0 0247 +§ " +ad 5,12 0 0250 +¨ " +co 12,12 0 0251 +© " +Of 6,12 0 0252 +ª " +Fo 9,8 0 0253 +« " +no 10,6 0 0254 +¬ " +- 5,5 0 0255 +hy " + " +rg 12,12 0 0256 +® " +a- 6,11 0 0257 +¯ " +de 7,12 0 0260 +° " ++- 10,11 0 0261 +± " +S2 6,12 0 0262 +² " +S3 6,12 0 0263 +³ " +aa 6,13 0 0264 +´ " +µ 9,9,4 0 0265 +ps 9,12,3 0 0266 +¶ " +md 5,7 0 0267 +· " +ac 6,0,4 0 0270 +¸ " +S1 6,12 0 0271 +¹ " +Om 6,12 0 0272 +º " +Fc 9,8 0 0273 +» " +14 14,12 0 0274 +¼ " +12 14,13 0 0275 +½ " +34 14,12 0 0276 +¾ " +r? 10,9,3 0 0277 +¿ " +`A 11,16 0 0300 +À " +'A 11,16 0 0301 +Á " +^A 11,16 0 0302 +Â " +~A 11,15 0 0303 +Ã " +:A 11,15 0 0304 +Ä " +oA 11,15 0 0305 +Å " +AE 16,12 0 0306 +Æ " +,C 12,12,3 0 0307 +Ç " +`E 11,16 0 0310 +È " +'E 11,16 0 0311 +É " +^E 11,16 0 0312 +Ê " +:E 11,15 0 0313 +Ë " +`I 4,16 0 0314 +Ì " +'I 4,16 0 0315 +Í " +^I 4,16 0 0316 +Î " +:I 4,15 0 0317 +Ï " +-D 12,12 0 0320 +Ð " +~N 12,15 0 0321 +Ñ " +`O 13,16 0 0322 +Ò " +'O 13,16 0 0323 +Ó " +^O 13,16 0 0324 +Ô " +~O 13,15 0 0325 +Õ " +:O 13,15 0 0326 +Ö " +mu 10,8 0 0327 +× " +/O 13,12 0 0330 +Ø " +`U 12,16 0 0331 +Ù " +'U 12,16 0 0332 +Ú " +^U 12,16 0 0333 +Û " +:U 12,15 0 0334 +Ü " +'Y 11,16 0 0335 +Ý " +TP 11,12 0 0336 +Þ " +ss 10,12 0 0337 +ß " +`a 9,13 0 0340 +à " +'a 9,13 0 0341 +á " +^a 9,13 0 0342 +â " +~a 9,12 0 0343 +ã " +:a 9,12 0 0344 +ä " +oa 9,13 0 0345 +å " +ae 15,9 0 0346 +æ " +,c 8,9,3 0 0347 +ç " +`e 9,13 0 0350 +è " +'e 9,13 0 0351 +é " +^e 9,13 0 0352 +ê " +:e 9,12 0 0353 +ë " +`i 4,13 0 0354 +ì " +'i 4,13 0 0355 +í " +^i 4,13 0 0356 +î " +:i 4,12 0 0357 +ï " +Sd 9,12 0 0360 +ð " +~n 9,12 0 0361 +ñ " +`o 9,13 0 0362 +ò " +'o 9,13 0 0363 +ó " +^o 9,13 0 0364 +ô " +~o 9,12 0 0365 +õ " +:o 9,12 0 0366 +ö " +di 10,9 0 0367 +÷ " +/o 10,9 0 0370 +ø " +`u 9,13 0 0371 +ù " +'u 9,13 0 0372 +ú " +^u 9,13 0 0373 +û " +:u 9,12 0 0374 +ü " +'y 8,13,4 0 0375 +ý " +Tp 9,12,4 0 0376 +þ " +:y 8,12,4 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/HR b/contrib/groff/devX100-12/HR new file mode 100644 index 000000000000..d2b296f64e7e --- /dev/null +++ b/contrib/groff/devX100-12/HR @@ -0,0 +1,306 @@ +name HR +spacewidth 5 +charset +--- 5,1 0 040 +! 5,12 0 041 +" 6,12 0 042 +# 9,11 0 043 +sh " +$ 9,13,2 0 044 +Do " +% 14,12 0 045 +& 11,12 0 046 +' 4,12 0 047 +( 6,12,4 0 050 +) 6,12,4 0 051 +* 6,12 0 052 ++ 10,9 0 053 +, 4,2,2 0 054 +\- 10,5 0 055 +. 4,2 0 056 +/ 5,12 0 057 +sl " +0 9,12 0 060 +1 9,12 0 061 +2 9,12 0 062 +3 9,12 0 063 +4 9,12 0 064 +5 9,12 0 065 +6 9,12 0 066 +7 9,12 0 067 +8 9,12 0 070 +9 9,12 0 071 +: 4,9 0 072 +; 4,9,2 0 073 +< 10,9 0 074 += 10,6 0 075 +eq " +> 10,9 0 076 +? 9,12 0 077 +@ 17,12,2 0 0100 +at " +A 11,12 0 0101 +B 11,12 0 0102 +C 12,12 0 0103 +D 12,12 0 0104 +E 11,12 0 0105 +F 10,12 0 0106 +G 13,12 0 0107 +H 12,12 0 0110 +I 4,12 0 0111 +J 8,12 0 0112 +K 11,12 0 0113 +L 9,12 0 0114 +M 13,12 0 0115 +N 12,12 0 0116 +O 13,12 0 0117 +P 11,12 0 0120 +Q 13,12,1 0 0121 +R 12,12 0 0122 +S 11,12 0 0123 +T 10,12 0 0124 +U 12,12 0 0125 +V 11,12 0 0126 +W 15,12 0 0127 +X 11,12 0 0130 +Y 11,12 0 0131 +Z 10,12 0 0132 +[ 5,12,3 0 0133 +lB " +\ 5,12 0 0134 +rs " +] 5,12,3 0 0135 +rB " +^ 8,12 0 0136 +a^ " +ha " +_ 9,0,3 0 0137 +` 4,12 0 0140 +oq " +a 9,9 0 0141 +b 9,12 0 0142 +c 8,9 0 0143 +d 9,12 0 0144 +e 9,9 0 0145 +f 5,12 0 0146 +g 9,9,4 0 0147 +h 9,12 0 0150 +i 3,12 0 0151 +j 4,12,4 0 0152 +k 8,12 0 0153 +l 3,12 0 0154 +m 14,9 0 0155 +n 9,9 0 0156 +o 9,9 0 0157 +p 9,9,4 0 0160 +q 9,9,4 0 0161 +r 5,9 0 0162 +s 8,9 0 0163 +t 5,11 0 0164 +u 9,9 0 0165 +v 8,9 0 0166 +w 12,9 0 0167 +x 8,9 0 0170 +y 8,9,3 0 0171 +z 8,9 0 0172 +{ 6,12,4 0 0173 +lC " +| 4,12,4 0 0174 +or " +ba " +} 6,12,4 0 0175 +rC " +~ 10,6 0 0176 +a~ " +ap " +ti " +r! 6,9,3 0 0241 +¡ " +ct 9,11,2 0 0242 +¢ " +Po 9,12 0 0243 +£ " +Cs 9,10 0 0244 +¤ " +Ye 9,12 0 0245 +¥ " +bb 4,12,4 0 0246 +¦ " +sc 9,12,3 0 0247 +§ " +ad 5,12 0 0250 +¨ " +co 12,12 0 0251 +© " +Of 6,12 0 0252 +ª " +Fo 9,8 0 0253 +« " +no 10,6 0 0254 +¬ " +- 5,5 0 0255 +hy " + " +rg 12,12 0 0256 +® " +a- 6,11 0 0257 +¯ " +de 7,12 0 0260 +° " ++- 10,11 0 0261 +± " +S2 6,12 0 0262 +² " +S3 6,12 0 0263 +³ " +aa 6,13 0 0264 +´ " +µ 9,9,4 0 0265 +ps 9,12,3 0 0266 +¶ " +md 5,6 0 0267 +· " +ac 6,0,4 0 0270 +¸ " +S1 6,12 0 0271 +¹ " +Om 6,12 0 0272 +º " +Fc 9,8 0 0273 +» " +14 14,12 0 0274 +¼ " +12 14,13 0 0275 +½ " +34 14,12 0 0276 +¾ " +r? 10,9,3 0 0277 +¿ " +`A 11,16 0 0300 +À " +'A 11,16 0 0301 +Á " +^A 11,16 0 0302 +Â " +~A 11,15 0 0303 +Ã " +:A 11,15 0 0304 +Ä " +oA 11,15 0 0305 +Å " +AE 16,12 0 0306 +Æ " +,C 12,12,4 0 0307 +Ç " +`E 11,16 0 0310 +È " +'E 11,16 0 0311 +É " +^E 11,16 0 0312 +Ê " +:E 11,15 0 0313 +Ë " +`I 4,16 0 0314 +Ì " +'I 4,16 0 0315 +Í " +^I 4,16 0 0316 +Î " +:I 4,15 0 0317 +Ï " +-D 12,12 0 0320 +Ð " +~N 12,15 0 0321 +Ñ " +`O 13,16 0 0322 +Ò " +'O 13,16 0 0323 +Ó " +^O 13,16 0 0324 +Ô " +~O 13,15 0 0325 +Õ " +:O 13,15 0 0326 +Ö " +mu 10,8 0 0327 +× " +/O 13,13,1 0 0330 +Ø " +`U 12,16 0 0331 +Ù " +'U 12,16 0 0332 +Ú " +^U 12,16 0 0333 +Û " +:U 12,15 0 0334 +Ü " +'Y 11,16 0 0335 +Ý " +TP 11,12 0 0336 +Þ " +ss 10,12 0 0337 +ß " +`a 9,13 0 0340 +à " +'a 9,13 0 0341 +á " +^a 9,13 0 0342 +â " +~a 9,12 0 0343 +ã " +:a 9,12 0 0344 +ä " +oa 9,13 0 0345 +å " +ae 15,9 0 0346 +æ " +,c 8,9,4 0 0347 +ç " +`e 9,13 0 0350 +è " +'e 9,13 0 0351 +é " +^e 9,13 0 0352 +ê " +:e 9,12 0 0353 +ë " +`i 4,13 0 0354 +ì " +'i 4,13 0 0355 +í " +^i 4,13 0 0356 +î " +:i 4,12 0 0357 +ï " +Sd 9,12 0 0360 +ð " +~n 9,12 0 0361 +ñ " +`o 9,13 0 0362 +ò " +'o 9,13 0 0363 +ó " +^o 9,13 0 0364 +ô " +~o 9,12 0 0365 +õ " +:o 9,12 0 0366 +ö " +di 10,9 0 0367 +÷ " +/o 10,10 0 0370 +ø " +`u 9,13 0 0371 +ù " +'u 9,13 0 0372 +ú " +^u 9,13 0 0373 +û " +:u 9,12 0 0374 +ü " +'y 8,13,3 0 0375 +ý " +Tp 9,12,4 0 0376 +þ " +:y 8,12,3 0 0377 +ÿ " diff --git a/contrib/groff/devX100-12/Makefile.sub b/contrib/groff/devX100-12/Makefile.sub new file mode 100644 index 000000000000..d0747579afe5 --- /dev/null +++ b/contrib/groff/devX100-12/Makefile.sub @@ -0,0 +1,2 @@ +DEV=X100-12 +DEVFILES=DESC TR TI TB TBI CR CI CB CBI HR HI HB HBI NR NI NB NBI S diff --git a/contrib/groff/devX100-12/NB b/contrib/groff/devX100-12/NB new file mode 100644 index 000000000000..f997df5961df --- /dev/null +++ b/contrib/groff/devX100-12/NB @@ -0,0 +1,306 @@ +name NB +spacewidth 4 +charset +--- 4,1 0 040 +! 5,12 0 041 +" 6,12 0 042 +# 10,12 0 043 +sh " +$ 10,14,1 0 044 +Do " +% 14,12 0 045 +& 14,12 0 046 +' 4,12 0 047 +( 6,12,2 0 050 +) 6,12,2 0 051 +* 8,12 0 052 ++ 10,8 0 053 +, 5,3,3 0 054 +\- 10,5 0 055 +. 5,3 0 056 +/ 5,12 0 057 +sl " +0 10,12 0 060 +1 9,12 0 061 +2 9,12 0 062 +3 10,12 0 063 +4 9,12 0 064 +5 10,12 0 065 +6 9,12 0 066 +7 9,12 0 067 +8 9,12 0 070 +9 10,12 0 071 +: 5,8 0 072 +; 5,8,3 0 073 +< 10,9 0 074 += 10,7 0 075 +eq " +> 10,9 0 076 +? 8,12 0 077 +@ 12,12,1 0 0100 +at " +A 13,12 0 0101 |