Changes for groff version 1.09, from version 1.08. Apply these changes by doing: patch -p1 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 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 . + + 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 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) diff -rc2N groff-1.08/INSTALL groff-1.09/INSTALL *** groff-1.08/INSTALL Mon Jan 4 23:14:21 1993 --- groff-1.09/INSTALL Fri Feb 11 11:51:02 1994 *************** *** 1,9 **** 1. Get 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.3.1 or later (gcc version 2 ! includes GNU C++ as well as GNU C). If you are using gcc or g++ as ! your C++ compiler, you will also need to install the corresponding ! version of libg++, unless your system header files provide C++ ! support. 2. In the directory that this file is in, type `./configure'. If --- 1,8 ---- 1. Get 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.5.8 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. 2. In the directory that this file is in, type `./configure'. If *************** *** 89,92 **** --- 88,95 ---- CCLIBS Libraries to link C++ programs with, in the same form. + 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. If you need to do unusual things to compile the package, we encourage diff -rc2N groff-1.08/Makefile.comm groff-1.09/Makefile.comm *** groff-1.08/Makefile.comm Sat Apr 3 16:58:23 1993 --- groff-1.09/Makefile.comm Sun Apr 25 11:03:56 1993 *************** *** 95,99 **** fi mv y.tab.c $@ ! test -z "$(YTABH)" || mv y.tab.h $(YTABH) .man.n: --- 95,107 ---- 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: diff -rc2N groff-1.08/Makefile.in groff-1.09/Makefile.in *** groff-1.08/Makefile.in Mon Apr 19 10:48:25 1993 --- groff-1.09/Makefile.in Mon Feb 14 08:43:08 1994 *************** *** 70,74 **** tmac_s=$(g)s ! # Similarily, the groff mm macros will be available as -m$(tmac_m). tmac_m=$(g)m --- 70,74 ---- tmac_s=$(g)s ! # Similarly, the groff mm macros will be available as -m$(tmac_m). tmac_m=$(g)m *************** *** 100,104 **** # Extension to be used for refer index files. Index files are not ! # shareable 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. --- 100,104 ---- # 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. *************** *** 144,148 **** # by a signal # -DHAVE_UNISTD_H if you have ! # -DHAVE_CC_UNISTD_H if you have a C++ # -DHAVE_DIRENT_H if you have # -DHAVE_LIMITS_H if you have --- 144,148 ---- # by a signal # -DHAVE_UNISTD_H if you have ! # -DHAVE_CC_OSFCN_H if you have a C++ # -DHAVE_DIRENT_H if you have # -DHAVE_LIMITS_H if you have *************** *** 157,160 **** --- 157,161 ---- # -DUNISTD_H_DECLARES_GETOPT if your C++ declares getopt() # -DSTDLIB_H_DECLARES_PUTENV if your C++ declares putenv() + # -DSTDIO_H_DECLARES_POPEN if your C++ declares popen() # -DTRADITIONAL_CPP if your C++ compiler uses a traditional # (Reiser) preprocessor. *************** *** 203,211 **** PURIFY=purify ! GCCVERSION=2.3.3 ! GCCPREFIX=/usr/local/lib/gcc-lib/sparc-sun-sunos4.1/$(GCCVERSION)/ ! PURIFYCCFLAGS=-g++=yes -collector=$(GCCPREFIX)ld ! ! MDEFINES="PAGE=$(PAGE)" "BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \ "DEVICE=$(DEVICE)" "PSPRINT=$(PSPRINT)" "DVIPRINT=$(DVIPRINT)" \ "prefix=$(prefix)" "exec_prefix=$(exec_prefix)" "bindir=$(bindir)" \ --- 204,216 ---- 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)" \ *************** *** 262,266 **** else srcdir=`cd $(srcdir); pwd`/$@; \ fi; \ - echo Making $(do) in $@; \ test -d $@ || mkdir $@; \ cd $@; \ --- 267,270 ---- *************** *** 274,278 **** else srcdir=`cd $(srcdir); pwd`/$@; \ fi; \ - echo Making $(do) in $@; \ test -d $@ || mkdir $@; \ cd $@; \ --- 278,281 ---- *************** *** 286,290 **** else srcdir=`cd $(srcdir); pwd`/$@; \ fi; \ - echo Making $(do) in $@; \ test -d $@ || mkdir $@; \ cd $@; \ --- 289,292 ---- *************** *** 298,302 **** else srcdir=`cd $(srcdir); pwd`/$@; \ fi; \ - echo Making $(do) in $@; \ test -d $@ || mkdir $@; \ cd $@; \ --- 300,303 ---- *************** *** 310,314 **** else srcdir=`cd $(srcdir); pwd`/$@; \ fi; \ - echo Making $(do) in $@; \ test -d $@ || mkdir $@; \ cd $@; \ --- 311,314 ---- *************** *** 340,344 **** $(LN_S) $$srcdir/Makefile.init Makefile mv tmp groff-$(version) ! tar cfh - groff-$(version) | gzip -c >groff-$(version).tar.z rm -fr groff-$(version) --- 340,344 ---- $(LN_S) $$srcdir/Makefile.init Makefile mv tmp groff-$(version) ! tar cfh - groff-$(version) | gzip -c >groff-$(version).tar.gz rm -fr groff-$(version) diff -rc2N groff-1.08/NEWS groff-1.09/NEWS *** groff-1.08/NEWS Thu Apr 1 11:49:17 1993 --- groff-1.09/NEWS Mon Feb 14 08:43:07 1994 *************** *** 2,5 **** --- 2,26 ---- are not described. There are more details in the man pages. + 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 ============ *************** *** 85,89 **** 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. Similarily the command to be used for printing (with the -l option) is now specified by a `print' command in the DESC file. --- 106,110 ---- 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. *************** *** 202,206 **** For backward compatibility with BSD -me, the \*{ and \*} strings are ! also available as \*[ and \*]. Of course, \*[ will only be useable with -C. --- 223,227 ---- For backward compatibility with BSD -me, the \*{ and \*} strings are ! also available as \*[ and \*]. Of course, \*[ will only be usable with -C. *************** *** 588,592 **** of end of sentence recognition. ! There is an anti-recusion feature in the `char' request, so you can say `.char \(bu \s+2\(bu\s-2'. --- 609,613 ---- 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'. diff -rc2N groff-1.08/PROBLEMS groff-1.09/PROBLEMS *** groff-1.08/PROBLEMS Wed Apr 7 10:38:49 1993 --- groff-1.09/PROBLEMS Fri Feb 11 12:31:20 1994 *************** *** 3,35 **** other improvements to this file are welcome. - * gcc 2.3.3 fails to compile pic/object.cc. - - Apply the following patch: - - Thu Apr 1 12:06:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com) - - * cp-init.c (expand_default_init): Don't clear DECL_REGISTER. - - *** cp-init.c.~2~ Mon Mar 29 21:48:36 1993 - --- cp-init.c Thu Apr 1 12:00:33 1993 - *************** expand_default_init (binfo, true_exp, ex - *** 1141,1149 **** - } - - - /* ARM $7.1.1: "[register] may be ignored and in most implementations - - it will be ignored if the address of the variable is taken." - - Since we're likely to do just that in the ctor call, clear this. */ - - DECL_REGISTER (exp) = 0; - - - rval = build_method_call (exp, constructor_name (type), - parms, binfo, flags|xxref_init_possible); - --- 1141,1144 ---- - - - * On a DECstation or other machine using a MIPS cpu, gcc/g++ 2.2.2 - gets a fatal signal while compiling tbl/main.c and tbl/table.c. - - Upgrade to gcc 2.3 or compile those files without -O. - * 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. --- 3,6 ---- *************** *** 457,458 **** --- 428,544 ---- 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 a Laserjet printer? + + 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 (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 -rc2N groff-1.08/PROJECTS groff-1.09/PROJECTS *** groff-1.08/PROJECTS Sat Sep 26 12:48:41 1992 --- groff-1.09/PROJECTS Sat Feb 12 15:25:05 1994 *************** *** 12,16 **** (like pm and -mpm) ! a complete, self-contained manual If you want to work on one of these, I suggest you contact me first. --- 12,16 ---- (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. diff -rc2N groff-1.08/TODO groff-1.09/TODO *** groff-1.08/TODO Mon Apr 19 09:59:42 1993 --- groff-1.09/TODO Sat Feb 12 11:46:06 1994 *************** *** 23,24 **** --- 23,26 ---- .(l C .)z + + Arrows for next/previous page from R5 xditview. diff -rc2N groff-1.08/VERSION groff-1.09/VERSION *** groff-1.08/VERSION Mon Apr 19 10:11:20 1993 --- groff-1.09/VERSION Sat Feb 19 13:03:34 1994 *************** *** 1 **** ! 1.08 --- 1 ---- ! 1.09 diff -rc2N groff-1.08/acgroff.m4 groff-1.09/acgroff.m4 *** groff-1.08/acgroff.m4 Mon Apr 19 09:37:38 1993 --- groff-1.09/acgroff.m4 Sat Feb 12 14:34:48 1994 *************** *** 49,54 **** echo checking that C++ compiler can compile very simple C++ program GROFF_CC_TEST_PROGRAM([ ! extern "C" { void exit(int); } ! int main() { exit(0); } ],, cat <. ! If you're using gcc/g++, you should install libg++. EOF GROFF_EXIT])])dnl --- 82,87 ---- I was unable to compile and link a simple C++ program that used a function declared in . ! If you're using a version of gcc/g++ earlier than 2.5, ! you should install libg++. EOF GROFF_EXIT])])dnl *************** *** 91,96 **** cat <conftest.cc [$2] ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { [$3] } EOF dnl Don't try to run the program, which would prevent cross-configuring. --- 90,94 ---- cat <conftest.cc [$2] ! int main() { return 0; } void t() { [$3] } EOF dnl Don't try to run the program, which would prevent cross-configuring. *************** *** 224,228 **** delete p; testit = 0; ! exit(1); } --- 222,226 ---- delete p; testit = 0; ! return 1; } *************** *** 265,269 **** { int z = 0; ! exit(INT_MIN < z); } ],AC_DEFINE(CFRONT_ANSI_BUG),,)])dnl --- 263,267 ---- { int z = 0; ! return INT_MIN < z; } ],AC_DEFINE(CFRONT_ANSI_BUG),,)])dnl *************** *** 315,331 **** define(GROFF_GETOPT, [GROFF_CC_COMPILE_CHECK([declaration of getopt in stdlib.h], ! [#include ], ! [int opt = getopt(0, 0, 0); optarg = "foo"; optind = 1;], AC_DEFINE(STDLIB_H_DECLARES_GETOPT)) GROFF_CC_COMPILE_CHECK([declaration of getopt in unistd.h], [#include ! #include ], ! [int opt = getopt(0, 0, 0);], AC_DEFINE(UNISTD_H_DECLARES_GETOPT)) ])dnl define(GROFF_PUTENV, ! [GROFF_CC_COMPILE_CHECK([declaration of putenv],[#include ], ! [putenv((char *)0);], AC_DEFINE(STDLIB_H_DECLARES_PUTENV))])dnl define(GROFF_ETAGSCCFLAG, [echo checking for etags C++ option --- 313,340 ---- define(GROFF_GETOPT, [GROFF_CC_COMPILE_CHECK([declaration of getopt in stdlib.h], ! [#include ! extern "C" { void getopt(int); }],,, AC_DEFINE(STDLIB_H_DECLARES_GETOPT)) GROFF_CC_COMPILE_CHECK([declaration of getopt in unistd.h], [#include ! #include ! extern "C" { void getopt(int); }],,, AC_DEFINE(UNISTD_H_DECLARES_GETOPT)) ])dnl define(GROFF_PUTENV, ! [GROFF_CC_COMPILE_CHECK([declaration of putenv], ! [#include ! extern "C" { void putenv(int); }],,, AC_DEFINE(STDLIB_H_DECLARES_PUTENV))])dnl + define(GROFF_POPEN, + [GROFF_CC_COMPILE_CHECK([declaration of popen], + [#include + extern "C" { void popen(int); }],,, + AC_DEFINE(STDIO_H_DECLARES_POPEN))])dnl + define(GROFF_PCLOSE, + [GROFF_CC_COMPILE_CHECK([declaration of pclose], + [#include + extern "C" { void pclose(int); }],,, + AC_DEFINE(STDIO_H_DECLARES_PCLOSE))])dnl define(GROFF_ETAGSCCFLAG, [echo checking for etags C++ option *************** *** 352,360 **** [time_t t = time(0); struct tm *p = localtime(&t);],, AC_DEFINE(LONG_FOR_TIME_T))])dnl ! define(GROFF_UNISTD_H, ! [GROFF_CC_COMPILE_CHECK(['C++ '],[#include ], dnl Bison generated parsers have problems with C++ compilers other than g++. dnl So byacc is preferred over bison. - [read(0, 0, 0);],AC_DEFINE(HAVE_CC_UNISTD_H))])dnl define(GROFF_PROG_YACC, [AC_PROGRAM_CHECK(YACC, byacc, byacc, ) --- 361,369 ---- [time_t t = time(0); struct tm *p = localtime(&t);],, AC_DEFINE(LONG_FOR_TIME_T))])dnl ! define(GROFF_OSFCN_H, ! [GROFF_CC_COMPILE_CHECK(['C++ '],[#include ], ! [read(0, 0, 0); open(0, 0);],AC_DEFINE(HAVE_CC_OSFCN_H))])dnl dnl Bison generated parsers have problems with C++ compilers other than g++. dnl So byacc is preferred over bison. define(GROFF_PROG_YACC, [AC_PROGRAM_CHECK(YACC, byacc, byacc, ) *************** *** 379,380 **** --- 388,403 ---- rm -f conftest.sh ])dnl + define(GROFF_POSIX, + [GROFF_CC_COMPILE_CHECK(whether -D_POSIX_SOURCE is necessary, + [#include ], + [(void)fileno(stdin);],, + AC_DEFINE(_POSIX_SOURCE))])dnl + dnl From udodo!hans@relay.NL.net (Hans Zuidam) + define(GROFF_ISC_SYSV3, + [echo '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_DEFINE(_SYSV3) + fi])dnl diff -rc2N groff-1.08/addftinfo/addftinfo.cc groff-1.09/addftinfo/addftinfo.cc *** groff-1.08/addftinfo/addftinfo.cc Mon Aug 3 11:31:00 1992 --- groff-1.09/addftinfo/addftinfo.cc Sun Feb 13 10:24:31 1994 *************** *** 35,39 **** static void convert_font(const font_params &, FILE *, FILE *); ! typedef font_params::*param_t; static struct { --- 35,39 ---- static void convert_font(const font_params &, FILE *, FILE *); ! typedef int font_params::*param_t; static struct { *************** *** 41,52 **** 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, }; --- 41,52 ---- 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 }, }; *************** *** 114,118 **** fatal("can't open `%1': %2", font, strerror(errno)); convert_font(param, infp, stdout); ! exit(0); } --- 114,118 ---- fatal("can't open `%1': %2", font, strerror(errno)); convert_font(param, infp, stdout); ! return 0; } diff -rc2N groff-1.08/afmtodit/afmtodit.man groff-1.09/afmtodit/afmtodit.man *** groff-1.08/afmtodit/afmtodit.man Tue Feb 23 14:47:53 1993 --- groff-1.09/afmtodit/afmtodit.man Mon Feb 14 08:43:05 1994 *************** *** 184,188 **** .Tp \w'\fB@FONTDIR@/devps/download'u+2n .B @FONTDIR@/devps/DESC ! Device desciption file. .TP .BI @FONTDIR@/devps/ F --- 184,188 ---- .Tp \w'\fB@FONTDIR@/devps/download'u+2n .B @FONTDIR@/devps/DESC ! Device description file. .TP .BI @FONTDIR@/devps/ F diff -rc2N groff-1.08/afmtodit/afmtodit.pl groff-1.09/afmtodit/afmtodit.pl *** groff-1.08/afmtodit/afmtodit.pl Thu Aug 27 17:01:56 1992 --- groff-1.09/afmtodit/afmtodit.pl Mon Apr 19 20:53:51 1993 *************** *** 164,169 **** } 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'"; } --- 164,169 ---- } 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'"; } diff -rc2N groff-1.08/bug.PS groff-1.09/bug.PS *** groff-1.08/bug.PS Fri Oct 23 06:44:08 1992 --- groff-1.09/bug.PS *************** *** 1,66 **** - %!PS-Adobe-2.0 - %%DocumentFonts: Times-Roman Times-Italic Times-Bold Symbol - %%Pages: (atend) - %%EndComments - % $Header: /home/jjc/catps/RCS/catps.pro,v 1.1 89/01/08 11:00:18 jjc Exp $ - - /catps 13 dict def - - catps begin - - /F0 /Times-Roman findfont def - /F1 /Times-Italic findfont def - /F2 /Times-Bold findfont def - /F3 /Symbol findfont def - /F { scalefont setfont } bind def - /S /show load def - /M /moveto load def - /BP { /level0 save def 1 6 div dup scale } bind def - /EP { level0 restore showpage } bind def - /T /end load def - - /fractiondict 5 dict def - % num den FS -- print a fraction - % it alters currentpoint but leaves currentfont unchanged - - /FS { - fractiondict begin - /den exch def - /num exch def - /regularfont currentfont def - /fractionfont currentfont [.65 0 0 .6 0 0] makefont def - gsave - newpath 0 0 moveto (1) true charpath flattenpath pathbbox - /height exch def pop pop pop - grestore - 0 .4 height mul rmoveto - fractionfont setfont num show - 0 .4 height mul neg rmoveto - regularfont setfont (\244) show - fractionfont setfont den show - regularfont setfont - end - } def - - end - - - %%EndProlog - %%BeginSetup - catps begin - %%EndSetup - - %%Page: ? 1 - BP - F0 60 F - 216 4382 M(a)S - 336 4289 M(b)S - 456 4196 M(c)S - 576 4103 M(d)S - 576 4010 M(e)S - 576 3917 M(f)S - 216 3821 M(g)S - EP - %%Trailer - T - --- 0 ---- diff -rc2N groff-1.08/configure groff-1.09/configure *** groff-1.08/configure Mon Apr 19 09:48:18 1993 --- groff-1.09/configure Sat Feb 12 14:43:06 1994 *************** *** 18,27 **** # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! # Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] [--no-create] ! # [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE] [TARGET] ! # Ignores all args except --srcdir, --prefix, --exec-prefix, --no-create, and ! # --with-PACKAGE unless this script has special code to handle it. - for arg do --- 18,26 ---- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ! # Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] ! # [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE[=VALUE]] ! # Ignores all args except --srcdir, --prefix, --exec-prefix, and ! # --with-PACKAGE[=VALUE] unless this script has special code to handle it. for arg do *************** *** 36,40 **** else case $arg in ! # For backward compatibility, also recognize exact --exec_prefix. -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*) exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;; --- 35,39 ---- else case $arg in ! # For backward compatibility, recognize -exec-prefix and --exec_prefix. -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*) exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;; *************** *** 50,56 **** -nfp | --nfp | --nf) ;; - -no-create | --no-create | --no-creat | --no-crea | --no-cre | --no-cr | --no-c | --no- | --no) - no_create=1 ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;; --- 49,52 ---- *************** *** 64,73 **** -with-* | --with-*) ! package=`echo $arg|sed 's/-*with-//'` ! # Delete all the valid chars; see if any are left. ! if test -n "`echo $package|sed 's/[-a-zA-Z0-9_]*//g'`"; then echo "configure: $package: invalid package name" >&2; exit 1 fi ! eval "with_`echo $package|sed s/-/_/g`=1" ;; *) ;; --- 60,77 ---- -with-* | --with-*) ! package=`echo $arg|sed -e 's/-*with-//' -e 's/=.*//'` ! # Reject names that aren't valid shell variable names. ! if test -n "`echo $package| sed 's/[-a-zA-Z0-9_]//g'`"; then echo "configure: $package: invalid package name" >&2; exit 1 fi ! package=`echo $package| sed 's/-/_/g'` ! case "$arg" in ! *=*) val="`echo $arg|sed 's/[^=]*=//'`" ;; ! *) val=1 ;; ! esac ! eval "with_$package='$val'" ;; ! ! -v | -verbose | --verbose | --verbos | --verbo | --verb | --ver | --ve | --v) ! verbose=yes ;; *) ;; *************** *** 76,83 **** done ! trap 'rm -f conftest* core; exit 1' 1 3 15 ! rm -f conftest* ! compile='${CC-cc} $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1' # A filename unique to this package, relative to the directory that --- 80,96 ---- done ! trap 'rm -fr conftest* confdefs* core; exit 1' 1 3 15 ! trap 'rm -f confdefs*' 0 ! # NLS nuisances. ! # 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 ! ! rm -f conftest* confdefs.h ! # AIX cpp loses on an empty file, so make sure it contains at least a newline. ! echo > confdefs.h ! compile='${CC-cc} $CFLAGS conftest.c -o conftest $LIBS >/dev/null 2>&1' # A filename unique to this package, relative to the directory that *************** *** 112,119 **** esac if test -z "$prefix" then echo checking for grops to derive installation directory prefix ! saveifs="$IFS"; IFS="$IFS:" for dir in $PATH; do test -z "$dir" && dir=. --- 125,136 ---- esac + + # Save the original args to write them into config.status later. + configure_args="$*" + if test -z "$prefix" then echo checking for grops to derive installation directory prefix ! IFS="${IFS= }"; saveifs="$IFS"; IFS="$IFS:" for dir in $PATH; do test -z "$dir" && dir=. *************** *** 125,133 **** done IFS="$saveifs" fi if test -z "$prefix" then echo checking for gcc to derive installation directory prefix ! saveifs="$IFS"; IFS="$IFS:" for dir in $PATH; do test -z "$dir" && dir=. --- 142,151 ---- done IFS="$saveifs" + echo " chose installation directory prefix ${prefix}" fi if test -z "$prefix" then echo checking for gcc to derive installation directory prefix ! IFS="${IFS= }"; saveifs="$IFS"; IFS="$IFS:" for dir in $PATH; do test -z "$dir" && dir=. *************** *** 139,150 **** done IFS="$saveifs" fi if test -z "$CC"; then ! echo checking for gcc ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/gcc; then CC="gcc" break --- 157,171 ---- done IFS="$saveifs" + echo " chose installation directory prefix ${prefix}" fi if test -z "$CC"; then ! # Extract the first word of `gcc', so it can be a program name with args. ! set dummy gcc; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then CC="gcc" break *************** *** 154,157 **** --- 175,179 ---- fi test -z "$CC" && CC="cc" + test -n "$CC" && test -n "$verbose" && echo " setting CC to $CC" # Find out if we are using GNU C, under whatever name. *************** *** 183,191 **** fi if test -z "$CCC"; then ! echo checking for g++ ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/g++; then CCC="g++" break --- 205,215 ---- fi if test -z "$CCC"; then ! # Extract the first word of `g++', so it can be a program name with args. ! set dummy g++; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then CCC="g++" break *************** *** 194,205 **** IFS="$saveifs" fi - test -z "$CCC" && CCC="" if test -z "$CCC"; then ! echo checking for CC ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/CC; then CCC="CC" break --- 218,232 ---- IFS="$saveifs" fi + test -n "$CCC" && test -n "$verbose" && echo " setting CCC to $CCC" + if test -z "$CCC"; then ! # Extract the first word of `CC', so it can be a program name with args. ! set dummy CC; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then CCC="CC" break *************** *** 208,219 **** IFS="$saveifs" fi ! test -z "$CCC" && CCC="" if test -z "$CCC"; then ! echo checking for cc++ ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/cc++; then CCC="cc++" break --- 235,249 ---- IFS="$saveifs" fi ! ! test -n "$CCC" && test -n "$verbose" && echo " setting CCC to $CCC" if test -z "$CCC"; then ! # Extract the first word of `cc++', so it can be a program name with args. ! set dummy cc++; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then CCC="cc++" break *************** *** 222,226 **** IFS="$saveifs" fi ! test -z "$CCC" && CCC="" if test -z "$CCC"; then --- 252,257 ---- IFS="$saveifs" fi ! ! test -n "$CCC" && test -n "$verbose" && echo " setting CCC to $CCC" if test -z "$CCC"; then *************** *** 234,239 **** cat < conftest.cc ! extern "C" { void exit(int); } ! int main() { exit(0); } EOF --- 265,269 ---- cat < conftest.cc ! int main() { return 0; } EOF *************** *** 255,259 **** extern "C" { - void exit(int); void _exit(int); } --- 285,288 ---- *************** *** 265,269 **** }; A a; ! main() { exit(1); } EOF --- 294,298 ---- }; A a; ! int main() { return 1; } EOF *************** *** 283,288 **** cat <conftest.cc #include ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { fopen(0, 0); } EOF if eval $cc_compile; then --- 312,316 ---- cat <conftest.cc #include ! int main() { return 0; } void t() { fopen(0, 0); } EOF if eval $cc_compile; then *************** *** 293,297 **** I was unable to compile and link a simple C++ program that used a function declared in . ! If you're using gcc/g++, you should install libg++. EOF rm -f conftest* core; exit 1 --- 321,326 ---- I was unable to compile and link a simple C++ program that used a function declared in . ! If you're using a version of gcc/g++ earlier than 2.5, ! you should install libg++. EOF rm -f conftest* core; exit 1 *************** *** 303,311 **** do if test -z "$LPR"; then ! echo checking for $p ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$p; then LPR="$p" break --- 332,342 ---- do if test -z "$LPR"; then ! # Extract the first word of `$p', so it can be a program name with args. ! set dummy $p; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then LPR="$p" break *************** *** 314,318 **** IFS="$saveifs" fi ! test -z "$LPR" && LPR="" test -n "$LPR" && break --- 345,350 ---- IFS="$saveifs" fi ! ! test -n "$LPR" && test -n "$verbose" && echo " setting LPR to $LPR" test -n "$LPR" && break *************** *** 322,330 **** do if test -z "$LP"; then ! echo checking for $p ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$p; then LP="$p" break --- 354,364 ---- do if test -z "$LP"; then ! # Extract the first word of `$p', so it can be a program name with args. ! set dummy $p; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then LP="$p" break *************** *** 333,338 **** IFS="$saveifs" fi - test -z "$LP" && LP="" test -n "$LP" && break done --- 367,373 ---- IFS="$saveifs" fi + test -n "$LP" && test -n "$verbose" && echo " setting LP to $LP" + test -n "$LP" && break done *************** *** 346,354 **** do if test -z "$LPQ"; then ! echo checking for $p ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$p; then LPQ="$p" break --- 381,391 ---- do if test -z "$LPQ"; then ! # Extract the first word of `$p', so it can be a program name with args. ! set dummy $p; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then LPQ="$p" break *************** *** 357,361 **** IFS="$saveifs" fi ! test -z "$LPQ" && LPQ="" test -n "$LPQ" && break --- 394,399 ---- IFS="$saveifs" fi ! ! test -n "$LPQ" && test -n "$verbose" && echo " setting LPQ to $LPQ" test -n "$LPQ" && break *************** *** 397,405 **** if test -z "$YACC"; then ! echo checking for byacc ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/byacc; then YACC="byacc" break --- 435,445 ---- if test -z "$YACC"; then ! # Extract the first word of `byacc', so it can be a program name with args. ! set dummy byacc; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then YACC="byacc" break *************** *** 408,419 **** IFS="$saveifs" fi ! test -z "$YACC" && YACC="" if test -z "$YACC"; then ! echo checking for bison ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/bison; then YACC="bison -y" break --- 448,462 ---- IFS="$saveifs" fi ! ! test -n "$YACC" && test -n "$verbose" && echo " setting YACC to $YACC" if test -z "$YACC"; then ! # Extract the first word of `bison', so it can be a program name with args. ! set dummy bison; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then YACC="bison -y" break *************** *** 423,434 **** fi test -z "$YACC" && YACC="yacc" if test -z "$RANLIB"; then ! echo checking for ranlib ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/ranlib; then RANLIB="ranlib" break --- 466,480 ---- fi test -z "$YACC" && YACC="yacc" + test -n "$YACC" && test -n "$verbose" && echo " setting YACC to $YACC" if test -z "$RANLIB"; then ! # Extract the first word of `ranlib', so it can be a program name with args. ! set dummy ranlib; word=$2 ! echo checking for $word ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. ! if test -f $dir/$word; then RANLIB="ranlib" break *************** *** 437,454 **** IFS="$saveifs" fi ! test -z "$RANLIB" && RANLIB="@:" # Make sure to not get the incompatible SysV /etc/install and # /usr/sbin/install, which might be in PATH before a BSD-like install, # or the SunOS /usr/etc/install directory, or the AIX /bin/install, ! # or the AFS install, which mishandles nonexistent args. (Sigh.) ! if test -z "$INSTALL"; then echo checking for install ! saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. case $dir in ! /etc|/usr/sbin|/usr/etc|/usr/afsws/bin) ;; *) if test -f $dir/install; then if grep dspmsg $dir/install >/dev/null 2>&1; then --- 483,510 ---- IFS="$saveifs" fi ! test -z "$RANLIB" && RANLIB=":" ! test -n "$RANLIB" && test -n "$verbose" && echo " setting RANLIB to $RANLIB" # Make sure to not get the incompatible SysV /etc/install and # /usr/sbin/install, which might be in PATH before a BSD-like install, # or the SunOS /usr/etc/install directory, or the AIX /bin/install, ! # or the AFS install, which mishandles nonexistent args, or ! # /usr/ucb/install on SVR4, which tries to use the nonexistent group ! # `staff'. On most BSDish systems install is in /usr/bin, not /usr/ucb ! # anyway. Sigh. ! if test "z${INSTALL}" = "z" ; then echo checking for install ! IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" for dir in $PATH; do test -z "$dir" && dir=. case $dir in ! /etc|/usr/sbin|/usr/etc|/usr/afsws/bin|/usr/ucb) ;; *) + if test -f $dir/installbsd; then + INSTALL="$dir/installbsd -c" # OSF1 + INSTALL_PROGRAM='$(INSTALL)' + INSTALL_DATA='$(INSTALL) -m 644' + break + fi if test -f $dir/install; then if grep dspmsg $dir/install >/dev/null 2>&1; then *************** *** 467,472 **** --- 523,531 ---- fi INSTALL=${INSTALL-cp} + test -n "$verbose" && echo " setting INSTALL to $INSTALL" INSTALL_PROGRAM=${INSTALL_PROGRAM-'$(INSTALL)'} + test -n "$verbose" && echo " setting INSTALL_PROGRAM to $INSTALL_PROGRAM" INSTALL_DATA=${INSTALL_DATA-'$(INSTALL)'} + test -n "$verbose" && echo " setting INSTALL_DATA to $INSTALL_DATA" echo checking for ln -s *************** *** 508,568 **** ! echo checking for unistd.h echo checking how to run the C preprocessor if test -z "$CPP"; then ! CPP='${CC-cc} -E' cat > conftest.c < EOF ! err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"` if test -z "$err"; then : else CPP=/lib/cpp fi rm -f conftest* fi cat > conftest.c < EOF ! err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"` if test -z "$err"; then ! DEFS="$DEFS -DHAVE_UNISTD_H=1" fi rm -f conftest* ! for hdr in dirent.h limits.h sys/dir.h stdlib.h ! do ! trhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'` ! echo checking for ${hdr} ! cat > conftest.c < EOF ! err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"` ! if test -z "$err"; then ! DEFS="$DEFS -D${trhdr}=1" fi rm -f conftest* - done - echo checking for 'C++ ' cat <conftest.cc #include ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX; } EOF if eval $cc_compile; then ! DEFS="$DEFS -DHAVE_CC_LIMITS_H=1" fi rm -f conftest* ! echo checking for 'C++ ' cat <conftest.cc ! #include ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { read(0, 0, 0); } EOF if eval $cc_compile; then ! DEFS="$DEFS -DHAVE_CC_UNISTD_H=1" fi rm -f conftest* --- 567,676 ---- ! for hdr in unistd.h dirent.h limits.h sys/dir.h stdlib.h ! do ! trhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'` ! echo checking for ${hdr} echo checking how to run the C preprocessor if test -z "$CPP"; then ! # This must be in double quotes, not single quotes, because CPP may get ! # substituted into the Makefile and ``${CC-cc}'' will simply confuse ! # make. It must be expanded now. ! CPP="${CC-cc} -E" cat > conftest.c < + Syntax Error EOF ! err=`eval "($CPP conftest.c >/dev/null) 2>&1"` if test -z "$err"; then : else + rm -rf conftest* CPP=/lib/cpp fi rm -f conftest* fi + test ".${verbose}" != "." && echo " setting CPP to $CPP" cat > conftest.c < EOF ! err=`eval "($CPP conftest.c >/dev/null) 2>&1"` if test -z "$err"; then ! rm -rf conftest* ! ! { ! test -n "$verbose" && \ ! echo " defining ${trhdr}" ! echo "#define" ${trhdr} 1 >> confdefs.h ! DEFS="$DEFS -D${trhdr}=1" ! } ! ! fi rm -f conftest* + done ! echo 'checking for ISC 3.x or 4.x' ! if grep '[34]\.' /usr/options/cb.name >/dev/null 2>&1 ! then ! ! { ! test -n "$verbose" && \ ! echo " defining _SYSV3" ! echo "#define" _SYSV3 1 >> confdefs.h ! DEFS="$DEFS -D_SYSV3=1" ! } ! ! fi ! echo checking for whether -D_POSIX_SOURCE is necessary ! cat <conftest.cc ! #include ! int main() { return 0; } void t() { (void)fileno(stdin); } EOF ! if eval $cc_compile; then ! : ! else ! ! { ! test -n "$verbose" && \ ! echo " defining _POSIX_SOURCE" ! echo "#define" _POSIX_SOURCE 1 >> confdefs.h ! DEFS="$DEFS -D_POSIX_SOURCE=1" ! } ! fi rm -f conftest* echo checking for 'C++ ' cat <conftest.cc #include ! int main() { return 0; } void t() { int x = INT_MIN; int y = INT_MAX; int z = UCHAR_MAX; } EOF if eval $cc_compile; then ! ! { ! test -n "$verbose" && \ ! echo " defining HAVE_CC_LIMITS_H" ! echo "#define" HAVE_CC_LIMITS_H 1 >> confdefs.h ! DEFS="$DEFS -DHAVE_CC_LIMITS_H=1" ! } ! fi rm -f conftest* ! echo checking for 'C++ ' cat <conftest.cc ! #include ! int main() { return 0; } void t() { read(0, 0, 0); open(0, 0); } EOF if eval $cc_compile; then ! ! { ! test -n "$verbose" && \ ! echo " defining HAVE_CC_OSFCN_H" ! echo "#define" HAVE_CC_OSFCN_H 1 >> confdefs.h ! DEFS="$DEFS -DHAVE_CC_OSFCN_H=1" ! } ! fi rm -f conftest* *************** *** 570,578 **** cat <conftest.cc #include ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { int opt = getopt(0, 0, 0); optarg = "foo"; optind = 1; } EOF if eval $cc_compile; then ! DEFS="$DEFS -DSTDLIB_H_DECLARES_GETOPT=1" fi rm -f conftest* --- 678,695 ---- cat <conftest.cc #include ! extern "C" { void getopt(int); } ! int main() { return 0; } void t() { } EOF if eval $cc_compile; then ! : ! else ! ! { ! test -n "$verbose" && \ ! echo " defining STDLIB_H_DECLARES_GETOPT" ! echo "#define" STDLIB_H_DECLARES_GETOPT 1 >> confdefs.h ! DEFS="$DEFS -DSTDLIB_H_DECLARES_GETOPT=1" ! } ! fi rm -f conftest* *************** *** 581,589 **** #include #include ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { int opt = getopt(0, 0, 0); } EOF if eval $cc_compile; then ! DEFS="$DEFS -DUNISTD_H_DECLARES_GETOPT=1" fi rm -f conftest* --- 698,715 ---- #include #include ! extern "C" { void getopt(int); } ! int main() { return 0; } void t() { } EOF if eval $cc_compile; then ! : ! else ! ! { ! test -n "$verbose" && \ ! echo " defining UNISTD_H_DECLARES_GETOPT" ! echo "#define" UNISTD_H_DECLARES_GETOPT 1 >> confdefs.h ! DEFS="$DEFS -DUNISTD_H_DECLARES_GETOPT=1" ! } ! fi rm -f conftest* *************** *** 592,600 **** cat <conftest.cc #include ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { putenv((char *)0); } EOF if eval $cc_compile; then ! DEFS="$DEFS -DSTDLIB_H_DECLARES_PUTENV=1" fi rm -f conftest* --- 718,773 ---- cat <conftest.cc #include ! extern "C" { void putenv(int); } ! int main() { return 0; } void t() { } ! EOF ! if eval $cc_compile; then ! : ! else ! ! { ! test -n "$verbose" && \ ! echo " defining STDLIB_H_DECLARES_PUTENV" ! echo "#define" STDLIB_H_DECLARES_PUTENV 1 >> confdefs.h ! DEFS="$DEFS -DSTDLIB_H_DECLARES_PUTENV=1" ! } ! ! fi ! rm -f conftest* ! echo checking for declaration of popen ! cat <conftest.cc ! #include ! extern "C" { void popen(int); } ! int main() { return 0; } void t() { } ! EOF ! if eval $cc_compile; then ! : ! else ! ! { ! test -n "$verbose" && \ ! echo " defining STDIO_H_DECLARES_POPEN" ! echo "#define" STDIO_H_DECLARES_POPEN 1 >> confdefs.h ! DEFS="$DEFS -DSTDIO_H_DECLARES_POPEN=1" ! } ! ! fi ! rm -f conftest* ! echo checking for declaration of pclose ! cat <conftest.cc ! #include ! extern "C" { void pclose(int); } ! int main() { return 0; } void t() { } EOF if eval $cc_compile; then ! : ! else ! ! { ! test -n "$verbose" && \ ! echo " defining STDIO_H_DECLARES_PCLOSE" ! echo "#define" STDIO_H_DECLARES_PCLOSE 1 >> confdefs.h ! DEFS="$DEFS -DSTDIO_H_DECLARES_PCLOSE=1" ! } ! fi rm -f conftest* *************** *** 602,616 **** cat <conftest.cc #include ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { time_t t = time(0); struct tm *p = localtime(&t); } EOF if eval $cc_compile; then : else ! DEFS="$DEFS -DLONG_FOR_TIME_T=1" fi rm -f conftest* echo checking for return type of signal handlers cat > conftest.c < #include --- 775,796 ---- cat <conftest.cc #include ! int main() { return 0; } void t() { time_t t = time(0); struct tm *p = localtime(&t); } EOF if eval $cc_compile; then : else ! ! { ! test -n "$verbose" && \ ! echo " defining LONG_FOR_TIME_T" ! echo "#define" LONG_FOR_TIME_T 1 >> confdefs.h ! DEFS="$DEFS -DLONG_FOR_TIME_T=1" ! } ! fi rm -f conftest* echo checking for return type of signal handlers cat > conftest.c < #include *************** *** 619,629 **** #endif extern void (*signal ()) (); ! main() { exit(0); } ! t() { int i; } EOF if eval $compile; then ! DEFS="$DEFS -DRETSIGTYPE=void" else ! DEFS="$DEFS -DRETSIGTYPE=int" fi rm -f conftest* --- 799,826 ---- #endif extern void (*signal ()) (); ! int main() { exit(0); } ! int t() { int i; } EOF if eval $compile; then ! rm -rf conftest* ! ! { ! test -n "$verbose" && \ ! echo " defining" RETSIGTYPE to be void ! echo "#define" RETSIGTYPE void >> confdefs.h ! DEFS="$DEFS -DRETSIGTYPE=void" ! } ! ! else ! rm -rf conftest* ! ! { ! test -n "$verbose" && \ ! echo " defining" RETSIGTYPE to be int ! echo "#define" RETSIGTYPE int >> confdefs.h ! DEFS="$DEFS -DRETSIGTYPE=int" ! } ! fi rm -f conftest* *************** *** 632,641 **** echo checking for struct exception cat > conftest.c < ! main() { exit(0); } ! t() { struct exception e; } EOF if eval $compile; then ! DEFS="$DEFS -DHAVE_STRUCT_EXCEPTION=1" fi rm -f conftest* --- 829,848 ---- echo checking for struct exception cat > conftest.c < ! int main() { exit(0); } ! int t() { struct exception e; } EOF if eval $compile; then ! rm -rf conftest* ! ! { ! test -n "$verbose" && \ ! echo " defining HAVE_STRUCT_EXCEPTION" ! echo "#define" HAVE_STRUCT_EXCEPTION 1 >> confdefs.h ! DEFS="$DEFS -DHAVE_STRUCT_EXCEPTION=1" ! } ! ! fi rm -f conftest* *************** *** 643,663 **** echo checking for mmap cat > conftest.c < #include ! main() { exit(0); } ! t() { char *p = mmap(0, 0, PROT_READ, MAP_PRIVATE, 0, 0); munmap(p, 0); } EOF if eval $compile; then ! DEFS="$DEFS -DHAVE_MMAP=1" fi rm -f conftest* echo checking for pid_t in sys/types.h ! echo '#include ' > conftest.c ! eval "$CPP $DEFS conftest.c > conftest.out 2>&1" if egrep "pid_t" conftest.out >/dev/null 2>&1; then : ! else ! DEFS="$DEFS -Dpid_t=int" fi rm -f conftest* --- 850,889 ---- echo checking for mmap cat > conftest.c < #include ! int main() { exit(0); } ! int t() { char *p = mmap(0, 0, PROT_READ, MAP_PRIVATE, 0, 0); munmap(p, 0); } EOF if eval $compile; then ! rm -rf conftest* ! ! { ! test -n "$verbose" && \ ! echo " defining HAVE_MMAP" ! echo "#define" HAVE_MMAP 1 >> confdefs.h ! DEFS="$DEFS -DHAVE_MMAP=1" ! } ! ! fi rm -f conftest* echo checking for pid_t in sys/types.h ! echo '#include "confdefs.h" ! #include ' > conftest.c ! eval "$CPP conftest.c > conftest.out 2>&1" if egrep "pid_t" conftest.out >/dev/null 2>&1; then : ! else ! rm -rf conftest* ! ! { ! test -n "$verbose" && \ ! echo " defining" pid_t to be int ! echo "#define" pid_t int >> confdefs.h ! DEFS="$DEFS -Dpid_t=int" ! } ! fi rm -f conftest* *************** *** 665,682 **** echo checking for vfork.h cat > conftest.c < EOF ! err=`eval "$CPP $DEFS conftest.c 2>&1 >/dev/null"` if test -z "$err"; then ! DEFS="$DEFS -DHAVE_VFORK_H=1" fi rm -f conftest* echo checking for working vfork cat > conftest.c < #include #include #ifdef HAVE_UNISTD_H #include --- 891,921 ---- echo checking for vfork.h cat > conftest.c < EOF ! err=`eval "($CPP conftest.c >/dev/null) 2>&1"` if test -z "$err"; then ! rm -rf conftest* ! ! { ! test -n "$verbose" && \ ! echo " defining HAVE_VFORK_H" ! echo "#define" HAVE_VFORK_H 1 >> confdefs.h ! DEFS="$DEFS -DHAVE_VFORK_H=1" ! } ! ! fi rm -f conftest* echo checking for working vfork + cat > conftest.c < #include #include + #include #ifdef HAVE_UNISTD_H #include *************** *** 685,692 **** #include #endif main() { ! pid_t parent = getpid(); ! pid_t child = vfork(); if (child == 0) { /* On sparc systems, changes by the child to local and incoming --- 924,937 ---- #include #endif + static int signalled; + static RETSIGTYPE catch (s) int s; { signalled = 1; } main() { ! pid_t parent = getpid (); ! pid_t child; + signal (SIGINT, catch); + + child = vfork (); + if (child == 0) { /* On sparc systems, changes by the child to local and incoming *************** *** 712,715 **** --- 957,966 ---- _exit(1); + /* On some systems (e.g. SunOS 5.2), if the parent is catching + a signal, the child ignores the signal before execing, + and the parent later receives that signal, the parent dumps core. + Test for this by ignoring SIGINT in the child. */ + signal (SIGINT, SIG_IGN); + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. *************** *** 734,737 **** --- 985,992 ---- || parent != getpid() + /* Did the signal handling bug occur? */ + || kill(parent, SIGINT) != 0 + || signalled != 1 + /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 *************** *** 744,750 **** : else ! DEFS="$DEFS -Dvfork=fork" fi ! rm -f conftest* saved_libs="$LIBS" --- 999,1012 ---- : else ! ! { ! test -n "$verbose" && \ ! echo " defining" vfork to be fork ! echo "#define" vfork fork >> confdefs.h ! DEFS="$DEFS -Dvfork=fork" ! } ! fi ! rm -fr conftest* saved_libs="$LIBS" *************** *** 754,767 **** echo checking for ${func} cat > conftest.c < conftest.c < ! int main() { exit(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_${func}) || defined (__stub___${func}) ! choke me ! #else /* Override any gcc2 internal prototype to avoid an error. */ ! extern char ${func}(); ${func}(); ! #endif ! } EOF if eval $compile; then : else + rm -rf conftest* LIBOBJS="$LIBOBJS ${func}.o" + test -n "$verbose" && echo " using ${func}.o instead" fi rm -f conftest* *************** *** 775,782 **** echo checking for ${func} cat > conftest.c < ! main() { exit(0); } ! t() { ! #ifdef __stub_${func} choke me #else --- 1048,1059 ---- echo checking for ${func} cat > conftest.c < ! int main() { exit(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_${func}) || defined (__stub___${func}) choke me #else *************** *** 787,804 **** EOF if eval $compile; then ! DEFS="$DEFS -D${trfunc}=1" fi rm -f conftest* - #endif done echo checking for sys_siglist cat > conftest.c <> confdefs.h ! DEFS="$DEFS -D${trfunc}=1" ! } ! ! fi rm -f conftest* done echo checking for sys_siglist cat > conftest.c <> confdefs.h ! DEFS="$DEFS -DHAVE_SYS_SIGLIST=1" ! } ! ! fi rm -f conftest* *************** *** 818,822 **** delete p; testit = 0; ! exit(1); } --- 1112,1116 ---- delete p; testit = 0; ! return 1; } *************** *** 847,851 **** eval $cc_compile if test -s conftest && (./conftest) 2>/dev/null; then ! DEFS="$DEFS -DCOOKIE_BUG=1" fi rm -f conftest* --- 1141,1152 ---- eval $cc_compile if test -s conftest && (./conftest) 2>/dev/null; then ! ! { ! test -n "$verbose" && \ ! echo " defining COOKIE_BUG" ! echo "#define" COOKIE_BUG 1 >> confdefs.h ! DEFS="$DEFS -DCOOKIE_BUG=1" ! } ! fi rm -f conftest* *************** *** 865,869 **** { int z = 0; ! exit(INT_MIN < z); } --- 1166,1170 ---- { int z = 0; ! return INT_MIN < z; } *************** *** 872,876 **** eval $cc_compile if test -s conftest && (./conftest) 2>/dev/null; then ! DEFS="$DEFS -DCFRONT_ANSI_BUG=1" fi rm -f conftest* --- 1173,1184 ---- eval $cc_compile if test -s conftest && (./conftest) 2>/dev/null; then ! ! { ! test -n "$verbose" && \ ! echo " defining CFRONT_ANSI_BUG" ! echo "#define" CFRONT_ANSI_BUG 1 >> confdefs.h ! DEFS="$DEFS -DCFRONT_ANSI_BUG=1" ! } ! fi rm -f conftest* *************** *** 878,888 **** cat <conftest.cc ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { char *p = new char[5]; delete [] p; } EOF if eval $cc_compile; then : else ! DEFS="$DEFS -DARRAY_DELETE_NEEDS_SIZE=1" fi rm -f conftest* --- 1186,1202 ---- cat <conftest.cc ! int main() { return 0; } void t() { char *p = new char[5]; delete [] p; } EOF if eval $cc_compile; then : else ! ! { ! test -n "$verbose" && \ ! echo " defining ARRAY_DELETE_NEEDS_SIZE" ! echo "#define" ARRAY_DELETE_NEEDS_SIZE 1 >> confdefs.h ! DEFS="$DEFS -DARRAY_DELETE_NEEDS_SIZE=1" ! } ! fi rm -f conftest* *************** *** 890,902 **** cat <conftest.cc #define name2(a,b) a/**/b ! extern "C" { void exit(int); } ! int main() { exit(0); } void t() { int name2(foo,bar); } EOF if eval $cc_compile; then ! DEFS="$DEFS -DTRADITIONAL_CPP=1" fi rm -f conftest* echo checking for w_coredump cat > conftest.c < --- 1204,1223 ---- cat <conftest.cc #define name2(a,b) a/**/b ! int main() { return 0; } void t() { int name2(foo,bar); } EOF if eval $cc_compile; then ! ! { ! test -n "$verbose" && \ ! echo " defining TRADITIONAL_CPP" ! echo "#define" TRADITIONAL_CPP 1 >> confdefs.h ! DEFS="$DEFS -DTRADITIONAL_CPP=1" ! } ! fi rm -f conftest* echo checking for w_coredump cat > conftest.c < *************** *** 916,922 **** eval $compile if test -s conftest && (./conftest; exit) 2>/dev/null; then ! DEFS="$DEFS -DWCOREFLAG=0200" fi ! rm -f conftest* test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7 echo using default value of ${BROKEN_SPOOLER_FLAGS} for grops -b option --- 1237,1251 ---- eval $compile if test -s conftest && (./conftest; exit) 2>/dev/null; then ! ! { ! test -n "$verbose" && \ ! echo " defining" WCOREFLAG to be 0200 ! echo "#define" WCOREFLAG 0200 >> confdefs.h ! DEFS="$DEFS -DWCOREFLAG=0200" ! } ! ! fi ! rm -fr conftest* test -n "${BROKEN_SPOOLER_FLAGS}" || BROKEN_SPOOLER_FLAGS=7 echo using default value of ${BROKEN_SPOOLER_FLAGS} for grops -b option *************** *** 957,960 **** --- 1286,1290 ---- echo guessing $PAGE size paper + # Set default prefixes. if test -n "$prefix"; then test -z "$exec_prefix" && exec_prefix='${prefix}' *************** *** 963,969 **** if test -n "$exec_prefix"; then prsub="$prsub ! s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%\ ! exec_prefix\\1=\\2$exec_prefix%" fi trap 'rm -f config.status; exit 1' 1 3 15 --- 1293,1306 ---- if test -n "$exec_prefix"; then prsub="$prsub ! s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%exec_prefix\\1=\\2$exec_prefix%" fi + # Quote sed substitution magic chars in DEFS. + cat >conftest.def </dev/null`: # ! # $0 $* for arg --- 1312,1318 ---- # 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 $configure_args for arg *************** *** 983,987 **** case "\$arg" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ! exec /bin/sh $0 $* ;; *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;; esac --- 1320,1325 ---- case "\$arg" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ! echo running \${CONFIG_SHELL-/bin/sh} $0 $configure_args ! exec \${CONFIG_SHELL-/bin/sh} $0 $configure_args ;; *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;; esac *************** *** 1016,1024 **** exec_prefix='$exec_prefix' prsub='$prsub' EOF cat >> config.status <<\EOF top_srcdir=$srcdir ! for file in .. Makefile; do if [ "x$file" != "x.." ]; then srcdir=$top_srcdir # Remove last slash and all that follows it. Not all systems have dirname. --- 1354,1365 ---- exec_prefix='$exec_prefix' prsub='$prsub' + extrasub='$extrasub' EOF cat >> config.status <<\EOF top_srcdir=$srcdir ! ! CONFIG_FILES=${CONFIG_FILES-"Makefile"} ! for file in .. ${CONFIG_FILES}; do if test "x$file" != x..; then srcdir=$top_srcdir # Remove last slash and all that follows it. Not all systems have dirname. *************** *** 1033,1036 **** --- 1374,1378 ---- sed -e " $prsub + $extrasub s%@CC@%$CC%g s%@CCLIBS@%$CCLIBS%g *************** *** 1060,1065 **** fi; done EOF chmod +x config.status ! test -n "$no_create" || ./config.status --- 1402,1409 ---- fi; done + + exit 0 EOF chmod +x config.status ! ${CONFIG_SHELL-/bin/sh} config.status diff -rc2N groff-1.08/configure.in groff-1.09/configure.in *** groff-1.08/configure.in Mon Apr 19 09:40:26 1993 --- groff-1.09/configure.in Sat Feb 12 14:42:54 1994 *************** *** 16,25 **** AC_SUBST(SH_SCRIPT_SED_CMD) dnl checks for headers ! AC_UNISTD_H ! AC_HAVE_HEADERS(dirent.h limits.h sys/dir.h stdlib.h) GROFF_LIMITS_H ! GROFF_UNISTD_H GROFF_GETOPT GROFF_PUTENV dnl checks for typedefs GROFF_TIME_T --- 16,28 ---- AC_SUBST(SH_SCRIPT_SED_CMD) dnl checks for headers ! AC_HAVE_HEADERS(unistd.h dirent.h limits.h sys/dir.h stdlib.h) ! GROFF_ISC_SYSV3 ! GROFF_POSIX GROFF_LIMITS_H ! GROFF_OSFCN_H GROFF_GETOPT GROFF_PUTENV + GROFF_POPEN + GROFF_PCLOSE dnl checks for typedefs GROFF_TIME_T diff -rc2N groff-1.08/devX100/S groff-1.09/devX100/S *** groff-1.08/devX100/S Wed Oct 28 13:20:11 1992 --- groff-1.09/devX100/S Sat Feb 12 12:34:45 1994 *************** *** 75,79 **** pp 10,10 0 0136 _ 7,0,3 0 0137 ! rn 7,12 0 0140 *a 9,7 0 0141 *b 8,11,3 0 0142 --- 75,79 ---- pp 10,10 0 0136 _ 7,0,3 0 0137 ! radicalex 7,12 0 0140 *a 9,7 0 0141 *b 8,11,3 0 0142 diff -rc2N groff-1.08/devX100-12/S groff-1.09/devX100-12/S *** groff-1.08/devX100-12/S Wed Oct 28 13:20:13 1992 --- groff-1.09/devX100-12/S Sat Feb 12 12:34:48 1994 *************** *** 75,79 **** pp 11,11 0 0136 _ 8,0,4 0 0137 ! rn 8,13 0 0140 *a 11,9 0 0141 *b 9,13,4 0 0142 --- 75,79 ---- pp 11,11 0 0136 _ 8,0,4 0 0137 ! radicalex 8,13 0 0140 *a 11,9 0 0141 *b 9,13,4 0 0142 diff -rc2N groff-1.08/devX75/S groff-1.09/devX75/S *** groff-1.08/devX75/S Wed Oct 28 13:20:06 1992 --- groff-1.09/devX75/S Sat Feb 12 12:34:40 1994 *************** *** 75,79 **** pp 7,7 0 0136 _ 5,0,3 0 0137 ! rn 5,10 0 0140 *a 7,5 0 0141 *b 5,8,2 0 0142 --- 75,79 ---- pp 7,7 0 0136 _ 5,0,3 0 0137 ! radicalex 5,10 0 0140 *a 7,5 0 0141 *b 5,8,2 0 0142 diff -rc2N groff-1.08/devX75-12/S groff-1.09/devX75-12/S *** groff-1.08/devX75-12/S Wed Oct 28 13:20:09 1992 --- groff-1.09/devX75-12/S Sat Feb 12 12:34:43 1994 *************** *** 75,79 **** pp 8,9 0 0136 _ 6,0,3 0 0137 ! rn 6,12 0 0140 *a 8,6 0 0141 *b 7,10,3 0 0142 --- 75,79 ---- pp 8,9 0 0136 _ 6,0,3 0 0137 ! radicalex 6,12 0 0140 *a 8,6 0 0141 *b 7,10,3 0 0142 diff -rc2N groff-1.08/devdvi/generate/cork.map groff-1.09/devdvi/generate/cork.map *** groff-1.08/devdvi/generate/cork.map --- groff-1.09/devdvi/generate/cork.map Mon Oct 4 13:49:06 1993 *************** *** 0 **** --- 1,206 ---- + # Map for DC/EC fonts with Cork encoding. + # Contributed by Andreas Schwab + 0 ga + 1 aa char180 + 2 a^ + 3 a~ + 4 ad char168 + 5 a" + 6 ao + 7 ah + 8 ab + 9 a- char175 + 10 a. + 11 ac char184 + 12 ho + 13 bq + 14 fo + 15 fc + 16 lq + 17 rq + 18 Bq + 19 Fo char171 + 20 Fc char187 + 21 en + 22 em + 25 .i + 26 .j + 27 ff + 28 fi + 29 fl + 30 Fi + 31 Fl + 33 ! + 34 " + 35 # sh + 36 $ Do + 37 % + 38 & + 39 ' aq + 40 ( + 41 ) + 42 * + 43 + pl + 44 , + 45 - + 46 . + 47 / sl + 48 0 + 49 1 + 50 2 + 51 3 + 52 4 + 53 5 + 54 6 + 55 7 + 56 8 + 57 9 + 58 : + 59 ; + 60 < + 61 = eq + 62 > + 63 ? + 64 @ at + 65 A + 66 B + 67 C + 68 D + 69 E + 70 F + 71 G + 72 H + 73 I + 74 J + 75 K + 76 L + 77 M + 78 N + 79 O + 80 P + 81 Q + 82 R + 83 S + 84 T + 85 U + 86 V + 87 W + 88 X + 89 Y + 90 Z + 91 [ lB + 92 \ rs + 93 ] rB + 94 ^ ha + 95 _ + 96 ` oq + 97 a + 98 b + 99 c + 100 d + 101 e + 102 f + 103 g + 104 h + 105 i + 106 j + 107 k + 108 l + 109 m + 110 n + 111 o + 112 p + 113 q + 114 r + 115 s + 116 t + 117 u + 118 v + 119 w + 120 x + 121 y + 122 z + 123 { lC + 124 | or bv ba + 125 } rC + 126 ~ + 127 hy char173 + 130 'C + 138 /L + 146 vS + 152 :Y + 154 vZ + 156 IJ + 159 sc char167 + 162 'c + 170 (l + 178 vs + 184 :y char255 + 186 vz + 188 ij + 189 r! char161 + 190 r? char191 + 191 Po char163 + 192 `A char192 + 193 'A char193 + 194 ^A char194 + 195 ~A char195 + 196 :A char196 + 197 oA char197 + 198 AE char198 + 199 ,C char199 + 200 `E char200 + 201 'E char201 + 202 ^E char202 + 203 :E char203 + 204 `I char204 + 205 'I char205 + 206 ^I char206 + 207 :I char207 + 208 -D char208 + 209 ~N char209 + 210 `O char210 + 211 'O char211 + 212 ^O char212 + 213 ~O char213 + 214 :O char214 + 215 OE + 216 /O char216 + 217 `U char217 + 218 'U char218 + 219 ^U char219 + 220 :U char220 + 221 char221 + 222 TP char222 + 224 `a char224 + 225 'a char225 + 226 ^a char226 + 227 ~a char227 + 228 :a char228 + 229 oa char229 + 230 ae char230 + 231 ,c char231 + 232 `e char232 + 233 'e char233 + 234 ^e char234 + 235 :e char235 + 236 `i char236 + 237 'i char237 + 238 ^i char238 + 239 :i char239 + 240 Sd char240 + 241 ~n char241 + 242 `o char242 + 243 'o char243 + 244 ^o char244 + 245 ~o char245 + 246 :o char246 + 247 oe + 248 /o char248 + 249 `u char249 + 250 'u char250 + 251 ^u char251 + 252 :u char252 + 253 char253 + 254 Tp char254 + 255 ss char223 diff -rc2N groff-1.08/devps/S groff-1.09/devps/S *** groff-1.08/devps/S Sat Aug 15 12:34:58 1992 --- groff-1.09/devps/S Sat Feb 12 10:33:37 1994 *************** *** 76,80 **** pp 658,674 3 0136 perpendicular _ 500,0,252 3 0137 underscore ! rn 500,917 3 0140 radicalex *a 631,500,18 3 0141 alpha *b 549,741,223 3 0142 beta --- 76,80 ---- pp 658,674 3 0136 perpendicular _ 500,0,252 3 0137 underscore ! radicalex 500,917 3 0140 radicalex *a 631,500,18 3 0141 alpha *b 549,741,223 3 0142 beta diff -rc2N groff-1.08/devps/generate/textmap groff-1.09/devps/generate/textmap *** groff-1.08/devps/generate/textmap Sat Aug 15 13:36:23 1992 --- groff-1.09/devps/generate/textmap Sat Feb 12 10:34:33 1994 *************** *** 431,435 **** bracketrightex bracketrightex radical sr ! radicalex rn approxequal ~= bracketlefttp lc --- 431,435 ---- bracketrightex bracketrightex radical sr ! radicalex radicalex approxequal ~= bracketlefttp lc diff -rc2N groff-1.08/eqn/TODO groff-1.09/eqn/TODO *** groff-1.08/eqn/TODO Mon Jun 8 10:16:04 1992 --- groff-1.09/eqn/TODO Mon Feb 14 08:43:04 1994 *************** *** 14,18 **** Possibly generate .lf commands during compute_metrics phase. ! Consider whether there shuld be extra space at the side of piles. Provide scriptstyle displaystyle etc. --- 14,18 ---- Possibly generate .lf commands during compute_metrics phase. ! Consider whether there should be extra space at the side of piles. Provide scriptstyle displaystyle etc. diff -rc2N groff-1.08/eqn/box.cc groff-1.09/eqn/box.cc *** groff-1.08/eqn/box.cc Sun Apr 4 14:28:29 1993 --- groff-1.09/eqn/box.cc Sun Feb 13 10:24:39 1994 *************** *** 85,127 **** int *ptr; } param_table[] = { ! "fat_offset", &fat_offset, ! "over_hang", &over_hang, ! "accent_width", &accent_width, ! "delimiter_factor", &delimiter_factor, ! "delimiter_shortfall", &delimiter_shortfall, ! "null_delimiter_space", &null_delimiter_space, ! "script_space", &script_space, ! "thin_space", &thin_space, ! "medium_space", &medium_space, ! "thick_space", &thick_space, ! "num1", &num1, ! "num2", &num2, ! "denom1", &denom1, ! "denom2", &denom2, ! "axis_height", &axis_height, ! "sup1", ¹, ! "sup2", ², ! "sup3", ³, ! "default_rule_thickness", &default_rule_thickness, ! "sub1", &sub1, ! "sub2", &sub2, ! "sup_drop", &sup_drop, ! "sub_drop", &sub_drop, ! "x_height", &x_height, ! "big_op_spacing1", &big_op_spacing1, ! "big_op_spacing2", &big_op_spacing2, ! "big_op_spacing3", &big_op_spacing3, ! "big_op_spacing4", &big_op_spacing4, ! "big_op_spacing5", &big_op_spacing5, ! "minimum_size", &minimum_size, ! "baseline_sep", &baseline_sep, ! "shift_down", &shift_down, ! "column_sep", &column_sep, ! "matrix_side_sep", &matrix_side_sep, ! "draw_lines", &draw_flag, ! "body_height", &body_height, ! "body_depth", &body_depth, ! "nroff", &nroff, ! 0, 0 }; --- 85,127 ---- int *ptr; } param_table[] = { ! { "fat_offset", &fat_offset }, ! { "over_hang", &over_hang }, ! { "accent_width", &accent_width }, ! { "delimiter_factor", &delimiter_factor }, ! { "delimiter_shortfall", &delimiter_shortfall }, ! { "null_delimiter_space", &null_delimiter_space }, ! { "script_space", &script_space }, ! { "thin_space", &thin_space }, ! { "medium_space", &medium_space }, ! { "thick_space", &thick_space }, ! { "num1", &num1 }, ! { "num2", &num2 }, ! { "denom1", &denom1 }, ! { "denom2", &denom2 }, ! { "axis_height", &axis_height }, ! { "sup1", ¹ }, ! { "sup2", ² }, ! { "sup3", ³ }, ! { "default_rule_thickness", &default_rule_thickness }, ! { "sub1", &sub1 }, ! { "sub2", &sub2 }, ! { "sup_drop", &sup_drop }, ! { "sub_drop", &sub_drop }, ! { "x_height", &x_height }, ! { "big_op_spacing1", &big_op_spacing1 }, ! { "big_op_spacing2", &big_op_spacing2 }, ! { "big_op_spacing3", &big_op_spacing3 }, ! { "big_op_spacing4", &big_op_spacing4 }, ! { "big_op_spacing5", &big_op_spacing5 }, ! { "minimum_size", &minimum_size }, ! { "baseline_sep", &baseline_sep }, ! { "shift_down", &shift_down }, ! { "column_sep", &column_sep }, ! { "matrix_side_sep", &matrix_side_sep }, ! { "draw_lines", &draw_flag }, ! { "body_height", &body_height }, ! { "body_depth", &body_depth }, ! { "nroff", &nroff }, ! { 0, 0 } }; diff -rc2N groff-1.08/eqn/delim.cc groff-1.09/eqn/delim.cc *** groff-1.08/eqn/delim.cc Sat Aug 15 12:49:10 1992 --- groff-1.09/eqn/delim.cc Thu Oct 14 12:09:17 1993 *************** *** 345,351 **** printf(".rn " DELIM_STRING " " LEFT_DELIM_STRING_FORMAT "\n", uid); } - if (r) - printf(".nr " MARK_REG " +\\n[" DELIM_WIDTH_REG "]\n"); if (right) { define_extensible_string(right, uid, RIGHT_DELIM); --- 345,351 ---- printf(".rn " DELIM_STRING " " LEFT_DELIM_STRING_FORMAT "\n", uid); + if (r) + printf(".nr " MARK_REG " +\\n[" DELIM_WIDTH_REG "]\n"); } if (right) { define_extensible_string(right, uid, RIGHT_DELIM); diff -rc2N groff-1.08/eqn/eqn.man groff-1.09/eqn/eqn.man *** groff-1.08/eqn/eqn.man Tue Oct 6 09:04:49 1992 --- groff-1.09/eqn/eqn.man Mon Feb 14 08:43:02 1994 *************** *** 187,191 **** .TP punctuation ! a punctutation character such as ,; .TP inner --- 187,191 ---- .TP punctuation ! a punctuation character such as ,; .TP inner diff -rc2N groff-1.08/eqn/lex.cc groff-1.09/eqn/lex.cc *** groff-1.08/eqn/lex.cc Thu Nov 26 16:07:21 1992 --- groff-1.09/eqn/lex.cc Mon Feb 14 08:43:01 1994 *************** *** 55,115 **** int token; } token_table[] = { ! "over", OVER, ! "smallover", SMALLOVER, ! "sqrt", SQRT, ! "sub", SUB, ! "sup", SUP, ! "lpile", LPILE, ! "rpile", RPILE, ! "cpile", CPILE, ! "pile", PILE, ! "left", LEFT, ! "right", RIGHT, ! "to", TO, ! "from", FROM, ! "size", SIZE, ! "font", FONT, ! "roman", ROMAN, ! "bold", BOLD, ! "italic", ITALIC, ! "fat", FAT, ! "bar", BAR, ! "under", UNDER, ! "accent", ACCENT, ! "uaccent", UACCENT, ! "above", ABOVE, ! "fwd", FWD, ! "back", BACK, ! "down", DOWN, ! "up", UP, ! "matrix", MATRIX, ! "col", COL, ! "lcol", LCOL, ! "rcol", RCOL, ! "ccol", CCOL, ! "mark", MARK, ! "lineup", LINEUP, ! "space", SPACE, ! "gfont", GFONT, ! "gsize", GSIZE, ! "define", DEFINE, ! "sdefine", SDEFINE, ! "ndefine", NDEFINE, ! "tdefine", TDEFINE, ! "undef", UNDEF, ! "ifdef", IFDEF, ! "include", INCLUDE, ! "copy", INCLUDE, ! "delim", DELIM, ! "chartype", CHARTYPE, ! "type", TYPE, ! "vcenter", VCENTER, ! "set", SET, ! "opprime", PRIME, ! "grfont", GRFONT, ! "gbfont", GBFONT, ! "split", SPLIT, ! "nosplit", NOSPLIT, ! "special", SPECIAL, }; --- 55,115 ---- int token; } token_table[] = { ! { "over", OVER }, ! { "smallover", SMALLOVER }, ! { "sqrt", SQRT }, ! { "sub", SUB }, ! { "sup", SUP }, ! { "lpile", LPILE }, ! { "rpile", RPILE }, ! { "cpile", CPILE }, ! { "pile", PILE }, ! { "left", LEFT }, ! { "right", RIGHT }, ! { "to", TO }, ! { "from", FROM }, ! { "size", SIZE }, ! { "font", FONT }, ! { "roman", ROMAN }, ! { "bold", BOLD }, ! { "italic", ITALIC }, ! { "fat", FAT }, ! { "bar", BAR }, ! { "under", UNDER }, ! { "accent", ACCENT }, ! { "uaccent", UACCENT }, ! { "above", ABOVE }, ! { "fwd", FWD }, ! { "back", BACK }, ! { "down", DOWN }, ! { "up", UP }, ! { "matrix", MATRIX }, ! { "col", COL }, ! { "lcol", LCOL }, ! { "rcol", RCOL }, ! { "ccol", CCOL }, ! { "mark", MARK }, ! { "lineup", LINEUP }, ! { "space", SPACE }, ! { "gfont", GFONT }, ! { "gsize", GSIZE }, ! { "define", DEFINE }, ! { "sdefine", SDEFINE }, ! { "ndefine", NDEFINE }, ! { "tdefine", TDEFINE }, ! { "undef", UNDEF }, ! { "ifdef", IFDEF }, ! { "include", INCLUDE }, ! { "copy", INCLUDE }, ! { "delim", DELIM }, ! { "chartype", CHARTYPE }, ! { "type", TYPE }, ! { "vcenter", VCENTER }, ! { "set", SET }, ! { "opprime", PRIME }, ! { "grfont", GRFONT }, ! { "gbfont", GBFONT }, ! { "split", SPLIT }, ! { "nosplit", NOSPLIT }, ! { "special", SPECIAL }, }; *************** *** 118,251 **** const char *def; } def_table[] = { ! "ALPHA", "\\(*A", ! "BETA", "\\(*B", ! "CHI", "\\(*X", ! "DELTA", "\\(*D", ! "EPSILON", "\\(*E", ! "ETA", "\\(*Y", ! "GAMMA", "\\(*G", ! "IOTA", "\\(*I", ! "KAPPA", "\\(*K", ! "LAMBDA", "\\(*L", ! "MU", "\\(*M", ! "NU", "\\(*N", ! "OMEGA", "\\(*W", ! "OMICRON", "\\(*O", ! "PHI", "\\(*F", ! "PI", "\\(*P", ! "PSI", "\\(*Q", ! "RHO", "\\(*R", ! "SIGMA", "\\(*S", ! "TAU", "\\(*T", ! "THETA", "\\(*H", ! "UPSILON", "\\(*U", ! "XI", "\\(*C", ! "ZETA", "\\(*Z", ! "Alpha", "\\(*A", ! "Beta", "\\(*B", ! "Chi", "\\(*X", ! "Delta", "\\(*D", ! "Epsilon", "\\(*E", ! "Eta", "\\(*Y", ! "Gamma", "\\(*G", ! "Iota", "\\(*I", ! "Kappa", "\\(*K", ! "Lambda", "\\(*L", ! "Mu", "\\(*M", ! "Nu", "\\(*N", ! "Omega", "\\(*W", ! "Omicron", "\\(*O", ! "Phi", "\\(*F", ! "Pi", "\\(*P", ! "Psi", "\\(*Q", ! "Rho", "\\(*R", ! "Sigma", "\\(*S", ! "Tau", "\\(*T", ! "Theta", "\\(*H", ! "Upsilon", "\\(*U", ! "Xi", "\\(*C", ! "Zeta", "\\(*Z", ! "alpha", "\\(*a", ! "beta", "\\(*b", ! "chi", "\\(*x", ! "delta", "\\(*d", ! "epsilon", "\\(*e", ! "eta", "\\(*y", ! "gamma", "\\(*g", ! "iota", "\\(*i", ! "kappa", "\\(*k", ! "lambda", "\\(*l", ! "mu", "\\(*m", ! "nu", "\\(*n", ! "omega", "\\(*w", ! "omicron", "\\(*o", ! "phi", "\\(*f", ! "pi", "\\(*p", ! "psi", "\\(*q", ! "rho", "\\(*r", ! "sigma", "\\(*s", ! "tau", "\\(*t", ! "theta", "\\(*h", ! "upsilon", "\\(*u", ! "xi", "\\(*c", ! "zeta", "\\(*z", ! "max", "{type \"operator\" roman \"max\"}", ! "min", "{type \"operator\" roman \"min\"}", ! "lim", "{type \"operator\" roman \"lim\"}", ! "sin", "{type \"operator\" roman \"sin\"}", ! "cos", "{type \"operator\" roman \"cos\"}", ! "tan", "{type \"operator\" roman \"tan\"}", ! "sinh", "{type \"operator\" roman \"sinh\"}", ! "cosh", "{type \"operator\" roman \"cosh\"}", ! "tanh", "{type \"operator\" roman \"tanh\"}", ! "arc", "{type \"operator\" roman \"arc\"}", ! "log", "{type \"operator\" roman \"log\"}", ! "ln", "{type \"operator\" roman \"ln\"}", ! "exp", "{type \"operator\" roman \"exp\"}", ! "Re", "{type \"operator\" roman \"Re\"}", ! "Im", "{type \"operator\" roman \"Im\"}", ! "det", "{type \"operator\" roman \"det\"}", ! "and", "{roman \"and\"}", ! "if", "{roman \"if\"}", ! "for", "{roman \"for\"}", ! "sum", "{type \"operator\" vcenter size +5 \\(*S}", ! "prod", "{type \"operator\" vcenter size +5 \\(*P}", ! "int", "{type \"operator\" vcenter size +8 \\(is}", ! "union", "{type \"operator\" vcenter size +5 \\(cu}", ! "inter", "{type \"operator\" vcenter size +5 \\(ca}", ! "times", "type \"binary\" \\(mu", ! "ldots", "type \"inner\" { . . . }", ! "inf", "\\(if", ! "partial", "\\(pd", ! "nothing", "\"\"", ! "half", "{1 smallover 2}", ! "hat_def", "roman \"^\"", ! "hat", "accent { hat_def }", ! "dot_def", "back 15 \"\\v'-52M'.\\v'52M'\"", ! "dot", "accent { dot_def }", ! "dotdot_def", "back 25 \"\\v'-52M'..\\v'52M'\"", ! "dotdot", "accent { dotdot_def }", ! "tilde_def", "\"~\"", ! "tilde", "accent { tilde_def }", ! "utilde_def", "\"\\v'75M'~\\v'-75M'\"", ! "utilde", "uaccent { utilde_def }", ! "vec_def", "up 52 size -5 \\(->", ! "vec", "accent { vec_def }", ! "dyad_def", "up 52 size -5 {\\(<- back 60 \\(->}", ! "dyad", "accent { dyad_def }", ! "==", "type \"relation\" \\(==", ! "!=", "type \"relation\" \\(!=", ! "+-", "type \"binary\" \\(+-", ! "->", "type \"relation\" \\(->", ! "<-", "type \"relation\" \\(<-", ! "<<", "{ < back 20 < }", ! ">>", "{ > back 20 > }", ! "...", "type \"inner\" vcenter { . . . }", ! "prime", "'", ! "approx", "type \"relation\" \"\\(~=\"", ! "grad", "\\(gr", ! "del", "\\(gr", ! "cdot", "type \"binary\" vcenter .", ! "dollar", "$", }; --- 118,251 ---- const char *def; } def_table[] = { ! { "ALPHA", "\\(*A" }, ! { "BETA", "\\(*B" }, ! { "CHI", "\\(*X" }, ! { "DELTA", "\\(*D" }, ! { "EPSILON", "\\(*E" }, ! { "ETA", "\\(*Y" }, ! { "GAMMA", "\\(*G" }, ! { "IOTA", "\\(*I" }, ! { "KAPPA", "\\(*K" }, ! { "LAMBDA", "\\(*L" }, ! { "MU", "\\(*M" }, ! { "NU", "\\(*N" }, ! { "OMEGA", "\\(*W" }, ! { "OMICRON", "\\(*O" }, ! { "PHI", "\\(*F" }, ! { "PI", "\\(*P" }, ! { "PSI", "\\(*Q" }, ! { "RHO", "\\(*R" }, ! { "SIGMA", "\\(*S" }, ! { "TAU", "\\(*T" }, ! { "THETA", "\\(*H" }, ! { "UPSILON", "\\(*U" }, ! { "XI", "\\(*C" }, ! { "ZETA", "\\(*Z" }, ! { "Alpha", "\\(*A" }, ! { "Beta", "\\(*B" }, ! { "Chi", "\\(*X" }, ! { "Delta", "\\(*D" }, ! { "Epsilon", "\\(*E" }, ! { "Eta", "\\(*Y" }, ! { "Gamma", "\\(*G" }, ! { "Iota", "\\(*I" }, ! { "Kappa", "\\(*K" }, ! { "Lambda", "\\(*L" }, ! { "Mu", "\\(*M" }, ! { "Nu", "\\(*N" }, ! { "Omega", "\\(*W" }, ! { "Omicron", "\\(*O" }, ! { "Phi", "\\(*F" }, ! { "Pi", "\\(*P" }, ! { "Psi", "\\(*Q" }, ! { "Rho", "\\(*R" }, ! { "Sigma", "\\(*S" }, ! { "Tau", "\\(*T" }, ! { "Theta", "\\(*H" }, ! { "Upsilon", "\\(*U" }, ! { "Xi", "\\(*C" }, ! { "Zeta", "\\(*Z" }, ! { "alpha", "\\(*a" }, ! { "beta", "\\(*b" }, ! { "chi", "\\(*x" }, ! { "delta", "\\(*d" }, ! { "epsilon", "\\(*e" }, ! { "eta", "\\(*y" }, ! { "gamma", "\\(*g" }, ! { "iota", "\\(*i" }, ! { "kappa", "\\(*k" }, ! { "lambda", "\\(*l" }, ! { "mu", "\\(*m" }, ! { "nu", "\\(*n" }, ! { "omega", "\\(*w" }, ! { "omicron", "\\(*o" }, ! { "phi", "\\(*f" }, ! { "pi", "\\(*p" }, ! { "psi", "\\(*q" }, ! { "rho", "\\(*r" }, ! { "sigma", "\\(*s" }, ! { "tau", "\\(*t" }, ! { "theta", "\\(*h" }, ! { "upsilon", "\\(*u" }, ! { "xi", "\\(*c" }, ! { "zeta", "\\(*z" }, ! { "max", "{type \"operator\" roman \"max\"}" }, ! { "min", "{type \"operator\" roman \"min\"}" }, ! { "lim", "{type \"operator\" roman \"lim\"}" }, ! { "sin", "{type \"operator\" roman \"sin\"}" }, ! { "cos", "{type \"operator\" roman \"cos\"}" }, ! { "tan", "{type \"operator\" roman \"tan\"}" }, ! { "sinh", "{type \"operator\" roman \"sinh\"}" }, ! { "cosh", "{type \"operator\" roman \"cosh\"}" }, ! { "tanh", "{type \"operator\" roman \"tanh\"}" }, ! { "arc", "{type \"operator\" roman \"arc\"}" }, ! { "log", "{type \"operator\" roman \"log\"}" }, ! { "ln", "{type \"operator\" roman \"ln\"}" }, ! { "exp", "{type \"operator\" roman \"exp\"}" }, ! { "Re", "{type \"operator\" roman \"Re\"}" }, ! { "Im", "{type \"operator\" roman \"Im\"}" }, ! { "det", "{type \"operator\" roman \"det\"}" }, ! { "and", "{roman \"and\"}" }, ! { "if", "{roman \"if\"}" }, ! { "for", "{roman \"for\"}" }, ! { "sum", "{type \"operator\" vcenter size +5 \\(*S}" }, ! { "prod", "{type \"operator\" vcenter size +5 \\(*P}" }, ! { "int", "{type \"operator\" vcenter size +8 \\(is}" }, ! { "union", "{type \"operator\" vcenter size +5 \\(cu}" }, ! { "inter", "{type \"operator\" vcenter size +5 \\(ca}" }, ! { "times", "type \"binary\" \\(mu" }, ! { "ldots", "type \"inner\" { . . . }" }, ! { "inf", "\\(if" }, ! { "partial", "\\(pd" }, ! { "nothing", "\"\"" }, ! { "half", "{1 smallover 2}" }, ! { "hat_def", "roman \"^\"" }, ! { "hat", "accent { hat_def }" }, ! { "dot_def", "back 15 \"\\v'-52M'.\\v'52M'\"" }, ! { "dot", "accent { dot_def }" }, ! { "dotdot_def", "back 25 \"\\v'-52M'..\\v'52M'\"" }, ! { "dotdot", "accent { dotdot_def }" }, ! { "tilde_def", "\"~\"" }, ! { "tilde", "accent { tilde_def }" }, ! { "utilde_def", "\"\\v'75M'~\\v'-75M'\"" }, ! { "utilde", "uaccent { utilde_def }" }, ! { "vec_def", "up 52 size -5 \\(->" }, ! { "vec", "accent { vec_def }" }, ! { "dyad_def", "up 52 size -5 {\\(<- back 60 \\(->}" }, ! { "dyad", "accent { dyad_def }" }, ! { "==", "type \"relation\" \\(==" }, ! { "!=", "type \"relation\" \\(!=" }, ! { "+-", "type \"binary\" \\(+-" }, ! { "->", "type \"relation\" \\(->" }, ! { "<-", "type \"relation\" \\(<-" }, ! { "<<", "{ < back 20 < }" }, ! { ">>", "{ > back 20 > }" }, ! { "...", "type \"inner\" vcenter { . . . }" }, ! { "prime", "'" }, ! { "approx", "type \"relation\" \"\\(~=\"" }, ! { "grad", "\\(gr" }, ! { "del", "\\(gr" }, ! { "cdot", "type \"binary\" vcenter ." }, ! { "dollar", "$" }, }; *************** *** 466,470 **** } ! // Character respresenting $1. Must be illegal input character. #define ARG1 14 --- 466,470 ---- } ! // Character representing $1. Must be illegal input character. #define ARG1 14 diff -rc2N groff-1.08/eqn/main.cc groff-1.09/eqn/main.cc *** groff-1.08/eqn/main.cc Thu Feb 11 16:44:00 1993 --- groff-1.09/eqn/main.cc Thu May 27 23:29:46 1993 *************** *** 349,352 **** if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! exit(0); } --- 349,352 ---- if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! return 0; } diff -rc2N groff-1.08/eqn/sqrt.cc groff-1.09/eqn/sqrt.cc *** groff-1.08/eqn/sqrt.cc Mon Aug 3 11:27:44 1992 --- groff-1.09/eqn/sqrt.cc Sat Feb 12 10:56:06 1994 *************** *** 42,49 **** #define SQRT_CHAR "\\(sr" ! #define RADICAL_EXTENSION_CHAR "\\(rn" #define SQRT_CHAIN "\\[sr\\\\n[" INDEX_REG "]]" ! #define BAR_CHAIN "\\[rn\\\\n[" INDEX_REG "]]" int sqrt_box::compute_metrics(int style) --- 42,49 ---- #define SQRT_CHAR "\\(sr" ! #define RADICAL_EXTENSION_CHAR "\\[radicalex]" #define SQRT_CHAIN "\\[sr\\\\n[" INDEX_REG "]]" ! #define BAR_CHAIN "\\[radicalex\\\\n[" INDEX_REG "]]" int sqrt_box::compute_metrics(int style) diff -rc2N groff-1.08/grodvi/dvi.cc groff-1.09/grodvi/dvi.cc *** groff-1.08/grodvi/dvi.cc Sun Feb 21 11:16:14 1993 --- groff-1.09/grodvi/dvi.cc Thu May 27 23:29:41 1993 *************** *** 885,889 **** } delete pr; ! exit(0); } --- 885,889 ---- } delete pr; ! return 0; } diff -rc2N groff-1.08/grodvi/grodvi.man groff-1.09/grodvi/grodvi.man *** groff-1.08/grodvi/grodvi.man Thu Aug 6 13:46:47 1992 --- groff-1.09/grodvi/grodvi.man Mon Feb 14 08:42:59 1994 *************** *** 121,125 **** .TP .B @FONTDIR@/devdvi/DESC ! Device desciption file. .TP .B @FONTDIR@/devdvi/ F --- 121,125 ---- .TP .B @FONTDIR@/devdvi/DESC ! Device description file. .TP .B @FONTDIR@/devdvi/ F diff -rc2N groff-1.08/groff/groff.cc groff-1.09/groff/groff.cc *** groff-1.08/groff/groff.cc Sat Apr 3 23:37:06 1993 --- groff-1.09/groff/groff.cc Tue Aug 10 08:39:26 1993 *************** *** 51,56 **** #endif /* not STDLIB_H_DECLARES_PUTENV */ - const char *strsignal(int); - const int SOELIM_INDEX = 0; const int REFER_INDEX = SOELIM_INDEX + 1; --- 51,54 ---- *************** *** 310,314 **** exit(0); } ! exit(run_commands()); } --- 308,312 ---- exit(0); } ! return run_commands(); } diff -rc2N groff-1.08/groff/pipeline.c groff-1.09/groff/pipeline.c *** groff-1.08/groff/pipeline.c Sat Aug 8 10:25:57 1992 --- groff-1.09/groff/pipeline.c Sun Feb 13 10:24:48 1994 *************** *** 95,101 **** #define error c_error extern void error P((char *, char *, char *, char *)); static void sys_fatal P((char *)); ! static char *strsignal P((int)); static char *itoa P((int)); --- 95,102 ---- #define error c_error extern void error P((char *, char *, char *, char *)); + extern void c_fatal P((char *, char *, char *, char *)); static void sys_fatal P((char *)); ! static char *xstrsignal P((int)); static char *itoa P((int)); *************** *** 192,196 **** error("%1: %2%3", commands[i][0], ! strsignal(sig), WCOREDUMP(status) ? " (core dumped)" : ""); ret |= 2; --- 193,197 ---- error("%1: %2%3", commands[i][0], ! xstrsignal(sig), WCOREDUMP(status) ? " (core dumped)" : ""); ret |= 2; *************** *** 227,231 **** } ! static char *strsignal(n) int n; { --- 228,232 ---- } ! static char *xstrsignal(n) int n; { diff -rc2N groff-1.08/grog/grog.man groff-1.09/grog/grog.man *** groff-1.08/grog/grog.man Thu Aug 6 12:27:01 1992 --- groff-1.09/grog/grog.man Mon Feb 14 08:42:57 1994 *************** *** 40,44 **** .B `grog \-Tdvi paper.ms` .LP ! will guess the approriate command to print .B paper.ms and then run it after adding the --- 40,44 ---- .B `grog \-Tdvi paper.ms` .LP ! will guess the appropriate command to print .B paper.ms and then run it after adding the diff -rc2N groff-1.08/grops/TODO groff-1.09/grops/TODO *** groff-1.08/grops/TODO Sat Nov 7 06:41:48 1992 --- groff-1.09/grops/TODO Wed Jan 5 21:26:35 1994 *************** *** 3,6 **** --- 3,10 ---- Generate %%DocumentMedia comment. + Generate %%For comment. + + Generate %%Title comment. + For efficiency it might be better to have the printer interface have support for the t and u commands. diff -rc2N groff-1.08/grops/grops.man groff-1.09/grops/grops.man *** groff-1.08/grops/grops.man Mon Apr 5 10:28:23 1993 --- groff-1.09/grops/grops.man Mon Feb 14 08:42:56 1994 *************** *** 336,340 **** and .BR S . ! Zapf Dingbats is avilable as .BR ZD and a reversed version of ZapfDingbats (with symbols pointing in the opposite --- 336,340 ---- and .BR S . ! Zapf Dingbats is available as .BR ZD and a reversed version of ZapfDingbats (with symbols pointing in the opposite *************** *** 382,386 **** but any changes will persist only to the end of the page. ! Any definitions will also persist only until the end of the page. If you use the .B \eY --- 382,394 ---- but any changes will persist only to the end of the page. ! A dictionary containing the definitions specified by the ! .B def ! and ! .B mdef ! will be on top of the dictionary stack. ! If your code adds definitions to this dictionary, ! you should allocate space for them using ! .BI \eX'ps\ mdef \ n '\fR. ! Any definitions will persist only until the end of the page. If you use the .B \eY *************** *** 447,451 **** .I code contains ! so that it can create an apppropriately sized PostScript dictionary to contain them. .TP --- 455,459 ---- .I code contains ! so that it can create an appropriately sized PostScript dictionary to contain them. .TP *************** *** 512,516 **** This has the format .IP ! .BI .PSPIC\ file\ \fR[ width\ \fR[ height \fR]] .LP .I file --- 520,525 ---- This has the format .IP ! \&\fB.PSPIC\fP \fI\|file\fP [ \fB\-L\fP | \fB-R\fP | \fB\-I\fP \fIn\fP ]\ ! [ \fIwidth\fP [ \fIheight\fP ]] .LP .I file *************** *** 534,537 **** --- 543,557 ---- .I height high. + By default, the graphic will be horizontally centered. + The + .BI \-L + and + .BI \-R + cause the graphic to be left-aligned and right-aligned + respectively. + The + .B \-I + option causes the graphic to be indented by + .IR n . .RE .TP *************** *** 752,756 **** .Tp \w'\fB@FONTDIR@/devps/download'u+2n .B @FONTDIR@/devps/DESC ! Device desciption file. .TP .BI @FONTDIR@/devps/ F --- 772,776 ---- .Tp \w'\fB@FONTDIR@/devps/download'u+2n .B @FONTDIR@/devps/DESC ! Device description file. .TP .BI @FONTDIR@/devps/ F diff -rc2N groff-1.08/grops/ps.cc groff-1.09/grops/ps.cc *** groff-1.08/grops/ps.cc Mon Apr 5 10:22:16 1993 --- groff-1.09/grops/ps.cc Sun Feb 13 10:24:37 1994 *************** *** 24,27 **** --- 24,28 ---- #include "ps.h" + #include static int landscape_flag = 0; *************** *** 37,40 **** --- 38,42 ---- #define DEFAULT_LINEWIDTH 40 /* in ems/1000 */ + #define MAX_LINE_LENGTH 72 #define FILL_MAX 1000 *************** *** 45,54 **** double degrees(double r) { ! return r*180.0/M_PI; } double radians(double d) { ! return d*M_PI/180.0; } --- 47,56 ---- double degrees(double r) { ! return r*180.0/PI; } double radians(double d) { ! return d*PI/180.0; } *************** *** 58,61 **** --- 60,72 ---- } + // This is used for testing whether a character should be output in the + // PostScript file using \nnn, so we really want the character to be + // less than 0200. + + inline int is_ascii(char c) + { + return (unsigned char)c < 0200; + } + ps_output::ps_output(FILE *f, int n) : fp(f), max_line_length(n), col(0), need_space(0), fixed_point(0) *************** *** 175,179 **** for (int i = 0; i < n; i++) { char c = s[i]; ! if (isascii(c) && isprint(c)) { if (c == '(' || c == ')' || c == '\\') len += 2; --- 186,190 ---- for (int i = 0; i < n; i++) { char c = s[i]; ! if (is_ascii(c) && csprint(c)) { if (c == '(' || c == ')' || c == '\\') len += 2; *************** *** 219,223 **** for (i = 0; i < n; i++) { char c = s[i]; ! if (isascii(c) && isprint(c)) { if (c == '(' || c == ')' || c == '\\') len = 2; --- 230,234 ---- for (i = 0; i < n; i++) { char c = s[i]; ! if (is_ascii(c) && csprint(c)) { if (c == '(' || c == ')' || c == '\\') len = 2; *************** *** 504,508 **** output_hpos(-1), output_vpos(-1), ! out(0, 79), ndefined_styles(0), next_encoding_index(0), --- 515,519 ---- output_hpos(-1), output_vpos(-1), ! out(0, MAX_LINE_LENGTH), ndefined_styles(0), next_encoding_index(0), *************** *** 625,638 **** } - int is_small_h(int n) - { - return n < (font::res*2)/72 && n > -(font::res*10)/72; - } - - int is_small_v(int n) - { - return n < (font::res*4)/72 && n > -(font::res*4)/72; - } - static char *make_encoding_name(int encoding_index) { --- 636,639 ---- *************** *** 657,661 **** while (fgets(buf, 512, fp) != 0) { char *p = buf; ! while (isascii(*p) && isspace(*p)) p++; if (*p != '#' && *p != '\0' && (p = strtok(buf, WS)) != 0) { --- 658,662 ---- while (fgets(buf, 512, fp) != 0) { char *p = buf; ! while (csspace(*p)) p++; if (*p != '#' && *p != '\0' && (p = strtok(buf, WS)) != 0) { *************** *** 784,790 **** } int extra_space = 0; ! if (output_hpos < 0 || output_vpos < 0 ! || !is_small_h(output_hpos - sbuf_start_hpos) ! || !is_small_v(output_vpos - sbuf_vpos)) motion = ABSOLUTE; else { --- 785,789 ---- } int extra_space = 0; ! if (output_hpos < 0 || output_vpos < 0) motion = ABSOLUTE; else { *************** *** 1112,1115 **** --- 1111,1124 ---- .end_comment(); } + { + fputs("%%CreationDate: ", out.get_file()); + #ifdef LONG_FOR_TIME_T + long + #else + time_t + #endif + t = time(0); + fputs(ctime(&t), out.get_file()); + } for (font_pointer_list *f = font_list; f; f = f->next) { ps_font *psf = (ps_font *)(f->p); *************** *** 1186,1196 **** SPECIAL_PROCP proc; } proc_table[] = { ! "exec", &ps_printer::do_exec, ! "def", &ps_printer::do_def, ! "mdef", &ps_printer::do_mdef, ! "import", &ps_printer::do_import, ! "file", &ps_printer::do_file, ! "invis", &ps_printer::do_invis, ! "endinvis", &ps_printer::do_endinvis, }; for (char *p = arg; *p == ' ' || *p == '\n'; p++) --- 1195,1205 ---- SPECIAL_PROCP proc; } proc_table[] = { ! { "exec", &ps_printer::do_exec }, ! { "def", &ps_printer::do_def }, ! { "mdef", &ps_printer::do_mdef }, ! { "import", &ps_printer::do_import }, ! { "file", &ps_printer::do_file }, ! { "invis", &ps_printer::do_invis }, ! { "endinvis", &ps_printer::do_endinvis }, }; for (char *p = arg; *p == ' ' || *p == '\n'; p++) *************** *** 1497,1501 **** } delete pr; ! exit(0); } --- 1506,1510 ---- } delete pr; ! return 0; } diff -rc2N groff-1.08/grops/psfig.diff groff-1.09/grops/psfig.diff *** groff-1.08/grops/psfig.diff Tue Jul 7 14:13:47 1992 --- groff-1.09/grops/psfig.diff Fri May 14 08:50:52 1993 *************** *** 4,8 **** work only with groff, so you might want to install it under a different name. The output of this psfig must be processed using the ! macros in the file ../macros/tmac.psfig. These will automatically add the necessary PostScript code to the prologue output by grops. Use of the `global' feature in psfig will result in non-conformant PostScript --- 4,8 ---- work only with groff, so you might want to install it under a different name. The output of this psfig must be processed using the ! macros in the file ../tmac/tmac.psfig. These will automatically add the necessary PostScript code to the prologue output by grops. Use of the `global' feature in psfig will result in non-conformant PostScript diff -rc2N groff-1.08/grops/psrm.cc groff-1.09/grops/psrm.cc *** groff-1.08/grops/psrm.cc Mon Aug 3 11:29:03 1992 --- groff-1.09/grops/psrm.cc Sun Feb 13 10:24:36 1994 *************** *** 880,899 **** static comment_info comment_table[] = { ! "BeginResource:", &resource_manager::do_begin_resource, ! "IncludeResource:", &resource_manager::do_include_resource, ! "BeginDocument:", &resource_manager::do_begin_document, ! "IncludeDocument:", &resource_manager::do_include_document, ! "BeginProcSet:", &resource_manager::do_begin_procset, ! "IncludeProcSet:", &resource_manager::do_include_procset, ! "BeginFont:", &resource_manager::do_begin_font, ! "IncludeFont:", &resource_manager::do_include_font, ! "BeginFile:", &resource_manager::do_begin_file, ! "IncludeFile:", &resource_manager::do_include_file, ! "EndProcSet", &resource_manager::change_to_end_resource, ! "EndFont", &resource_manager::change_to_end_resource, ! "EndFile", &resource_manager::change_to_end_resource, ! "BeginPreview:", &resource_manager::do_begin_preview, ! "BeginData:", &resource_manager::do_begin_data, ! "BeginBinary:", &resource_manager::do_begin_binary, }; --- 880,899 ---- static comment_info comment_table[] = { ! { "BeginResource:", &resource_manager::do_begin_resource }, ! { "IncludeResource:", &resource_manager::do_include_resource }, ! { "BeginDocument:", &resource_manager::do_begin_document }, ! { "IncludeDocument:", &resource_manager::do_include_document }, ! { "BeginProcSet:", &resource_manager::do_begin_procset }, ! { "IncludeProcSet:", &resource_manager::do_include_procset }, ! { "BeginFont:", &resource_manager::do_begin_font }, ! { "IncludeFont:", &resource_manager::do_include_font }, ! { "BeginFile:", &resource_manager::do_begin_file }, ! { "IncludeFile:", &resource_manager::do_include_file }, ! { "EndProcSet", &resource_manager::change_to_end_resource }, ! { "EndFont", &resource_manager::change_to_end_resource }, ! { "EndFile", &resource_manager::change_to_end_resource }, ! { "BeginPreview:", &resource_manager::do_begin_preview }, ! { "BeginData:", &resource_manager::do_begin_data }, ! { "BeginBinary:", &resource_manager::do_begin_binary }, }; diff -rc2N groff-1.08/grotty/grotty.man groff-1.09/grotty/grotty.man *** groff-1.08/grotty/grotty.man Tue Aug 11 11:06:32 1992 --- groff-1.09/grotty/grotty.man Mon Feb 14 08:42:54 1994 *************** *** 152,156 **** .TP .B @FONTDIR@/devascii/DESC ! Device desciption file for .B ascii device. --- 152,156 ---- .TP .B @FONTDIR@/devascii/DESC ! Device description file for .B ascii device. *************** *** 163,167 **** .TP .B @FONTDIR@/devlatin1/DESC ! Device desciption file for .B latin1 device. --- 163,167 ---- .TP .B @FONTDIR@/devlatin1/DESC ! Device description file for .B latin1 device. diff -rc2N groff-1.08/grotty/tty.cc groff-1.09/grotty/tty.cc *** groff-1.08/grotty/tty.cc Thu Apr 1 12:51:28 1993 --- groff-1.09/grotty/tty.cc Thu May 27 23:29:44 1993 *************** *** 21,28 **** #include "driver.h" ! #ifndef USHRT_MAX ! #define USHRT_MAX 65535 #endif #define TAB_WIDTH 8 --- 21,32 ---- #include "driver.h" ! #ifndef SHRT_MIN ! #define SHRT_MIN (-32768) #endif + #ifndef SHRT_MAX + #define SHRT_MAX 32767 + #endif + #define TAB_WIDTH 8 *************** *** 99,103 **** public: glyph *next; ! unsigned short hpos; unsigned char code; unsigned char mode; --- 103,107 ---- public: glyph *next; ! short hpos; unsigned char code; unsigned char mode; *************** *** 176,185 **** #endif int hpos = h / font::hor; ! if (hpos < 0) { ! error("character to the left of first column discarded"); ! return; ! } ! if (hpos > USHRT_MAX) { ! error("character with ridiculously large horizontal position discarded"); return; } --- 180,185 ---- #endif int hpos = h / font::hor; ! if (hpos < SHRT_MIN || hpos > SHRT_MAX) { ! error("character with ridiculous horizontal position discarded"); return; } *************** *** 220,224 **** for (glyph **pp = lines + (vpos - 1); *pp; pp = &(*pp)->next) ! if (int((*pp)->hpos) < hpos || ((*pp)->hpos == hpos && (*pp)->draw_mode() >= g->draw_mode())) break; --- 220,224 ---- for (glyph **pp = lines + (vpos - 1); *pp; pp = &(*pp)->next) ! if ((*pp)->hpos < hpos || ((*pp)->hpos == hpos && (*pp)->draw_mode() >= g->draw_mode())) break; *************** *** 314,320 **** continue; } ! if (hpos > int(p->hpos)) { ! putchar('\b'); ! hpos--; } else { --- 314,322 ---- continue; } ! if (hpos > p->hpos) { ! do { ! putchar('\b'); ! hpos--; ! } while (hpos > p->hpos); } else { *************** *** 322,326 **** for (;;) { int next_tab_pos = ((hpos + TAB_WIDTH) / TAB_WIDTH) * TAB_WIDTH; ! if (next_tab_pos > int(p->hpos)) break; putchar('\t'); --- 324,328 ---- for (;;) { int next_tab_pos = ((hpos + TAB_WIDTH) / TAB_WIDTH) * TAB_WIDTH; ! if (next_tab_pos > p->hpos) break; putchar('\t'); *************** *** 328,332 **** } } ! for (; hpos < int(p->hpos); hpos++) putchar(' '); } --- 330,334 ---- } } ! for (; hpos < p->hpos; hpos++) putchar(' '); } *************** *** 429,433 **** } delete pr; ! exit(0); } --- 431,435 ---- } delete pr; ! return 0; } diff -rc2N groff-1.08/include/assert.h groff-1.09/include/assert.h *** groff-1.08/include/assert.h Mon Aug 3 11:34:02 1992 --- groff-1.09/include/assert.h Sat Oct 30 06:38:01 1993 *************** *** 21,27 **** #ifndef ASSERT_H #define ASSERT_H ! #ifdef __GNUG__ ! volatile ! #endif void assertion_failed(int, const char *); --- 21,25 ---- #ifndef ASSERT_H #define ASSERT_H ! void assertion_failed(int, const char *); diff -rc2N groff-1.08/include/lib.h groff-1.09/include/lib.h *** groff-1.08/include/lib.h Mon Mar 29 17:09:11 1993 --- groff-1.09/include/lib.h Sat Feb 12 11:59:20 1994 *************** *** 20,29 **** extern "C" { char *strerror(int); #ifndef __BORLANDC__ const char *itoa(int); const char *iftoa(int, int); #endif /* __BORLANDC__ */ ! }; #ifdef STDLIB_H_DECLARES_GETOPT --- 20,31 ---- extern "C" { + #ifndef strerror char *strerror(int); + #endif #ifndef __BORLANDC__ const char *itoa(int); const char *iftoa(int, int); #endif /* __BORLANDC__ */ ! } #ifdef STDLIB_H_DECLARES_GETOPT *************** *** 54,57 **** --- 56,71 ---- FILE *xtmpfile(); + #ifndef STDIO_H_DECLARES_POPEN + + extern "C" { FILE *popen(const char *, const char *); } + + #endif /* not STDIO_H_DECLARES_POPEN */ + + #ifndef STDIO_H_DECLARES_PCLOSE + + extern "C" { int pclose (FILE *); } + + #endif /* not STDIO_H_DECLARES_PCLOSE */ + int interpret_lf_args(const char *p); *************** *** 92,95 **** --- 106,115 ---- #define INT_DIGITS 10 + #ifdef PI + #undef PI + #endif + + const double PI = 3.14159265358979323846; + /* ad_delete deletes an array of objects with destructors; a_delete deletes an array of objects without destructors */ diff -rc2N groff-1.08/include/posix.h groff-1.09/include/posix.h *** groff-1.08/include/posix.h Tue Aug 25 16:38:24 1992 --- groff-1.09/include/posix.h Sat Feb 12 14:36:34 1994 *************** *** 23,30 **** #include ! #ifdef HAVE_CC_UNISTD_H ! #include ! #else #include #endif --- 23,30 ---- #include ! #ifdef HAVE_CC_OSFCN_H #include + #else + #include #endif diff -rc2N groff-1.08/include/stringclass.h groff-1.09/include/stringclass.h *** groff-1.08/include/stringclass.h Wed Nov 25 13:43:05 1992 --- groff-1.09/include/stringclass.h Thu May 27 22:19:36 1993 *************** *** 23,26 **** --- 23,39 ---- #include + // Ensure that the first declaration of functions that are later + // declared as inline declares them as inline. + + class string; + + inline string operator+(const string &, const string &); + inline string operator+(const string &, const char *); + inline string operator+(const char *, const string &); + inline string operator+(const string &, char); + inline string operator+(char, const string &); + inline int operator==(const string &, const string &); + inline int operator!=(const string &, const string &); + class string { public: *************** *** 58,69 **** void move(string &); ! friend inline string operator+(const string &, const string &); ! friend inline string operator+(const string &, const char *); ! friend inline string operator+(const char *, const string &); ! friend inline string operator+(const string &, char); ! friend inline string operator+(char, const string &); ! ! friend inline int operator==(const string &, const string &); ! friend inline int operator!=(const string &, const string &); friend int operator<=(const string &, const string &); friend int operator<(const string &, const string &); --- 71,82 ---- void move(string &); ! friend string operator+(const string &, const string &); ! friend string operator+(const string &, const char *); ! friend string operator+(const char *, const string &); ! friend string operator+(const string &, char); ! friend string operator+(char, const string &); ! ! friend int operator==(const string &, const string &); ! friend int operator!=(const string &, const string &); friend int operator<=(const string &, const string &); friend int operator<(const string &, const string &); diff -rc2N groff-1.08/indxbib/indxbib.cc groff-1.09/indxbib/indxbib.cc *** groff-1.08/indxbib/indxbib.cc Mon Jan 4 21:58:57 1993 --- groff-1.09/indxbib/indxbib.cc Thu Feb 3 09:34:30 1994 *************** *** 287,291 **** #endif /* not HAVE_RENAME */ temp_index_file = 0; ! exit(failed); } --- 287,291 ---- #endif /* not HAVE_RENAME */ temp_index_file = 0; ! return failed; } *************** *** 701,706 **** fwrite_or_die(hash_table, sizeof(int), hash_table_size, indxfp); else { - assert(0); // write it out word by word } fwrite_or_die(filenames.contents(), 1, filenames.length(), indxfp); --- 701,707 ---- fwrite_or_die(hash_table, sizeof(int), hash_table_size, indxfp); else { // write it out word by word + for (int i = 0; i < hash_table_size; i++) + fwrite_or_die(&hash_table[i].count, sizeof(int), 1, indxfp); } fwrite_or_die(filenames.contents(), 1, filenames.length(), indxfp); diff -rc2N groff-1.08/libbib/index.cc groff-1.09/libbib/index.cc *** groff-1.08/libbib/index.cc Tue Aug 25 16:04:07 1992 --- groff-1.09/libbib/index.cc Sun Feb 13 10:24:49 1994 *************** *** 137,144 **** ~file_closer() { close(*fdp); } }; ! int index_search_item::load(int fd) { file_closer fd_closer(fd); // close fd on return struct stat sb; if (fstat(fd, &sb) < 0) { --- 137,148 ---- ~file_closer() { close(*fdp); } }; ! ! // Tell the compiler that a variable is intentionally unused. ! inline void unused(void *) { } ! int index_search_item::load(int fd) { file_closer fd_closer(fd); // close fd on return + unused(&fd_closer); struct stat sb; if (fstat(fd, &sb) < 0) { *************** *** 386,390 **** err = 1; } ! else if ((sb.st_mode & S_IFMT) != S_IFREG) { error("`%1' is not a regular file", filename); err = 1; --- 390,394 ---- err = 1; } ! else if (!S_ISREG(sb.st_mode)) { error("`%1' is not a regular file", filename); err = 1; diff -rc2N groff-1.08/libbib/linear.cc groff-1.09/libbib/linear.cc *** groff-1.08/libbib/linear.cc Tue Mar 30 13:49:04 1993 --- groff-1.09/libbib/linear.cc Fri Feb 18 17:27:29 1994 *************** *** 133,137 **** if (j == 0) return s; ! if (map[uchar(*--s)] != pattern[--j]) break; } --- 133,137 ---- if (j == 0) return s; ! if (map[uchar(*--s)] != uchar(pattern[--j])) break; } *************** *** 302,306 **** if (fstat(fd, &sb) < 0) error("can't fstat `%1': %2", filename, strerror(errno)); ! else if ((sb.st_mode & S_IFMT) != S_IFREG) error("`%1' is not a regular file", filename); else { --- 302,306 ---- if (fstat(fd, &sb) < 0) error("can't fstat `%1': %2", filename, strerror(errno)); ! else if (!S_ISREG(sb.st_mode)) error("`%1' is not a regular file", filename); else { *************** *** 308,312 **** // used as a sentinel. We get 4 instead so that the read buffer will be // word-aligned. This seems to make the read slightly faster. We also ! // need one character at the end also for an addional newline used as a // sentinel. int size = int(sb.st_size); --- 308,312 ---- // used as a sentinel. We get 4 instead so that the read buffer will be // word-aligned. This seems to make the read slightly faster. We also ! // need one character at the end also for an additional newline used as a // sentinel. int size = int(sb.st_size); diff -rc2N groff-1.08/libdriver/input.cc groff-1.09/libdriver/input.cc *** groff-1.08/libdriver/input.cc Wed Nov 25 16:51:50 1992 --- groff-1.09/libdriver/input.cc Thu Jun 10 21:25:00 1993 *************** *** 21,24 **** --- 21,25 ---- #include "driver.h" #include "device.h" + #include "cset.h" const char *current_filename; *************** *** 169,173 **** { int c = get_char(); ! if (!isascii(c) || !isdigit(c)) fatal("digit expected"); env.hpos += (command - '0')*10 + (c - '0'); --- 170,174 ---- { int c = get_char(); ! if (!csdigit(c)) fatal("digit expected"); env.hpos += (command - '0')*10 + (c - '0'); *************** *** 371,375 **** c = get_char(); } ! if (!isascii(c) || !isdigit(c)) fatal("integer expected"); int total = 0; --- 372,376 ---- c = get_char(); } ! if (!csdigit(c)) fatal("integer expected"); int total = 0; *************** *** 381,385 **** total += c - '0'; c = get_char(); ! } while (isascii(c) && isdigit(c)); if (c != EOF) ungetc(c, current_file); --- 382,386 ---- total += c - '0'; c = get_char(); ! } while (csdigit(c)); if (c != EOF) ungetc(c, current_file); *************** *** 397,401 **** c = get_char(); } ! if (!isascii(c) || !isdigit(c)) { if (c != EOF) ungetc(c, current_file); --- 398,402 ---- c = get_char(); } ! if (!csdigit(c)) { if (c != EOF) ungetc(c, current_file); *************** *** 410,414 **** total += c - '0'; c = get_char(); ! } while (isascii(c) && isdigit(c)); if (c != EOF) ungetc(c, current_file); --- 411,415 ---- total += c - '0'; c = get_char(); ! } while (csdigit(c)); if (c != EOF) ungetc(c, current_file); diff -rc2N groff-1.08/libgroff/assert.cc groff-1.09/libgroff/assert.cc *** groff-1.08/libgroff/assert.cc Mon Aug 3 11:34:51 1992 --- groff-1.09/libgroff/assert.cc Sat Oct 30 06:37:48 1993 *************** *** 24,30 **** extern const char *program_name; - #ifdef __GNUG__ - volatile - #endif void assertion_failed(int lineno, const char *filename) { --- 24,27 ---- diff -rc2N groff-1.08/libgroff/cmap.cc groff-1.09/libgroff/cmap.cc *** groff-1.08/libgroff/cmap.cc Mon Aug 3 11:34:33 1992 --- groff-1.09/libgroff/cmap.cc Thu May 27 20:46:27 1993 *************** *** 25,31 **** cmap cmupper(CMAP_BUILTIN); #define ISASCII(c) isascii(c) ! #if 0 ! #define ISASCII(c) 1 /* use this is you have an ANSI ctype.h */ #endif --- 25,32 ---- cmap cmupper(CMAP_BUILTIN); + #ifdef isascii #define ISASCII(c) isascii(c) ! #else ! #define ISASCII(c) (1) #endif diff -rc2N groff-1.08/libgroff/cset.cc groff-1.09/libgroff/cset.cc *** groff-1.08/libgroff/cset.cc Mon Aug 3 11:34:33 1992 --- groff-1.09/libgroff/cset.cc Thu May 27 20:47:48 1993 *************** *** 34,40 **** cset cscntrl(CSET_BUILTIN); #define ISASCII(c) isascii(c) ! #if 0 ! #define ISASCII(c) 1 /* use this is you have an ANSI ctype.h */ #endif --- 34,41 ---- cset cscntrl(CSET_BUILTIN); + #ifdef isascii #define ISASCII(c) isascii(c) ! #else ! #define ISASCII(c) (1) #endif diff -rc2N groff-1.08/libgroff/font.cc groff-1.09/libgroff/font.cc *** groff-1.08/libgroff/font.cc Tue Nov 24 17:25:12 1992 --- groff-1.09/libgroff/font.cc Mon Feb 14 08:27:02 1994 *************** *** 208,212 **** { int h = get_height(c, point_size); ! return int(h*tan((slant+sl)*M_PI/180.0) + .5); } --- 208,212 ---- { int h = get_height(c, point_size); ! return int(h*tan((slant+sl)*PI/180.0) + .5); } *************** *** 701,714 **** int *ptr; } table[] = { ! "res", &font::res, ! "hor", &font::hor, ! "vert", &font::vert, ! "unitwidth", &font::unitwidth, ! "paperwidth", &font::paperwidth, ! "paperlength", &font::paperlength, ! "spare1", &font::biggestfont, ! "biggestfont", &font::biggestfont, ! "spare2", &font::spare2, ! "sizescale", &font::sizescale }; --- 701,714 ---- int *ptr; } table[] = { ! { "res", &font::res }, ! { "hor", &font::hor }, ! { "vert", &font::vert }, ! { "unitwidth", &font::unitwidth }, ! { "paperwidth", &font::paperwidth }, ! { "paperlength", &font::paperlength }, ! { "spare1", &font::biggestfont }, ! { "biggestfont", &font::biggestfont }, ! { "spare2", &font::spare2 }, ! { "sizescale", &font::sizescale } }; *************** *** 871,875 **** } if (font_name_table == 0) { ! t.error("missing `fonts' commmand"); return 0; } --- 871,875 ---- } if (font_name_table == 0) { ! t.error("missing `fonts' command"); return 0; } diff -rc2N groff-1.08/libgroff/new.cc groff-1.09/libgroff/new.cc *** groff-1.08/libgroff/new.cc Tue Oct 20 23:18:43 1992 --- groff-1.09/libgroff/new.cc Sun Feb 13 10:48:35 1994 *************** *** 38,56 **** #ifdef COOKIE_BUG char *p = (char *)malloc(unsigned(size + 8)); - if (p != 0) { - ((unsigned *)p)[1] = 0; - return p + 8; - } #else /* not COOKIE_BUG */ char *p = (char *)malloc(unsigned(size)); - if (p != 0) - return p; #endif /* not COOKIE_BUG */ ! if (program_name) { ! ewrite(program_name); ! ewrite(": "); } ! ewrite("out of memory\n"); ! _exit(-1); } --- 38,58 ---- #ifdef COOKIE_BUG char *p = (char *)malloc(unsigned(size + 8)); #else /* not COOKIE_BUG */ char *p = (char *)malloc(unsigned(size)); #endif /* not COOKIE_BUG */ ! if (p == 0) { ! if (program_name) { ! ewrite(program_name); ! ewrite(": "); ! } ! ewrite("out of memory\n"); ! _exit(-1); } ! #ifdef COOKIE_BUG ! ((unsigned *)p)[1] = 0; ! return p + 8; ! #else /* not COOKIE_BUG */ ! return p; ! #endif /* not COOKIE_BUG */ } diff -rc2N groff-1.08/libgroff/strtol.c groff-1.09/libgroff/strtol.c *** groff-1.08/libgroff/strtol.c Mon Aug 3 11:34:53 1992 --- groff-1.09/libgroff/strtol.c Thu May 27 20:54:04 1993 *************** *** 37,40 **** --- 37,46 ---- #endif + #ifdef isascii + #define ISASCII(c) isascii(c) + #else + #define ISASCII(c) (1) + #endif + long strtol(str, ptr, base) char *str, **ptr; *************** *** 47,51 **** static char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; ! while (isascii(*str) && isspace(*str)) str++; --- 53,57 ---- static char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz"; ! while (ISASCII((unsigned char)*str) && isspace((unsigned char)*str)) str++; *************** *** 71,75 **** str += 2; ! p = strchr(digits, isascii(*str) && isupper(*str) ? tolower(*str) : *str); if (p == 0 || (val = (p - digits)) >= base) { if (base == 16 && str > start && (str[-1] == 'x' || str[-1] == 'X')) { --- 77,84 ---- str += 2; ! p = strchr(digits, (ISASCII((unsigned char)*str) ! && isupper((unsigned char)*str) ! ? tolower((unsigned char)*str) ! : *str)); if (p == 0 || (val = (p - digits)) >= base) { if (base == 16 && str > start && (str[-1] == 'x' || str[-1] == 'X')) { *************** *** 90,94 **** int n; ! p = strchr(digits, isascii(*str) && isupper(*str) ? tolower(*str) : *str); if (p == 0) break; --- 99,105 ---- int n; ! p = strchr(digits, (ISASCII((unsigned char)*str) ! && isupper((unsigned char)*str) ! ? tolower((unsigned char)*str) : *str)); if (p == 0) break; diff -rc2N groff-1.08/lkbib/lkbib.cc groff-1.09/lkbib/lkbib.cc *** groff-1.08/lkbib/lkbib.cc Thu Nov 26 16:12:56 1992 --- groff-1.09/lkbib/lkbib.cc Thu May 27 23:29:33 1993 *************** *** 40,44 **** } ! main(int argc, char **argv) { program_name = argv[0]; --- 40,44 ---- } ! int main(int argc, char **argv) { program_name = argv[0]; *************** *** 119,122 **** putchar('\n'); } ! exit(!count); } --- 119,122 ---- putchar('\n'); } ! return !count; } diff -rc2N groff-1.08/lookbib/lookbib.cc groff-1.09/lookbib/lookbib.cc *** groff-1.08/lookbib/lookbib.cc Thu Nov 26 16:10:10 1992 --- groff-1.09/lookbib/lookbib.cc Thu May 27 23:29:38 1993 *************** *** 44,48 **** } ! main(int argc, char **argv) { program_name = argv[0]; --- 44,48 ---- } ! int main(int argc, char **argv) { program_name = argv[0]; diff -rc2N groff-1.08/man/groff_font.man groff-1.09/man/groff_font.man *** groff-1.08/man/groff_font.man Thu Sep 24 08:26:26 1992 --- groff-1.09/man/groff_font.man Mon Feb 14 08:42:50 1994 *************** *** 152,156 **** and .BR ffl . ! For backwards compatibiliy, the list of ligatures may be terminated with a .BR 0. --- 152,156 ---- and .BR ffl . ! For backwards compatibility, the list of ligatures may be terminated with a .BR 0. *************** *** 261,265 **** or .B 0X ! it will be intepreted as hexdecimal. .LP Anything on the line after the code field will be ignored. --- 261,265 ---- or .B 0X ! it will be intepreted as hexadecimal. .LP Anything on the line after the code field will be ignored. diff -rc2N groff-1.08/man/groff_out.man groff-1.09/man/groff_out.man *** groff-1.08/man/groff_out.man Thu Aug 6 12:27:04 1992 --- groff-1.09/man/groff_out.man Mon Feb 14 06:30:06 1994 *************** *** 72,77 **** .B D drawing command has been extended. ! These extensions will only be used by GNU pic if the ! .B \-x option is given. .TP --- 72,77 ---- .B D drawing command has been extended. ! These extensions will not be used by GNU pic if the ! .B \-n option is given. .TP diff -rc2N groff-1.08/mm/ChangeLog groff-1.09/mm/ChangeLog *** groff-1.08/mm/ChangeLog Mon Apr 5 08:35:10 1993 --- groff-1.09/mm/ChangeLog Tue Dec 14 15:24:02 1993 *************** *** 1,6 **** Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se) * version 1.16 ! * MUL* now use the previus font and family. * extra blank page at end-of-text eliminated. --- 1,42 ---- + Tue Sep 7 08:37:00 1993 Jörgen Hägg (jh at efd.lth.se) + + * version 1.19 + * .lt is called in the header for .TP also. + * Variable Pgps added to control the header and footer point-size. + * Error-text printed with .APP removed. + * Error with .FG, .TB, .EC and .EX indentation fixed. + * header and footer line-length is not changed by MC or 2C. + * Default for page-length and page-offset is now taken from + \n[.p] and \n[.o]. + * Argument to .ab (abort) is supplied. + * Argument to .1C added. + * Argument to .PGFORM added. + * RP/RS/RF totally rewritten. Should work with 2C now. + + Fri Apr 23 10:37:25 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.18 + * Height of display is now more exactly calculated. + * tabs and blankspaces where wrong in .VERBON. + * error in manual for escape-character in VERBON. + * Makefile.sub: installed tmac.m as tmac.m and tmac.mse + * Installation of tmac.mse now supports TMAC_M. + * bug with N fixed. + + Mon Apr 5 09:36:01 1993 Joergen Haegg (jh at efd.lth.se) + + * version 1.17 + * MULB preserves size. + * bug in VERBON fixed, causing strange errors. + * section-page footer fixed. + * added support for numberregister S + * fixed bug with floating displays wich made floats to + generate space on a page, but broke page anyway. + * end-of-page trap reinstalled. + Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se) * version 1.16 ! * MUL* now use the previous font and family. * extra blank page at end-of-text eliminated. diff -rc2N groff-1.08/mm/Makefile.sub groff-1.09/mm/Makefile.sub *** groff-1.08/mm/Makefile.sub Sun Nov 29 10:23:22 1992 --- groff-1.09/mm/Makefile.sub Wed Jul 14 10:24:02 1993 *************** *** 21,26 **** -rm -f $(tmacdir)/tmac.$(tmac_m) $(INSTALL_DATA) $(srcdir)/tmac.m $(tmacdir)/tmac.$(tmac_m) ! $(INSTALL_DATA) $(srcdir)/tmac.m $(tmacdir)/tmac.$(tmac_m)se uninstall_sub: -for f in $(FILES); do rm -f $(tmacdir)/mm/$$f; done --- 21,29 ---- -rm -f $(tmacdir)/tmac.$(tmac_m) $(INSTALL_DATA) $(srcdir)/tmac.m $(tmacdir)/tmac.$(tmac_m) ! @sed -e "s;^.mso tmac.m;.mso $(tmac_m);g" $(srcdir)/tmac.mse \ ! > $(tmacdir)/tmac.$(tmac_m)se + + uninstall_sub: -for f in $(FILES); do rm -f $(tmacdir)/mm/$$f; done diff -rc2N groff-1.08/mm/groff_mm.man groff-1.09/mm/groff_mm.man *** groff-1.08/mm/groff_mm.man Fri Mar 5 07:52:11 1993 --- groff-1.09/mm/groff_mm.man Mon Feb 14 08:42:47 1994 *************** *** 33,36 **** --- 33,39 ---- Groff mm has several extensions: .TP + .B "1C [1]" + Begin one column processing. An \fB1\fP as argmunet disabled the page-break. + .TP .B "APP name text" Begin an appendix with name \fIname\fP. Automatic naming occurs if *************** *** 117,121 **** The first looks for references and the second includes them. \fBINITR\fP can be used several times, but it is only the first ! occurence of \fBINITR\fP that is active. See also \fBSETR\fP, \fBGETPN\fP and \fBGETHN\fP. .TP --- 120,124 ---- The first looks for references and the second includes them. \fBINITR\fP can be used several times, but it is only the first ! occurrence of \fBINITR\fP that is active. See also \fBSETR\fP, \fBGETPN\fP and \fBGETHN\fP. .TP *************** *** 124,128 **** .TP .B "MT [arg [addressee]]" ! Memorandom type. The \fIarg\fP is part of a filename in \fI@TMAC_MDIR@/*.MT\fP. Memorandum type 0 thru 5 are supported, including \fI"string"\fP. --- 127,131 ---- .TP .B "MT [arg [addressee]]" ! Memorandum type. The \fIarg\fP is part of a filename in \fI@TMAC_MDIR@/*.MT\fP. Memorandum type 0 thru 5 are supported, including \fI"string"\fP. *************** *** 150,154 **** End the multi-column mode and print the columns. .TP ! .B "PGFORM [linelength [pagelength [pageoffset]]]" Sets linelength, pagelength and/or pageoffset. This macro can be used for special formatting, like letterheads --- 153,157 ---- End the multi-column mode and print the columns. .TP ! .B "PGFORM [linelength [pagelength [pageoffset [1]]]]" Sets linelength, pagelength and/or pageoffset. This macro can be used for special formatting, like letterheads *************** *** 156,159 **** --- 159,165 ---- \fBPGFORM\fP can be used without arguments to reset everything after a \fBMOVE\fP. + A line-break is done unless the fourth argument is given. + This can be used to avoid the pagenumber on the first page while setting + new width and length. .TP .B PGNH *************** *** 189,193 **** 1 .sp -1 ! Enable the escape-character (\e). This is normally turned off during verbose output. .ti -.5i --- 195,199 ---- 1 .sp -1 ! Disable the escape-character (\e). This is normally turned on during verbose output. .ti -.5i *************** *** 269,272 **** --- 275,298 ---- String containing "See chapter \e\e*[Qrfh], page \e\en[Qrfp].". .TP + .B Pgps + Controls whether header and footer pointsize should follow the current + setting or just change when the header and footer is defined. + .in +.5i + .ti -.5i + Value + .sp -1 + Description + .ti -.5i + 0 + .sp -1 + Pointsize will only change to the current setting when \fB.PH\fP, \fB.PF\fP, + \&\fB.OH\fP, \fP.EH\fP, \fB.OF\fP or \fB.OE\fP is executed. + .ti -.5i + 1 + .sp -1 + Pointsize will change after every \fB.S\fP. This is the default. + .ti -.5i + .in + .TP .B Sectf Flag controlling "section-figures". A non-zero value enables this. *************** *** 288,294 **** The following standard macros are implemented: .TP - .B 1C - Begin one column processing - .TP .B 2C Begin two column processing --- 314,317 ---- *************** *** 390,395 **** Numbered heading. .TP ! .B "HC [hypenation-character]" ! Set hypenation character. .TP .B "HM [arg1 [arg2 [... [arg7]]]]" --- 413,418 ---- Numbered heading. .TP ! .B "HC [hyphenation-character]" ! Set hyphenation character. .TP .B "HM [arg1 [arg2 [... [arg7]]]]" *************** *** 436,440 **** .TP .B "MT [arg [addressee]]" ! Memorandom type. See above note about MT. .TP .B "ND new-date" --- 459,463 ---- .TP .B "MT [arg [addressee]]" ! Memorandum type. See above note about MT. .TP .B "ND new-date" *************** *** 530,534 **** .TP .B TL ! Begin title of memorandom. .TP .B TM [num1 [num2 [...]]] --- 553,557 ---- .TP .B TL ! Begin title of memorandum. .TP .B TM [num1 [num2 [...]]] *************** *** 538,541 **** --- 561,566 ---- .B TP Top of page user-defined macro. + Note that header and footer is printed in a separate environment. + Linelength is preserved though. .TP .B "TS [H]" *************** *** 615,619 **** .TP .B Eq=0 ! Eqation lable adjust 0=left, 1=right .TP .B Fs=1 --- 640,644 ---- .TP .B Eq=0 ! Equation lable adjust 0=left, 1=right .TP .B Fs=1 diff -rc2N groff-1.08/mm/mm/0.MT groff-1.09/mm/mm/0.MT *** groff-1.08/mm/mm/0.MT Thu Nov 19 08:46:12 1992 --- groff-1.09/mm/mm/0.MT Fri Jun 11 09:10:38 1993 *************** *** 77,80 **** --- 77,81 ---- .MOVE 4.8c 13.3c .S 8 + .nf \\$1: .br *************** *** 84,87 **** --- 85,89 ---- .B "\\*[cov*new-date]" .br + .fi .PGFORM .. diff -rc2N groff-1.08/mm/mm/ms.cov groff-1.09/mm/mm/ms.cov *** groff-1.08/mm/mm/ms.cov Mon Feb 22 10:31:52 1993 --- groff-1.09/mm/mm/ms.cov Fri Apr 30 08:37:13 1993 *************** *** 66,69 **** --- 66,70 ---- .\"----------------- .de COVEND + .br .if d cov*default-firm .if !d cov*firm .ds cov*firm \\*[cov*default-firm] .sp |4.2c diff -rc2N groff-1.08/mm/tmac.m groff-1.09/mm/tmac.m *** groff-1.08/mm/tmac.m Mon Apr 5 08:33:08 1993 --- groff-1.09/mm/tmac.m Mon Feb 14 08:42:46 1994 *************** *** 1,4 **** .\" Version: ! .ds RE 1.16 .ig --- 1,4 ---- .\" Version: ! .ds RE 1.19 .ig *************** *** 48,52 **** .\" Eject page .nr Ej 0 ! .\" Eqation lable adjust 0=left, 1=right .nr Eq 0 .\" Em dash string --- 48,52 ---- .\" Eject page .nr Ej 0 ! .\" Equation lable adjust 0=left, 1=right .nr Eq 0 .\" Em dash string *************** *** 136,144 **** .\" .\" Current pointsize and vertical space, always in points. ! .nr @ps 10 ! .nr @vs 12 .\" Page length .ie r L .nr @pl \n[L] ! .el .nr @pl 11i .\" page width .ie r W .nr @ll \n[W] --- 136,151 ---- .\" .\" Current pointsize and vertical space, always in points. ! .ie r S \{\ ! . nr @ps \n[S] ! . nr @vs \n[S]+2 ! .\} ! .el \{\ ! . nr @ps 10 ! . nr @vs 12 ! .\} ! .\" .\" Page length .ie r L .nr @pl \n[L] ! .el .nr @pl \n[.p] .\" page width .ie r W .nr @ll \n[W] *************** *** 146,150 **** .\" page offset .ie r O .nr @po \n[O] ! .el .nr @po 1i .\" .\" cheating... --- 153,157 ---- .\" page offset .ie r O .nr @po \n[O] ! .el .nr @po \n(.o .\" .\" cheating... *************** *** 205,210 **** .\" for GETR .ds Qrf See chapter \\*[Qrfh], page \\*[Qrfp]. ! .\" test for mgm macro. This can be used if the text must test ! .\" what macros is used. .\" .\" section-page if Sectp > 0 --- 212,219 ---- .\" for GETR .ds Qrf See chapter \\*[Qrfh], page \\*[Qrfp]. ! .\" ! .\" header- and footer-size will only change to the current ! .\" if Pgps is > 0. ! .nr Pgps 1 .\" .\" section-page if Sectp > 0 *************** *** 223,226 **** --- 232,237 ---- .nr Verbin 5n .\" + .\" test for mgm macro. This can be used if the text must test + .\" what macros is used. .nr .mgm 1 .\" *************** *** 248,252 **** .if \\n[D] .backtrace .tm ****************** ! .ab .. .\" ####### module debug ################################# --- 259,263 ---- .if \\n[D] .backtrace .tm ****************** ! .ab "Input aborted, syntax error" .. .\" ####### module debug ################################# *************** *** 384,392 **** .. .\"------------- ! .\" .PGFORM linelength [ pagelength [ pageoffset ] ] .de PGFORM .\" Break here to avoid problems with new linesetting of the previous line. .\" Hope this doesn't break anything else :-) ! .br .if !''\\$1' .nr @ll \\$1 .if !''\\$2' .nr @pl \\$2 --- 395,404 ---- .. .\"------------- ! .\" .PGFORM linelength [ pagelength [ pageoffset [1]]] .de PGFORM .\" Break here to avoid problems with new linesetting of the previous line. .\" Hope this doesn't break anything else :-) ! .\" Don't break if arg_4 is a '1'. ! .if ''\\$4' .br .if !''\\$1' .nr @ll \\$1 .if !''\\$2' .nr @pl \\$2 *************** *** 397,401 **** .pl \\n[@pl]u .nr @cur-ll \\n[@ll] ! .in 0 .pg@move-trap .. --- 409,413 ---- .pl \\n[@pl]u .nr @cur-ll \\n[@ll] ! 'in 0 .pg@move-trap .. *************** *** 508,517 **** .\" 1 add an empty line before verbose text .\" 2 add an empty line after verbose text ! .\" 4 numbered lines (controlled by the string Verbnm) ! .\" 8 indent text by the numbervariable Verbin. .de VERBON .nr misc*verb 0\\$1 .if (0\\n[misc*verb]%4)/2 .SP \\n[Lsp]u - .br .misc@ev-keep misc*verb-ev .nf --- 520,529 ---- .\" 1 add an empty line before verbose text .\" 2 add an empty line after verbose text ! .\" 3 numbered lines (controlled by the string Verbnm) ! .\" 4 indent text by the numbervariable Verbin. .de VERBON + .br .nr misc*verb 0\\$1 .if (0\\n[misc*verb]%4)/2 .SP \\n[Lsp]u .misc@ev-keep misc*verb-ev .nf *************** *** 519,530 **** .ie !'\\$3'' .ft \\$3 .el .ft CR ! .ss 12 ! .ta T 8u*\w@n@u ! .if 0\\$2 \{\ . ps \\$2 . vs \\$2 .\} .if (0\\n[misc*verb]%32)/16 .in +\\n[Verbin]u ! .if !(0\\n[misc*verb]%2) \{\ . eo . nr @verbose-flag 1 \" tell pageheader to set ec/eo --- 531,543 ---- .ie !'\\$3'' .ft \\$3 .el .ft CR ! .ie 0\\$2 \{\ ! . ss \\$2 . ps \\$2 . vs \\$2 .\} + .el .ss 12 + .ta T 8u*\w@n@u .if (0\\n[misc*verb]%32)/16 .in +\\n[Verbin]u ! .if 0\\n[misc*verb]%2 \{\ . eo . nr @verbose-flag 1 \" tell pageheader to set ec/eo *************** *** 533,536 **** --- 546,550 ---- .de VERBOFF .ec + .br .if (0\\n[misc*verb]%8)/4 .SP \\n[Lsp]u .if (0\\n[misc*verb]%16)/8 .nm *************** *** 609,614 **** .nr H\\n[hd*level] +1 .\" ! .\" if level==1 -> prepare for new section. ! .if \\n[hd*level]=1 .rr hd*h1-page .\" .\" --- 623,628 ---- .nr H\\n[hd*level] +1 .\" ! .\" update pagenumber if section-page is used ! .if \\n[hd*level]=1 .hd@set-page \\n[%] .\" .\" *************** *** 746,750 **** .\" .de hd@set-page ! .if !r hd*h1-page .nr hd*h1-page \\n[%] .\" .ie \\n[Sectp] .nr P \\n[%]-\\n[hd*h1-page]+1 --- 760,764 ---- .\" .de hd@set-page ! .if \\n[.$]>0 .nr hd*h1-page \\$1 .\" .ie \\n[Sectp] .nr P \\n[%]-\\n[hd*h1-page]+1 *************** *** 753,756 **** --- 767,771 ---- .\" Set section-page-string .ds hd*sect-pg \\n[H1]-\\n[P] + .if \\n[Sectp]>1 .if '\\n[H1]'0' .ds hd*sect-pg " .. .\"########### module pg #################### *************** *** 759,769 **** .em pg@end-of-text .\" ! .ie \n[N]=4 .ds pg*header '''' ! .el .ds pg*header ''- % -'' .ds pg*even-footer .ds pg*odd-footer .ds pg*even-header .ds pg*odd-header - .ds pg*footer .\" .nr pg*top-margin 0 --- 774,788 ---- .em pg@end-of-text .\" ! .ds pg*header ''- % -'' ! .ds pg*footer ! .if \n[N]=4 .ds pg*header '''' ! .if \n[N]=5 \{\ ! . ds pg*header '''' ! . ds pg*footer ''\\*[hd*sect-pg]'' ! .\} .ds pg*even-footer .ds pg*odd-footer .ds pg*even-header .ds pg*odd-header .\" .nr pg*top-margin 0 *************** *** 850,855 **** . ie !d TP \{\ ' sp 3 ! . lt \\n[@ll]u ! . ie ((\\n[%]=1)&(\\n[N]=1):(\\n[N]=2)) .sp . el .tl \\*[pg*header] . ie o .tl \\*[pg*odd-header] --- 869,873 ---- . ie !d TP \{\ ' sp 3 ! . ie ((\\n[%]=1)&((\\n[N]=1):(\\n[N]=2))) .sp . el .tl \\*[pg*header] . ie o .tl \\*[pg*odd-header] *************** *** 869,873 **** . \" . \" back to normal text processing ! . \" .pg@enable-trap . \" mark for multicolumn . nr pg*head-mark \\n[nl]u --- 887,891 ---- . \" . \" back to normal text processing ! . pg@enable-trap . \" mark for multicolumn . nr pg*head-mark \\n[nl]u *************** *** 916,920 **** .ev pg*tl-ev .pg@set-env - .lt \\n[@ll]u .ie o .tl \\*[pg*odd-footer] .el .tl \\*[pg*even-footer] --- 934,937 ---- *************** *** 937,942 **** 'in 0 'ti 0 ! 'ps \\n[pg*ps] ! 'vs \\n[pg*vs] .. .\"------------------------- --- 954,966 ---- 'in 0 'ti 0 ! .ie \\n[Pgps] \{\ ! . ps \\n[@ps] ! . vs \\n[@vs] ! .\} ! .el \{\ ! . ps \\n[pg*ps] ! . vs \\n[pg*vs] ! .\} ! .lt \\n[@ll]u .. .\"------------------------- *************** *** 1059,1062 **** --- 1083,1087 ---- .\} .. + .\" An argument disables the page-break. .de 1C .br *************** *** 1068,1073 **** .nr pg*cur-po \\n[@po]u .PGFORM ! .\".pg@next-page ! .SK .. .de 2C --- 1093,1097 ---- .nr pg*cur-po \\n[@po]u .PGFORM ! .if !'\\$1'1' .SK .. .de 2C *************** *** 1081,1085 **** .nr pg*cur-po \\n[@po]u .ll \\n[pg*column-size]u ! .lt \\n[pg*column-size]u .. .\" MC column-size [ column-separation ] --- 1105,1109 ---- .nr pg*cur-po \\n[@po]u .ll \\n[pg*column-size]u ! .\" .lt \\n[pg*column-size]u .. .\" MC column-size [ column-separation ] *************** *** 1097,1101 **** .nr pg*cur-po \\n[@po]u .ll \\n[pg*column-size]u ! .lt \\n[pg*column-size]u .. .\" begin a new column --- 1121,1125 ---- .nr pg*cur-po \\n[@po]u .ll \\n[pg*column-size]u ! .\" .lt \\n[pg*column-size]u .. .\" begin a new column *************** *** 1132,1135 **** --- 1156,1161 ---- .nr pg*mul-font \\n[.f] .ev pg*mul-ev + .ps \\n[@ps] + .vs \\n[@vs] .fam \\*[pg*mul-fam] .ft \\n[pg*mul-font] *************** *** 1439,1444 **** --- 1465,1475 ---- .if \\n[ds*ffloat] .SP \\n[Lsp]u .di + .\" find out the real size of the diversion + .di ds*test + .ds*div!\\n[ds*snr] + .di .nr ds*width \\n[dl] .nr ds*height \\n[dn] + .rm ds*test .misc@pop-nr ds-ll ds*old-ll .misc@pop-nr ds-form ds*format *************** *** 1489,1493 **** . \" print float if queue is empty and the display fits into . \" the current page ! . if (\\n[ds*fnr]>\\n[ds*o-fnr])&(\\n[ds*height]<\\n[.t]) \{\ . ds@print-float 1 . \} --- 1520,1524 ---- . \" print float if queue is empty and the display fits into . \" the current page ! . if ((\\n[ds*fnr]>\\n[ds*o-fnr])&(\\n[ds*height]<\\n[.t])) \{\ . ds@print-float 1 . \} *************** *** 1522,1526 **** .\" at .DE . if (\\$1=1)&((\\n[Df]%2)=1) \{\ ! . if \\n[.t]>\\n[ds*fsize!\\n[ds*fnr]] \{\ . \" Df = 1,3 or 5 . ds@print-one-float --- 1553,1557 ---- .\" at .DE . if (\\$1=1)&((\\n[Df]%2)=1) \{\ ! . if \\n[.t]>\\n[ds*fsize!\\n[ds*o-fnr]] \{\ . \" Df = 1,3 or 5 . ds@print-one-float *************** *** 1646,1649 **** --- 1677,1681 ---- .\" determine where the text begins .nr li*text-begin \\n[li*tind]>?\w@\\*[li*c-mark]\ @ + .nr x \w@\\*[li*c-mark]\ @ .\" .\" determine where the mark begin *************** *** 2086,2090 **** \!.br \!.ie (\w@\\$1\\$2@)>(\\n[.l]-\\n[.i]) \{\ ! \!. in +\w@\\$1@u \!. ti 0 \!.\} --- 2118,2122 ---- \!.br \!.ie (\w@\\$1\\$2@)>(\\n[.l]-\\n[.i]) \{\ ! . in +\w@\\$1@u \!. ti 0 \!.\} *************** *** 2187,2190 **** --- 2219,2224 ---- .ev box*ev .di box*div + .ps \\n[@ps] + .vs \\n[@vs] .in 1n .ll (u;\\n[box*wid]-1n) *************** *** 2224,2249 **** .\" .\" start reference .de RS .if !''\\$1' .ds \\$1 \\n[ref*nr] .nr ref*flag 1 ! .ev ref*ev ! .da ref*div ! .init@reset ! .ll \\n[@ll]u .in \\n[ref*nr-width]u ! .ti -(\w@\\n[ref*nr].@u+1n) ! \\n[ref*nr]. .sp -1 .. ! .de RF .br - .if \\n[Ls] .SP \\n[Lsp]u .di .ev .. .\"----------- .de RP ! .if !d ref*div .@error "RP: No references!" ! .nr ref*flag 0 .nr ref*i 0\\$2 .if \\n[ref*i]<2 .SK --- 2258,2300 ---- .\" .\" start reference + .\"------------ .de RS .if !''\\$1' .ds \\$1 \\n[ref*nr] .nr ref*flag 1 ! .am ref*mac ! .ref@start-print \\n[ref*nr] ! \\.. ! .eo ! .am ref*mac RF ! .. ! .\"------------ ! .de RF ! .ec ! .am ref*mac ! .ref@stop-print ! \\.. ! .. ! .\"------------ ! .de ref@start-print ! .di ref*div .in \\n[ref*nr-width]u ! .ti -(\w@\\$1.@u+1n) ! \\$1. .sp -1 .. ! .de ref@stop-print .br .di + .ne \\n[dn]u + .ev ref*ev2 + .nf + .ref*div .ev + .rm ref*div + .if \\n[Ls] .SP \\n[Lsp]u .. .\"----------- .de RP ! .if !d ref*mac .@error "RP: No references!" .nr ref*i 0\\$2 .if \\n[ref*i]<2 .SK *************** *** 2256,2260 **** .\" called by end-of-text! .de ref@eot-print ! .if \\n[ref*flag] \{\ . if \\n[D]>2 .tm Print references, called by eot . nr ref*flag 0 --- 2307,2312 ---- .\" called by end-of-text! .de ref@eot-print ! .\".if \\n[ref*flag] \{ ! .if d ref*mac \{\ . if \\n[D]>2 .tm Print references, called by eot . nr ref*flag 0 *************** *** 2272,2284 **** .de ref@print-refs .toc@save 1 "" "\\*[Rp]" \\n[%] - .ev ref*ev .ce \fI\\*[Rp]\fP .sp .in 0 ! .nf ! .ref*div .in ! .rm ref*div .ev .. --- 2324,2337 ---- .de ref@print-refs .toc@save 1 "" "\\*[Rp]" \\n[%] .ce \fI\\*[Rp]\fP .sp + .nr ref*ll \\n[.l] + .misc@ev-keep ref*ev + .ll \\n[ref*ll]u .in 0 ! .ref*mac .in ! .rm ref*mac .ev .. diff -rc2N groff-1.08/mm/tmac.mse groff-1.09/mm/tmac.mse *** groff-1.08/mm/tmac.mse Tue Sep 1 15:37:34 1992 --- groff-1.09/mm/tmac.mse Wed Jul 14 10:24:26 1993 *************** *** 1,4 **** .\" swedish version of mm ! .\" for mgm version 1.04 .mso tmac.m .ds @language se --- 1,4 ---- .\" swedish version of mm ! .\" See tmac.m for version-information. .mso tmac.m .ds @language se diff -rc2N groff-1.08/nroff/nroff.man groff-1.09/nroff/nroff.man *** groff-1.08/nroff/nroff.man Mon Aug 10 12:48:02 1992 --- groff-1.09/nroff/nroff.man Mon May 17 18:04:35 1993 *************** *** 5,9 **** .B @g@nroff [ ! .B \-hi ] [ --- 5,12 ---- .B @g@nroff [ ! .B \-h ! ] ! [ ! .B \-i ] [ *************** *** 45,56 **** .B \-h option. ! Other options are as described in .BR @g@troff (@MAN1EXT@). ! In addition the .BR \-e , .B \-q ! and ! .B \-s ! options are silently ignored. .SH "SEE ALSO" .BR groff (@MAN1EXT@), --- 48,67 ---- .B \-h option. ! The ! .BR \-i , ! .BR \-n , ! .BR \-m , ! .B \-o ! and ! .B \-r ! options have the effect described in .BR @g@troff (@MAN1EXT@). ! In addition ! .B @g@nroff ! silently ignores options of .BR \-e , .B \-q ! or ! .BR \-s . .SH "SEE ALSO" .BR groff (@MAN1EXT@), diff -rc2N groff-1.08/nroff/nroff.sh groff-1.09/nroff/nroff.sh *** groff-1.08/nroff/nroff.sh Fri Apr 2 11:53:27 1993 --- groff-1.09/nroff/nroff.sh Sat Jul 3 09:11:33 1993 *************** *** 30,33 **** --- 30,37 ---- # ignore other devices ;; + -u*) + # Solaris 2.2 `man' uses -u0; ignore it, + # since `less' and `more' can use the emboldening info. + ;; --) shift diff -rc2N groff-1.08/pfbtops/pfbtops.c groff-1.09/pfbtops/pfbtops.c *** groff-1.08/pfbtops/pfbtops.c Fri Jun 28 09:42:02 1991 --- groff-1.09/pfbtops/pfbtops.c Mon Apr 19 19:28:37 1993 *************** *** 4,9 **** /* Binary bytes per output line. */ ! #define BYTES_PER_LINE (79/2) ! #define HEX_DIGITS "0123456789ABCDEF" static char *program_name; --- 4,9 ---- /* Binary bytes per output line. */ ! #define BYTES_PER_LINE (64/2) ! #define HEX_DIGITS "0123456789abcdef" static char *program_name; diff -rc2N groff-1.08/pic/common.cc groff-1.09/pic/common.cc *** groff-1.08/pic/common.cc Mon Aug 3 11:26:57 1992 --- groff-1.09/pic/common.cc Thu May 6 21:35:46 1993 *************** *** 420,423 **** --- 420,425 ---- distance dist = end - start; double length = hypot(dist); + if (length == 0.0) + return; double pos = 0.0; for (;;) { diff -rc2N groff-1.08/pic/lex.cc groff-1.09/pic/lex.cc *** groff-1.08/pic/lex.cc Tue Mar 30 20:47:50 1993 --- groff-1.09/pic/lex.cc Mon Feb 14 08:42:45 1994 *************** *** 155,159 **** } ! // Character respresenting $1. Must be illegal input character. #define ARG1 14 --- 155,159 ---- } ! // Character representing $1. Must be illegal input character. #define ARG1 14 *************** *** 430,515 **** int token; } table[] = { ! "Here", HERE, ! "above", ABOVE, ! "aligned", ALIGNED, ! "and", AND, ! "arc", ARC, ! "arrow", ARROW, ! "at", AT, ! "atan2", ATAN2, ! "below", BELOW, ! "between", BETWEEN, ! "bottom", BOTTOM, ! "box", BOX, ! "by", BY, ! "ccw", CCW, ! "center", CENTER, ! "chop", CHOP, ! "circle", CIRCLE, ! "command", COMMAND, ! "copy", COPY, ! "cos", COS, ! "cw", CW, ! "dashed", DASHED, ! "define", DEFINE, ! "diam", DIAMETER, ! "diameter", DIAMETER, ! "do", DO, ! "dotted", DOTTED, ! "down", DOWN, ! "ellipse", ELLIPSE, ! "else", ELSE, ! "end", END, ! "exp", EXP, ! "fill", FILL, ! "filled", FILL, ! "for", FOR, ! "from", FROM, ! "height", HEIGHT, ! "ht", HEIGHT, ! "if", IF, ! "int", INT, ! "invis", INVISIBLE, ! "invisible", INVISIBLE, ! "last", LAST, ! "left", LEFT, ! "line", LINE, ! "ljust", LJUST, ! "log", LOG, ! "lower", LOWER, ! "max", K_MAX, ! "min", K_MIN, ! "move", MOVE, ! "of", OF, ! "plot", PLOT, ! "print", PRINT, ! "rad", RADIUS, ! "radius", RADIUS, ! "rand", RAND, ! "reset", RESET, ! "right", RIGHT, ! "rjust", RJUST, ! "same", SAME, ! "sh", SH, ! "sin", SIN, ! "spline", SPLINE, ! "sprintf", SPRINTF, ! "sqrt", SQRT, ! "start", START, ! "the", THE, ! "then", THEN, ! "thick", THICKNESS, ! "thickness", THICKNESS, ! "thru", THRU, ! "to", TO, ! "top", TOP, ! "undef", UNDEF, ! "until", UNTIL, ! "up", UP, ! "upper", UPPER, ! "way", WAY, ! "wid", WIDTH, ! "width", WIDTH, ! "with", WITH, }; --- 430,515 ---- int token; } table[] = { ! { "Here", HERE }, ! { "above", ABOVE }, ! { "aligned", ALIGNED }, ! { "and", AND }, ! { "arc", ARC }, ! { "arrow", ARROW }, ! { "at", AT }, ! { "atan2", ATAN2 }, ! { "below", BELOW }, ! { "between", BETWEEN }, ! { "bottom", BOTTOM }, ! { "box", BOX }, ! { "by", BY }, ! { "ccw", CCW }, ! { "center", CENTER }, ! { "chop", CHOP }, ! { "circle", CIRCLE }, ! { "command", COMMAND }, ! { "copy", COPY }, ! { "cos", COS }, ! { "cw", CW }, ! { "dashed", DASHED }, ! { "define", DEFINE }, ! { "diam", DIAMETER }, ! { "diameter", DIAMETER }, ! { "do", DO }, ! { "dotted", DOTTED }, ! { "down", DOWN }, ! { "ellipse", ELLIPSE }, ! { "else", ELSE }, ! { "end", END }, ! { "exp", EXP }, ! { "fill", FILL }, ! { "filled", FILL }, ! { "for", FOR }, ! { "from", FROM }, ! { "height", HEIGHT }, ! { "ht", HEIGHT }, ! { "if", IF }, ! { "int", INT }, ! { "invis", INVISIBLE }, ! { "invisible", INVISIBLE }, ! { "last", LAST }, ! { "left", LEFT }, ! { "line", LINE }, ! { "ljust", LJUST }, ! { "log", LOG }, ! { "lower", LOWER }, ! { "max", K_MAX }, ! { "min", K_MIN }, ! { "move", MOVE }, ! { "of", OF }, ! { "plot", PLOT }, ! { "print", PRINT }, ! { "rad", RADIUS }, ! { "radius", RADIUS }, ! { "rand", RAND }, ! { "reset", RESET }, ! { "right", RIGHT }, ! { "rjust", RJUST }, ! { "same", SAME }, ! { "sh", SH }, ! { "sin", SIN }, ! { "spline", SPLINE }, ! { "sprintf", SPRINTF }, ! { "sqrt", SQRT }, ! { "start", START }, ! { "the", THE }, ! { "then", THEN }, ! { "thick", THICKNESS }, ! { "thickness", THICKNESS }, ! { "thru", THRU }, ! { "to", TO }, ! { "top", TOP }, ! { "undef", UNDEF }, ! { "until", UNTIL }, ! { "up", UP }, ! { "upper", UPPER }, ! { "way", WAY }, ! { "wid", WIDTH }, ! { "width", WIDTH }, ! { "with", WITH }, }; diff -rc2N groff-1.08/pic/main.cc groff-1.09/pic/main.cc *** groff-1.08/pic/main.cc Tue Sep 22 19:54:04 1992 --- groff-1.09/pic/main.cc Thu May 27 23:29:57 1993 *************** *** 607,611 **** if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! exit(0); } --- 607,611 ---- if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! return 0; } diff -rc2N groff-1.08/pic/make-dos-dist groff-1.09/pic/make-dos-dist *** groff-1.08/pic/make-dos-dist Mon Jul 6 18:43:31 1992 --- groff-1.09/pic/make-dos-dist Thu May 27 20:57:13 1993 *************** *** 134,137 **** --- 134,138 ---- #include #include + #include #ifdef SWITCHAR *************** *** 148,151 **** --- 149,158 ---- #endif + #ifdef isascii + #define ISASCII(c) isascii(c) + #else + #define ISASCII(c) (1) + #endif + int getopt(argc, argv, opts) int argc; *************** *** 227,233 **** } } ! optopt = c = argv[optind][sp]; #ifdef CASE_INSENSITIVE_OPTIONS ! if (isascii(c) && isupper(c)) optopt = c = tolower(c); #endif --- 234,240 ---- } } ! optopt = c = (unsigned char)argv[optind][sp]; #ifdef CASE_INSENSITIVE_OPTIONS ! if (ISASCII(c) && isupper(c)) optopt = c = tolower(c); #endif diff -rc2N groff-1.08/pic/object.h groff-1.09/pic/object.h *** groff-1.08/pic/object.h Mon Aug 3 11:26:13 1992 --- groff-1.09/pic/object.h Thu May 27 22:00:00 1993 *************** *** 111,115 **** }; ! struct saved_state : graphics_state { saved_state *prev; PTABLE(place) *tbl; --- 111,115 ---- }; ! struct saved_state : public graphics_state { saved_state *prev; PTABLE(place) *tbl; diff -rc2N groff-1.08/pic/pic.cc groff-1.09/pic/pic.cc *** groff-1.08/pic/pic.cc Tue Apr 13 16:21:31 1993 --- groff-1.09/pic/pic.cc Sun Feb 13 10:26:46 1994 *************** *** 3130,3155 **** int scaled; // non-zero if val should be multiplied by scale } defaults_table[] = { ! "arcrad", .25, 1, ! "arrowht", .1, 1, ! "arrowwid", .05, 1, ! "circlerad", .25, 1, ! "boxht", .5, 1, ! "boxwid", .75, 1, ! "boxrad", 0.0, 1, ! "dashwid", .05, 1, ! "ellipseht", .5, 1, ! "ellipsewid", .75, 1, ! "moveht", .5, 1, ! "movewid", .5, 1, ! "lineht", .5, 1, ! "linewid", .5, 1, ! "textht", 0.0, 1, ! "textwid", 0.0, 1, ! "scale", 1.0, 0, ! "linethick", -1.0, 0, // in points ! "fillval", .5, 0, ! "arrowhead", 1.0, 0, ! "maxpswid", 8.5, 0, ! "maxpsht", 11.0, 0, }; --- 3130,3155 ---- int scaled; // non-zero if val should be multiplied by scale } defaults_table[] = { ! { "arcrad", .25, 1 }, ! { "arrowht", .1, 1 }, ! { "arrowwid", .05, 1 }, ! { "circlerad", .25, 1 }, ! { "boxht", .5, 1 }, ! { "boxwid", .75, 1 }, ! { "boxrad", 0.0, 1 }, ! { "dashwid", .05, 1 }, ! { "ellipseht", .5, 1 }, ! { "ellipsewid", .75, 1 }, ! { "moveht", .5, 1 }, ! { "movewid", .5, 1 }, ! { "lineht", .5, 1 }, ! { "linewid", .5, 1 }, ! { "textht", 0.0, 1 }, ! { "textwid", 0.0, 1 }, ! { "scale", 1.0, 0 }, ! { "linethick", -1.0, 0 }, // in points ! { "fillval", .5, 0 }, ! { "arrowhead", 1.0, 0 }, ! { "maxpswid", 8.5, 0 }, ! { "maxpsht", 11.0, 0 }, }; diff -rc2N groff-1.08/pic/pic.man groff-1.09/pic/pic.man *** groff-1.08/pic/pic.man Sun Aug 9 12:49:44 1992 --- groff-1.09/pic/pic.man Mon Feb 14 08:42:43 1994 *************** *** 37,41 **** .SH DESCRIPTION .LP ! This manual page descibes the GNU version of .BR pic , which is part of the groff document formatting system. --- 37,41 ---- .SH DESCRIPTION .LP ! This manual page describes the GNU version of .BR pic , which is part of the groff document formatting system. diff -rc2N groff-1.08/pic/pic.y groff-1.09/pic/pic.y *** groff-1.08/pic/pic.y Thu Apr 8 12:35:39 1993 --- groff-1.09/pic/pic.y Sun Feb 13 10:24:45 1994 *************** *** 1525,1550 **** int scaled; // non-zero if val should be multiplied by scale } defaults_table[] = { ! "arcrad", .25, 1, ! "arrowht", .1, 1, ! "arrowwid", .05, 1, ! "circlerad", .25, 1, ! "boxht", .5, 1, ! "boxwid", .75, 1, ! "boxrad", 0.0, 1, ! "dashwid", .05, 1, ! "ellipseht", .5, 1, ! "ellipsewid", .75, 1, ! "moveht", .5, 1, ! "movewid", .5, 1, ! "lineht", .5, 1, ! "linewid", .5, 1, ! "textht", 0.0, 1, ! "textwid", 0.0, 1, ! "scale", 1.0, 0, ! "linethick", -1.0, 0, // in points ! "fillval", .5, 0, ! "arrowhead", 1.0, 0, ! "maxpswid", 8.5, 0, ! "maxpsht", 11.0, 0, }; --- 1525,1550 ---- int scaled; // non-zero if val should be multiplied by scale } defaults_table[] = { ! { "arcrad", .25, 1 }, ! { "arrowht", .1, 1 }, ! { "arrowwid", .05, 1 }, ! { "circlerad", .25, 1 }, ! { "boxht", .5, 1 }, ! { "boxwid", .75, 1 }, ! { "boxrad", 0.0, 1 }, ! { "dashwid", .05, 1 }, ! { "ellipseht", .5, 1 }, ! { "ellipsewid", .75, 1 }, ! { "moveht", .5, 1 }, ! { "movewid", .5, 1 }, ! { "lineht", .5, 1 }, ! { "linewid", .5, 1 }, ! { "textht", 0.0, 1 }, ! { "textwid", 0.0, 1 }, ! { "scale", 1.0, 0 }, ! { "linethick", -1.0, 0 }, // in points ! { "fillval", .5, 0 }, ! { "arrowhead", 1.0, 0 }, ! { "maxpswid", 8.5, 0 }, ! { "maxpsht", 11.0, 0 }, }; diff -rc2N groff-1.08/pic/troff.cc groff-1.09/pic/troff.cc *** groff-1.08/pic/troff.cc Mon Jan 4 22:12:06 1993 --- groff-1.09/pic/troff.cc Sat Oct 2 20:19:13 1993 *************** *** 409,412 **** --- 409,413 ---- double ang) { + line_thickness(BAD_THICKNESS); // the text might use lines (eg in equations) int rotate_flag = 0; if (driver_extension_flag && ang != 0.0) { diff -rc2N groff-1.08/refer/TODO groff-1.09/refer/TODO *** groff-1.08/refer/TODO --- groff-1.09/refer/TODO Sat May 8 19:04:24 1993 *************** *** 0 **** --- 1,124 ---- + inline references + + Some sort of macro/subroutine that can cover several references. + + move-punctuation should ignore multiple punctuation characters. + + Make the index files machine independent. + + Allow search keys to be negated (with !) to indicate that the + reference should not contain the key. Ignore negated keys during + indexed searching. + + Provide an option with lkbib and lookbib that prints the location + (filename, position) of each reference. Need to map filename_id's + back to filenames. + + Rename join-authors to join-fields. Have a separate label-join-fields + command used by @ and #. + + Have some sort of quantifier: eg $.n#A means execute `$.n' for each + instance of an A field, setting $ to that field, and then join the + results using the join-authors command. + + no-text-in-bracket command which says not to allow post_text and + pre_text when the [] flags has been given. Useful for superscripted + footnotes. + + Make it possible to translate - to \(en in page ranges. + + Trim eign a bit. + + In indexed searching discard all numeric keys except dates. + + Allow `\ ' to separate article from first word. + + %also + + Option automatically to supply [] flags in every reference. + + See if we can avoid requiring a comma before jr. and so on + in find_last_name(). + + Cache sortified authors in authors string during tentative evaluation of + label specification. + + Possibly don't allow * and % expressions in the first part of ?:, | or + & expressions. + + Handle better the case where <> occurs inside functions and in the + first operand of ~. Or perhaps implement <> using some magic character + in the string. + + Should special treatment be given to lines beginning with . in + references? (Unix refer seems to treat them like `%'). + + Add global flag to control whether all files should be stat-ed after + loading, and whether they should be stat-ed before each search. + Perhaps make this dependent on the number of files there are. + + Option to truncate keys to truncate_len in linear searching. + + Allow multiple -f options in indxbib. + + In indxbib, possibly store common words rather than common words + filename. In this case store only words that are actually present in + the file. + + Perhaps we should put out an obnoxious copyright message when lookbib + starts up. + + Provide an option that writes a file containing just the references + actually used. Useful if you want to distribute a document. + + Have a magic token such that + %A + will print as though it were + %A + but sort as though it were + %A + Do we need this if we can specify author alternatives for sorting? + No, provided we have separate alternatives for @. + + In consider_authors when last names are ambiguous we might be able to + use just the first name and not Jr. bit. Or we might be able to + abbreviate the author. + + It ought to be possible to specify an alternative field to sort on + instead of date. (ie if there's a field giving the type of document -- + these references should sort after any years) + + Provide a way to execute a command using a command-line option. + + Option to set the label-spec as a command-line option (-L). + + Command to to specify which fields can occur multiple times: + multiple AE + + Command to specify how various fields sort: + aort-as-name A + sort-as-date D + sort-as-title T + sort-as-other O + + Command to specify which fields are author fields: + # if we don't have A use field Q + author-fields AQ + + Commands to set properties of tokens. + sortify-token \(ae ae + uppercase-token \[ae] \[AE] + + Command to set the names of months: + months january february march april may ... + + Perhaps provide some sort of macro capability: + # perhaps a macro capability + defmacro foo + annotation-field $1 + endef + + Command to control strings used in capitalization + capitalize-start \s+2 + capitalize-end \s-2 + (perhaps make these arguments to the capitalize command.) diff -rc2N groff-1.08/refer/command.cc groff-1.09/refer/command.cc *** groff-1.08/refer/command.cc Mon Aug 3 11:29:59 1992 --- groff-1.09/refer/command.cc Sun Feb 13 10:24:33 1994 *************** *** 637,686 **** const char *arg_types; } command_table[] = { ! "include", include_command, "s", ! "echo", echo_command, "s*", ! "capitalize", capitalize_command, "f?", ! "accumulate", accumulate_command, "", ! "no-accumulate", no_accumulate_command, "", ! "move-punctuation", move_punctuation_command, "", ! "no-move-punctuation", no_move_punctuation_command, "", ! "sort", sort_command, "s?", ! "no-sort", no_sort_command, "", ! "articles", articles_command, "s*", ! "database", database_command, "ss*", ! "default-database", default_database_command, "", ! "no-default-database", no_default_database_command, "", ! "bibliography", bibliography_command, "ss*", ! "annotate", annotate_command, "F?s?", ! "no-annotate", no_annotate_command, "", ! "reverse", reverse_command, "s", ! "no-reverse", no_reverse_command, "", ! "abbreviate", abbreviate_command, "ss?s?s?s?", ! "no-abbreviate", no_abbreviate_command, "", ! "search-ignore", search_ignore_command, "f?", ! "no-search-ignore", no_search_ignore_command, "", ! "search-truncate", search_truncate_command, "i?", ! "no-search-truncate", no_search_truncate_command, "", ! "discard", discard_command, "f?", ! "no-discard", no_discard_command, "", ! "label", label_command, "s", ! "abbreviate-label-ranges", abbreviate_label_ranges_command, "s?", ! "no-abbreviate-label-ranges", no_abbreviate_label_ranges_command, "", ! "label-in-reference", label_in_reference_command, "", ! "no-label-in-reference", no_label_in_reference_command, "", ! "label-in-text", label_in_text_command, "", ! "no-label-in-text", no_label_in_text_command, "", ! "sort-adjacent-labels", sort_adjacent_labels_command, "", ! "no-sort-adjacent-labels", no_sort_adjacent_labels_command, "", ! "date-as-label", date_as_label_command, "s?", ! "no-date-as-label", no_date_as_label_command, "", ! "short-label", short_label_command, "s", ! "no-short-label", no_short_label_command, "", ! "compatible", compatible_command, "", ! "no-compatible", no_compatible_command, "", ! "join-authors", join_authors_command, "sss?", ! "bracket-label", bracket_label_command, "sss", ! "separate-label-second-parts", separate_label_second_parts_command, "s", ! "et-al", et_al_command, "sii?", ! "no-et-al", no_et_al_command, "", }; --- 637,686 ---- const char *arg_types; } command_table[] = { ! { "include", include_command, "s" }, ! { "echo", echo_command, "s*" }, ! { "capitalize", capitalize_command, "f?" }, ! { "accumulate", accumulate_command, "" }, ! { "no-accumulate", no_accumulate_command, "" }, ! { "move-punctuation", move_punctuation_command, "" }, ! { "no-move-punctuation", no_move_punctuation_command, "" }, ! { "sort", sort_command, "s?" }, ! { "no-sort", no_sort_command, "" }, ! { "articles", articles_command, "s*" }, ! { "database", database_command, "ss*" }, ! { "default-database", default_database_command, "" }, ! { "no-default-database", no_default_database_command, "" }, ! { "bibliography", bibliography_command, "ss*" }, ! { "annotate", annotate_command, "F?s?" }, ! { "no-annotate", no_annotate_command, "" }, ! { "reverse", reverse_command, "s" }, ! { "no-reverse", no_reverse_command, "" }, ! { "abbreviate", abbreviate_command, "ss?s?s?s?" }, ! { "no-abbreviate", no_abbreviate_command, "" }, ! { "search-ignore", search_ignore_command, "f?" }, ! { "no-search-ignore", no_search_ignore_command, "" }, ! { "search-truncate", search_truncate_command, "i?" }, ! { "no-search-truncate", no_search_truncate_command, "" }, ! { "discard", discard_command, "f?" }, ! { "no-discard", no_discard_command, "" }, ! { "label", label_command, "s" }, ! { "abbreviate-label-ranges", abbreviate_label_ranges_command, "s?" }, ! { "no-abbreviate-label-ranges", no_abbreviate_label_ranges_command, "" }, ! { "label-in-reference", label_in_reference_command, "" }, ! { "no-label-in-reference", no_label_in_reference_command, "" }, ! { "label-in-text", label_in_text_command, "" }, ! { "no-label-in-text", no_label_in_text_command, "" }, ! { "sort-adjacent-labels", sort_adjacent_labels_command, "" }, ! { "no-sort-adjacent-labels", no_sort_adjacent_labels_command, "" }, ! { "date-as-label", date_as_label_command, "s?" }, ! { "no-date-as-label", no_date_as_label_command, "" }, ! { "short-label", short_label_command, "s" }, ! { "no-short-label", no_short_label_command, "" }, ! { "compatible", compatible_command, "" }, ! { "no-compatible", no_compatible_command, "" }, ! { "join-authors", join_authors_command, "sss?" }, ! { "bracket-label", bracket_label_command, "sss" }, ! { "separate-label-second-parts", separate_label_second_parts_command, "s" }, ! { "et-al", et_al_command, "sii?" }, ! { "no-et-al", no_et_al_command, "" }, }; diff -rc2N groff-1.08/refer/label.cc groff-1.09/refer/label.cc *** groff-1.08/refer/label.cc Tue Mar 30 18:04:45 1993 --- groff-1.09/refer/label.cc Mon Dec 13 20:02:17 1993 *************** *** 3,7 **** #endif #define YYBYACC 1 ! #line 22 "label.y" #include "refer.h" --- 3,7 ---- #endif #define YYBYACC 1 ! #line 22 "/u/jjc/groff/refer/label.y" #include "refer.h" *************** *** 104,124 **** }; ! typedef void map_t(const char *, const char *, string &); class map_expr : public unary_expr { ! map_t *func; public: ! map_expr(expression *e, map_t *f) : unary_expr(e), func(f) { } void evaluate(int, const reference &, string &, substring_position &); }; ! typedef const char *extractor_t(const char *, const char *, const char **); class extractor_expr : public unary_expr { int part; ! extractor_t *func; public: enum { BEFORE = +1, MATCH = 0, AFTER = -1 }; ! extractor_expr(expression *e, extractor_t *f, int pt) : unary_expr(e), func(f), part(pt) { } void evaluate(int, const reference &, string &, substring_position &); --- 104,124 ---- }; ! typedef void map_func(const char *, const char *, string &); class map_expr : public unary_expr { ! map_func *func; public: ! map_expr(expression *e, map_func *f) : unary_expr(e), func(f) { } void evaluate(int, const reference &, string &, substring_position &); }; ! typedef const char *extractor_func(const char *, const char *, const char **); class extractor_expr : public unary_expr { int part; ! extractor_func *func; public: enum { BEFORE = +1, MATCH = 0, AFTER = -1 }; ! extractor_expr(expression *e, extractor_func *f, int pt) : unary_expr(e), func(f), part(pt) { } void evaluate(int, const reference &, string &, substring_position &); *************** *** 201,205 **** string literals; ! #line 221 "label.y" typedef union { int num; --- 201,205 ---- string literals; ! #line 221 "/u/jjc/groff/refer/label.y" typedef union { int num; *************** *** 439,443 **** YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE ! #line 397 "label.y" /* bison defines const to be empty unless __STDC__ is defined, which it --- 439,443 ---- YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE ! #line 397 "/u/jjc/groff/refer/label.y" /* bison defines const to be empty unless __STDC__ is defined, which it *************** *** 1358,1414 **** { case 1: ! #line 250 "label.y" { parse_result = (yyvsp[0].expr ? new analyzed_expr(yyvsp[0].expr) : 0); } break; case 2: ! #line 255 "label.y" { yyval.expr = yyvsp[0].expr; } break; case 3: ! #line 257 "label.y" { yyval.expr = new conditional_expr(yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); } break; case 4: ! #line 262 "label.y" { yyval.expr = 0; } break; case 5: ! #line 264 "label.y" { yyval.expr = yyvsp[0].expr; } break; case 6: ! #line 269 "label.y" { yyval.expr = yyvsp[0].expr; } break; case 7: ! #line 271 "label.y" { yyval.expr = new alternative_expr(yyvsp[-2].expr, yyvsp[0].expr); } break; case 8: ! #line 273 "label.y" { yyval.expr = new conditional_expr(yyvsp[-2].expr, yyvsp[0].expr, 0); } break; case 9: ! #line 278 "label.y" { yyval.expr = yyvsp[0].expr; } break; case 10: ! #line 280 "label.y" { yyval.expr = new list_expr(yyvsp[-1].expr, yyvsp[0].expr); } break; case 11: ! #line 285 "label.y" { yyval.expr = yyvsp[0].expr; } break; case 12: ! #line 287 "label.y" { yyval.expr = new substitute_expr(yyvsp[-2].expr, yyvsp[0].expr); } break; case 13: ! #line 292 "label.y" { yyval.expr = new at_expr; } break; case 14: ! #line 294 "label.y" { yyval.expr = new literal_expr(literals.contents() + yyvsp[0].str.start, --- 1358,1414 ---- { case 1: ! #line 250 "/u/jjc/groff/refer/label.y" { parse_result = (yyvsp[0].expr ? new analyzed_expr(yyvsp[0].expr) : 0); } break; case 2: ! #line 255 "/u/jjc/groff/refer/label.y" { yyval.expr = yyvsp[0].expr; } break; case 3: ! #line 257 "/u/jjc/groff/refer/label.y" { yyval.expr = new conditional_expr(yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); } break; case 4: ! #line 262 "/u/jjc/groff/refer/label.y" { yyval.expr = 0; } break; case 5: ! #line 264 "/u/jjc/groff/refer/label.y" { yyval.expr = yyvsp[0].expr; } break; case 6: ! #line 269 "/u/jjc/groff/refer/label.y" { yyval.expr = yyvsp[0].expr; } break; case 7: ! #line 271 "/u/jjc/groff/refer/label.y" { yyval.expr = new alternative_expr(yyvsp[-2].expr, yyvsp[0].expr); } break; case 8: ! #line 273 "/u/jjc/groff/refer/label.y" { yyval.expr = new conditional_expr(yyvsp[-2].expr, yyvsp[0].expr, 0); } break; case 9: ! #line 278 "/u/jjc/groff/refer/label.y" { yyval.expr = yyvsp[0].expr; } break; case 10: ! #line 280 "/u/jjc/groff/refer/label.y" { yyval.expr = new list_expr(yyvsp[-1].expr, yyvsp[0].expr); } break; case 11: ! #line 285 "/u/jjc/groff/refer/label.y" { yyval.expr = yyvsp[0].expr; } break; case 12: ! #line 287 "/u/jjc/groff/refer/label.y" { yyval.expr = new substitute_expr(yyvsp[-2].expr, yyvsp[0].expr); } break; case 13: ! #line 292 "/u/jjc/groff/refer/label.y" { yyval.expr = new at_expr; } break; case 14: ! #line 294 "/u/jjc/groff/refer/label.y" { yyval.expr = new literal_expr(literals.contents() + yyvsp[0].str.start, *************** *** 1417,1429 **** break; case 15: ! #line 299 "label.y" { yyval.expr = new field_expr(yyvsp[0].num, 0); } break; case 16: ! #line 301 "label.y" { yyval.expr = new field_expr(yyvsp[-1].num, yyvsp[0].num - 1); } break; case 17: ! #line 303 "label.y" { switch (yyvsp[0].num) { --- 1417,1429 ---- break; case 15: ! #line 299 "/u/jjc/groff/refer/label.y" { yyval.expr = new field_expr(yyvsp[0].num, 0); } break; case 16: ! #line 301 "/u/jjc/groff/refer/label.y" { yyval.expr = new field_expr(yyvsp[-1].num, yyvsp[0].num - 1); } break; case 17: ! #line 303 "/u/jjc/groff/refer/label.y" { switch (yyvsp[0].num) { *************** *** 1442,1446 **** break; case 18: ! #line 319 "label.y" { yyval.expr = new format_expr('0', yyvsp[0].dig.ndigits, yyvsp[0].dig.val); --- 1442,1446 ---- break; case 18: ! #line 319 "/u/jjc/groff/refer/label.y" { yyval.expr = new format_expr('0', yyvsp[0].dig.ndigits, yyvsp[0].dig.val); *************** *** 1448,1452 **** break; case 19: ! #line 323 "label.y" { switch (yyvsp[-1].num) { --- 1448,1452 ---- break; case 19: ! #line 323 "/u/jjc/groff/refer/label.y" { switch (yyvsp[-1].num) { *************** *** 1480,1536 **** break; case 20: ! #line 354 "label.y" { yyval.expr = new truncate_expr(yyvsp[-2].expr, yyvsp[0].num); } break; case 21: ! #line 356 "label.y" { yyval.expr = new truncate_expr(yyvsp[-2].expr, -yyvsp[0].num); } break; case 22: ! #line 358 "label.y" { yyval.expr = new star_expr(yyvsp[-1].expr); } break; case 23: ! #line 360 "label.y" { yyval.expr = yyvsp[-1].expr; } break; case 24: ! #line 362 "label.y" { yyval.expr = new separator_expr(yyvsp[-1].expr); } break; case 25: ! #line 367 "label.y" { yyval.num = -1; } break; case 26: ! #line 369 "label.y" { yyval.num = yyvsp[0].num; } break; case 27: ! #line 374 "label.y" { yyval.num = yyvsp[0].num; } break; case 28: ! #line 376 "label.y" { yyval.num = yyvsp[-1].num*10 + yyvsp[0].num; } break; case 29: ! #line 381 "label.y" { yyval.dig.ndigits = 1; yyval.dig.val = yyvsp[0].num; } break; case 30: ! #line 383 "label.y" { yyval.dig.ndigits = yyvsp[-1].dig.ndigits + 1; yyval.dig.val = yyvsp[-1].dig.val*10 + yyvsp[0].num; } break; case 31: ! #line 389 "label.y" { yyval.num = 0; } break; case 32: ! #line 391 "label.y" { yyval.num = 1; } break; case 33: ! #line 393 "label.y" { yyval.num = -1; } break; --- 1480,1536 ---- break; case 20: ! #line 354 "/u/jjc/groff/refer/label.y" { yyval.expr = new truncate_expr(yyvsp[-2].expr, yyvsp[0].num); } break; case 21: ! #line 356 "/u/jjc/groff/refer/label.y" { yyval.expr = new truncate_expr(yyvsp[-2].expr, -yyvsp[0].num); } break; case 22: ! #line 358 "/u/jjc/groff/refer/label.y" { yyval.expr = new star_expr(yyvsp[-1].expr); } break; case 23: ! #line 360 "/u/jjc/groff/refer/label.y" { yyval.expr = yyvsp[-1].expr; } break; case 24: ! #line 362 "/u/jjc/groff/refer/label.y" { yyval.expr = new separator_expr(yyvsp[-1].expr); } break; case 25: ! #line 367 "/u/jjc/groff/refer/label.y" { yyval.num = -1; } break; case 26: ! #line 369 "/u/jjc/groff/refer/label.y" { yyval.num = yyvsp[0].num; } break; case 27: ! #line 374 "/u/jjc/groff/refer/label.y" { yyval.num = yyvsp[0].num; } break; case 28: ! #line 376 "/u/jjc/groff/refer/label.y" { yyval.num = yyvsp[-1].num*10 + yyvsp[0].num; } break; case 29: ! #line 381 "/u/jjc/groff/refer/label.y" { yyval.dig.ndigits = 1; yyval.dig.val = yyvsp[0].num; } break; case 30: ! #line 383 "/u/jjc/groff/refer/label.y" { yyval.dig.ndigits = yyvsp[-1].dig.ndigits + 1; yyval.dig.val = yyvsp[-1].dig.val*10 + yyvsp[0].num; } break; case 31: ! #line 389 "/u/jjc/groff/refer/label.y" { yyval.num = 0; } break; case 32: ! #line 391 "/u/jjc/groff/refer/label.y" { yyval.num = 1; } break; case 33: ! #line 393 "/u/jjc/groff/refer/label.y" { yyval.num = -1; } break; diff -rc2N groff-1.08/refer/label.y groff-1.09/refer/label.y *** groff-1.08/refer/label.y Mon Aug 3 11:29:57 1992 --- groff-1.09/refer/label.y Mon Nov 29 08:39:12 1993 *************** *** 120,140 **** }; ! typedef void map_t(const char *, const char *, string &); class map_expr : public unary_expr { ! map_t *func; public: ! map_expr(expression *e, map_t *f) : unary_expr(e), func(f) { } void evaluate(int, const reference &, string &, substring_position &); }; ! typedef const char *extractor_t(const char *, const char *, const char **); class extractor_expr : public unary_expr { int part; ! extractor_t *func; public: enum { BEFORE = +1, MATCH = 0, AFTER = -1 }; ! extractor_expr(expression *e, extractor_t *f, int pt) : unary_expr(e), func(f), part(pt) { } void evaluate(int, const reference &, string &, substring_position &); --- 120,140 ---- }; ! typedef void map_func(const char *, const char *, string &); class map_expr : public unary_expr { ! map_func *func; public: ! map_expr(expression *e, map_func *f) : unary_expr(e), func(f) { } void evaluate(int, const reference &, string &, substring_position &); }; ! typedef const char *extractor_func(const char *, const char *, const char **); class extractor_expr : public unary_expr { int part; ! extractor_func *func; public: enum { BEFORE = +1, MATCH = 0, AFTER = -1 }; ! extractor_expr(expression *e, extractor_func *f, int pt) : unary_expr(e), func(f), part(pt) { } void evaluate(int, const reference &, string &, substring_position &); diff -rc2N groff-1.08/refer/refer.cc groff-1.09/refer/refer.cc *** groff-1.08/refer/refer.cc Tue Aug 25 15:23:52 1992 --- groff-1.09/refer/refer.cc Thu May 27 23:29:38 1993 *************** *** 259,263 **** n = 0; opt = ptr; ! sprintf(strchr(buf, '\0'), "+%d", n); } strcat(buf, "D.y"); --- 259,263 ---- n = 0; opt = ptr; ! sprintf(strchr(buf, '\0'), "+%ld", n); } strcat(buf, "D.y"); *************** *** 274,278 **** if (n < 0) n = 0; ! sprintf(strchr(buf, '\0'), "-%d", n); opt = ptr; if (*opt != '\0') --- 274,278 ---- if (n < 0) n = 0; ! sprintf(strchr(buf, '\0'), "-%ld", n); opt = ptr; if (*opt != '\0') *************** *** 375,379 **** if (fflush(stdout) < 0) fatal("output error"); ! exit(0); } --- 375,379 ---- if (fflush(stdout) < 0) fatal("output error"); ! return 0; } *************** *** 423,428 **** return; } - current_filename = filename; } fprintf(outfp, ".lf 1 %s\n", filename); string line; --- 423,428 ---- return; } } + current_filename = filename; fprintf(outfp, ".lf 1 %s\n", filename); string line; diff -rc2N groff-1.08/refer/refer.man groff-1.09/refer/refer.man *** groff-1.08/refer/refer.man Fri Feb 19 22:44:12 1993 --- groff-1.09/refer/refer.man Mon Feb 14 08:42:42 1994 *************** *** 156,160 **** .TP .B \-P ! .B move-puntuation .TP .B \-S --- 156,160 ---- .TP .B \-P ! .B move-punctuation .TP .B \-S *************** *** 260,267 **** at the end, it should be separated from the last name by a comma. ! There can be multiple occurences of the .B A field. ! The order is siginificant. It is a good idea always to supply an .B A --- 260,267 ---- at the end, it should be separated from the last name by a comma. ! There can be multiple occurrences of the .B A field. ! The order is significant. It is a good idea always to supply an .B A *************** *** 358,365 **** and .BR E , ! if there is more than one occurence of a particular field in a record, only the last such field will be used. .LP ! If accent strings are used, they should follow the charater to be accented. This means that the .B AM --- 358,365 ---- and .BR E , ! if there is more than one occurernce of a particular field in a record, only the last such field will be used. .LP ! If accent strings are used, they should follow the character to be accented. This means that the .B AM *************** *** 728,732 **** .TP .BI database\ filename \fR\|.\|.\|. ! Search the bibligraphic databases .IR filename \|.\|.\|. For each --- 728,732 ---- .TP .BI database\ filename \fR\|.\|.\|. ! Search the bibliographic databases .IR filename \|.\|.\|. For each diff -rc2N groff-1.08/refer/token.cc groff-1.09/refer/token.cc *** groff-1.08/refer/token.cc Mon Aug 3 11:30:03 1992 --- groff-1.09/refer/token.cc Sun Feb 13 10:24:29 1994 *************** *** 156,160 **** { unsigned n = hash_string(tok, strlen(tok)) % TOKEN_TABLE_SIZE; ! while (n >= 0) { if (token_table[n].tok == 0) { if (++ntokens == TOKEN_TABLE_SIZE) --- 156,160 ---- { unsigned n = hash_string(tok, strlen(tok)) % TOKEN_TABLE_SIZE; ! for (;;) { if (token_table[n].tok == 0) { if (++ntokens == TOKEN_TABLE_SIZE) *************** *** 165,170 **** if (strcmp(tok, token_table[n].tok) == 0) break; ! if (--n < 0) n = TOKEN_TABLE_SIZE - 1; } token_table[n].ti.set(typ, sk, oc); --- 165,172 ---- if (strcmp(tok, token_table[n].tok) == 0) break; ! if (n == 0) n = TOKEN_TABLE_SIZE - 1; + else + --n; } token_table[n].ti.set(typ, sk, oc); *************** *** 177,181 **** { unsigned n = hash_string(start, end - start) % TOKEN_TABLE_SIZE; ! while (n >= 0) { if (token_table[n].tok == 0) break; --- 179,183 ---- { unsigned n = hash_string(start, end - start) % TOKEN_TABLE_SIZE; ! for (;;) { if (token_table[n].tok == 0) break; *************** *** 183,188 **** && memcmp(token_table[n].tok, start, end - start) == 0) return &(token_table[n].ti); ! if (--n < 0) n = TOKEN_TABLE_SIZE - 1; } return &default_token_info; --- 185,192 ---- && memcmp(token_table[n].tok, start, end - start) == 0) return &(token_table[n].ti); ! if (n == 0) n = TOKEN_TABLE_SIZE - 1; + else + --n; } return &default_token_info; diff -rc2N groff-1.08/soelim/TODO groff-1.09/soelim/TODO *** groff-1.08/soelim/TODO --- groff-1.09/soelim/TODO Fri Feb 11 12:42:42 1994 *************** *** 0 **** --- 1 ---- + Understand .pso. diff -rc2N groff-1.08/soelim/soelim.cc groff-1.09/soelim/soelim.cc *** groff-1.08/soelim/soelim.cc Mon Aug 3 11:30:57 1992 --- groff-1.09/soelim/soelim.cc Thu May 27 23:29:31 1993 *************** *** 72,76 **** if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! exit(nbad != 0); } --- 72,76 ---- if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! return nbad != 0; } diff -rc2N groff-1.08/tbl/main.cc groff-1.09/tbl/main.cc *** groff-1.08/tbl/main.cc Thu Apr 1 11:36:13 1993 --- groff-1.09/tbl/main.cc Thu May 27 23:29:47 1993 *************** *** 653,657 **** } ! struct input_entry_format : entry_format { input_entry_format *next; string width; --- 653,657 ---- } ! struct input_entry_format : public entry_format { input_entry_format *next; string width; *************** *** 1493,1497 **** if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! exit(0); } --- 1493,1497 ---- if (ferror(stdout) || fflush(stdout) < 0) fatal("output error"); ! return 0; } diff -rc2N groff-1.08/tbl/table.cc groff-1.09/tbl/table.cc *** groff-1.08/tbl/table.cc Thu Apr 1 11:35:55 1993 --- groff-1.09/tbl/table.cc Thu May 27 22:00:06 1993 *************** *** 1017,1021 **** } ! struct text_stuff : stuff { string contents; const char *filename; --- 1017,1021 ---- } ! struct text_stuff : public stuff { string contents; const char *filename; *************** *** 1047,1051 **** } ! struct single_hline_stuff : stuff { single_hline_stuff(int r); void print(table *); --- 1047,1051 ---- } ! struct single_hline_stuff : public stuff { single_hline_stuff(int r); void print(table *); *************** *** 1201,1204 **** --- 1201,1205 ---- : ncolumns(nc), flags(f), linesize(ls), decimal_point_char(dpc), nrows(0), allocated_rows(0), entry(0), entry_list(0), + entry_list_tailp(&entry_list), left_separation(0), right_separation(0), stuff_list(0), vline(0), vrule_list(0), row_is_all_lines(0), span_list(0) *************** *** 1591,1597 **** e->start_row = e->end_row = r; e->start_col = e->end_col = c; ! for (table_entry **p = &entry_list; *p; p = &(*p)->next) ! ; ! *p = e; entry[r][c] = e; } --- 1592,1597 ---- e->start_row = e->end_row = r; e->start_col = e->end_col = c; ! *entry_list_tailp = e; ! entry_list_tailp = &e->next; entry[r][c] = e; } diff -rc2N groff-1.08/tbl/table.h groff-1.09/tbl/table.h *** groff-1.08/tbl/table.h Thu Apr 1 11:36:01 1993 --- groff-1.09/tbl/table.h Thu May 27 22:00:02 1993 *************** *** 61,65 **** }; ! struct entry_format : entry_modifier { format_type type; --- 61,65 ---- }; ! struct entry_format : public entry_modifier { format_type type; *************** *** 85,88 **** --- 85,89 ---- horizontal_span *span_list; table_entry *entry_list; + table_entry **entry_list_tailp; table_entry ***entry; char **vline; diff -rc2N groff-1.08/tfmtodit/tfmtodit.cc groff-1.09/tfmtodit/tfmtodit.cc *** groff-1.08/tfmtodit/tfmtodit.cc Mon Aug 3 11:29:53 1992 --- groff-1.09/tfmtodit/tfmtodit.cc Sun Feb 13 10:24:34 1994 *************** *** 653,664 **** int i; } lig_chars[] = { ! "f", -1, ! "i", -1, ! "l", -1, ! "ff", -1, ! "fi", -1, ! "fl", -1, ! "Fi", -1, ! "Fl", -1, }; --- 653,664 ---- int i; } lig_chars[] = { ! { "f", -1 }, ! { "i", -1 }, ! { "l", -1 }, ! { "ff", -1 }, ! { "fi", -1 }, ! { "fl", -1 }, ! { "Fi", -1 }, ! { "Fl", -1 }, }; *************** *** 673,681 **** const char *ch; } lig_table[] = { ! CH_f, CH_f, CH_ff, "ff", ! CH_f, CH_i, CH_fi, "fi", ! CH_f, CH_l, CH_fl, "fl", ! CH_ff, CH_i, CH_ffi, "ffi", ! CH_ff, CH_l, CH_ffl, "ffl", }; --- 673,681 ---- const char *ch; } lig_table[] = { ! { CH_f, CH_f, CH_ff, "ff" }, ! { CH_f, CH_i, CH_fi, "fi" }, ! { CH_f, CH_l, CH_fl, "fl" }, ! { CH_ff, CH_i, CH_ffi, "ffi" }, ! { CH_ff, CH_l, CH_ffl, "ffl" }, }; *************** *** 759,763 **** } if (t.get_param(1, &n) && n != 0) ! printf("slant %f\n", atan2(n/double(1<<20), 1.0)*180.0/M_PI); int xheight; if (!t.get_param(5, &xheight)) --- 759,763 ---- } if (t.get_param(1, &n) && n != 0) ! printf("slant %f\n", atan2(n/double(1<<20), 1.0)*180.0/PI); int xheight; if (!t.get_param(5, &xheight)) diff -rc2N groff-1.08/tfmtodit/tfmtodit.man groff-1.09/tfmtodit/tfmtodit.man *** groff-1.08/tfmtodit/tfmtodit.man Thu Aug 6 12:27:08 1992 --- groff-1.09/tfmtodit/tfmtodit.man Mon Feb 14 08:42:37 1994 *************** *** 140,144 **** .Tp \w'\fB@FONTDIR@/devdvi/DESC'u+2n .B @FONTDIR@/devdvi/DESC ! Device desciption file. .TP .BI @FONTDIR@/devdvi/ F --- 140,144 ---- .Tp \w'\fB@FONTDIR@/devdvi/DESC'u+2n .B @FONTDIR@/devdvi/DESC ! Device description file. .TP .BI @FONTDIR@/devdvi/ F diff -rc2N groff-1.08/tmac/doc-ditroff groff-1.09/tmac/doc-ditroff *** groff-1.08/tmac/doc-ditroff Mon Apr 13 10:25:03 1992 --- groff-1.09/tmac/doc-ditroff Wed Feb 16 16:55:54 1994 *************** *** 35,38 **** --- 35,40 ---- .\" %beginstrip% .\" + .\" -rC1 numbers pages continuously; initialize to avoid warnings + .if \n(.g .if !rC .nr C 0 .ds aD \fI\s10 .ds aR \f(CO\s10 *************** *** 134,148 **** .wh 0 hM .wh -1.25i fM ! .\" .tm Here is gX == \\n(gX .ie \\n(gX==1 \{\ . rm n1 ! . if \\n(.g .br ! . if !\\n(.g .bp .\} .el \{\ ! . if \\n(.g .br ! . if !\\n(.g 'bp .\} ! .nr % 1 .nr gX 0 .em lM --- 136,154 ---- .wh 0 hM .wh -1.25i fM ! .nr nL \\n(nl .ie \\n(gX==1 \{\ . rm n1 ! . bp .\} .el \{\ ! ' bp .\} ! .\" Don't set the page number if this is the first page, ! .\" in case the user has used -n. ! .if \\n(nL>0 \{\ ! . if !\\nC \{\ ! . nr % 1 ! . \} ! .\} .nr gX 0 .em lM diff -rc2N groff-1.08/tmac/groff_ms.man groff-1.09/tmac/groff_ms.man *** groff-1.08/tmac/groff_ms.man Thu Aug 6 12:27:08 1992 --- groff-1.09/tmac/groff_ms.man Sun Jan 9 16:16:17 1994 *************** *** 15,19 **** This manual page describes the GNU version of the ms macros, which is part of the groff document formatting system. ! The groff ms macros are intended to be compatible with the 4.3 .SM BSD Unix ms macros subject to the following limitations: --- 15,20 ---- This manual page describes the GNU version of the ms macros, which is part of the groff document formatting system. ! The groff ms macros are intended to be compatible with the ! documented behaviour of the 4.3 .SM BSD Unix ms macros subject to the following limitations: *************** *** 162,165 **** --- 163,173 ---- respectively; however, if any of these registers has been defined before initialization, it will not be set. + The hyphenation flags (as set by the + .B .hy + request) are set from the + .B HY + register; + if this has not been defined at initialization, + it will be set to 14. .LP Right-aligned displays are available with diff -rc2N groff-1.08/tmac/tmac.X groff-1.09/tmac/tmac.X *** groff-1.08/tmac/tmac.X Wed Sep 16 06:29:49 1992 --- groff-1.09/tmac/tmac.X Sat Feb 12 10:55:43 1994 *************** *** 12,15 **** --- 12,16 ---- .char \(ul \v'.25m'\D'l .5m 0'\v'-.25m' .char \(br \v'.25m'\D'l 0 -1m'\v'.75m' + .char \(rn \v'-.75m'\D'l .5m 0'\v'.75m' .char ~ \v'-.55m'\\s[\\n(.s/2u]\v'.2m'\(ti\v'-.2m'\s0\v'.55m' .char ^ \v'-.55m'\\s[\\n(.s/2u]\v'.3m'\(ha\v'-.3m'\s0\v'.55m' *************** *** 41,45 **** .if !c\(bq .tr \(bq, .if !c\(aq .tr \(aq' ! .if '\*(.T'X100' .char \(rn \h'-\w'\(sr'u'\(rn\h'\w'\(sr'u' .if !\n(_C .mso tmac.pspic .cp \n(_C --- 42,46 ---- .if !c\(bq .tr \(bq, .if !c\(aq .tr \(aq' ! .if '\*(.T'X100' .char \[radicalex] \h'-\w'\(sr'u'\[radicalex]\h'\w'\(sr'u' .if !\n(_C .mso tmac.pspic .cp \n(_C diff -rc2N groff-1.08/tmac/tmac.dvi groff-1.09/tmac/tmac.dvi *** groff-1.08/tmac/tmac.dvi Sat Aug 15 13:47:24 1992 --- groff-1.09/tmac/tmac.dvi Sat Feb 12 11:09:24 1994 *************** *** 9,18 **** .char \[ul] \R'dvi-char_ \w'M'=\w'i''\\*[dvi-char_\\n[dvi-char_]] .\" Normally use a rule. ! .ds dvi-char_0 \v'.23m'\D'R .5m .04m'\v'-.04m'\v'-.23m' .\" In font CW use a real _ character. .ds dvi-char_1 _ ! .if !c\[rn] .char \[rn] \D'R .5m -.04m'\v'.04m' .if !c\[br] .char \[br] \Z'\v'.25m'\D'R .04m -1m'' ! .if !c\[ru] .char \[ru] \v'-.02m'\D'R .5m .04m'\v'-.04m'\v'.02m' .if !c\[co] .char \[co] \z\(ci\h'\w'\(ci'u-\w'c'u/2u'c\h'\w'\(ci'u-\w'c'u/2u' .if !c\[rg] .char \[rg] \z\(ci\h'\w'\(ci'u-\w'r'u/2u'r\h'\w'\(ci'u-\w'r'u/2u' --- 9,20 ---- .char \[ul] \R'dvi-char_ \w'M'=\w'i''\\*[dvi-char_\\n[dvi-char_]] .\" Normally use a rule. ! .\" This is designed so that \(ul, \(rn and \(br form corners. ! .ds dvi-char_0 \Z'\v'.23m'\D'R .54m .04m''\h'.5m' .\" In font CW use a real _ character. .ds dvi-char_1 _ ! .if !c\[radicalex] .char \[radicalex] \D'R .5m -.04m'\v'.04m' .if !c\[br] .char \[br] \Z'\v'.25m'\D'R .04m -1m'' ! .if !c\[ru] .char \[ru] \Z'\v'-.02m'\D'R .54m .04m''\h'.5m' ! .if !c\[rn] .char \[rn] \Z'\v'-.77m'\D'R .54m .04m''\h'.5m' .if !c\[co] .char \[co] \z\(ci\h'\w'\(ci'u-\w'c'u/2u'c\h'\w'\(ci'u-\w'c'u/2u' .if !c\[rg] .char \[rg] \z\(ci\h'\w'\(ci'u-\w'r'u/2u'r\h'\w'\(ci'u-\w'r'u/2u' *************** *** 125,131 **** .dvi-achar \('y \' y y .dvi-achar \(:y \(ad y y ! .char \(,C \o'\(acc' .hcode \(,Cc ! .char \(,c \o'\(acc' .hcode \(,cc .cp \n(_C --- 127,133 ---- .dvi-achar \('y \' y y .dvi-achar \(:y \(ad y y ! .if !c\(,C .char \(,C \o'\(acC' .hcode \(,Cc ! .if !c\(,c .char \(,c \o'\(acc' .hcode \(,cc .cp \n(_C diff -rc2N groff-1.08/tmac/tmac.e groff-1.09/tmac/tmac.e *** groff-1.08/tmac/tmac.e Mon Apr 5 23:15:30 1993 --- groff-1.09/tmac/tmac.e Sat Oct 23 10:03:46 1993 *************** *** 477,481 **** .de hl \" *** draw horizontal line .br ! \l'\\n(.lu-\\n(.iu' .sp .. --- 477,483 ---- .de hl \" *** draw horizontal line .br ! .ie \n(.g .do nr _I \\n[.in] ! .el .nr _I \\n(.i ! \l'\\n(.lu-\\n(_Iu' .sp .. *************** *** 654,658 **** . @F \\n(sf . sz \\n(sp ! . if \\$3>0 \ . $\\$3 . if \w"\\$2">0 \\$2. --- 656,660 ---- . @F \\n(sf . sz \\n(sp ! . if 0\\$3 \ . $\\$3 . if \w"\\$2">0 \\$2. *************** *** 696,700 **** .@D 4 \\$1 \\$2 .@( - .nr ?T 0 .. .de )z \" *** end floating keep --- 698,701 ---- *************** *** 756,760 **** .rm \\$1 .ev - .nr ?T 0 .. .de (t \" XXX temp ref to (z --- 757,760 ---- diff -rc2N groff-1.08/tmac/tmac.ps groff-1.09/tmac/tmac.ps *** groff-1.08/tmac/tmac.ps Sat Aug 15 13:48:22 1992 --- groff-1.09/tmac/tmac.ps Sat Feb 12 10:55:50 1994 *************** *** 22,26 **** .ftr C CR .cflags 8 \(an ! .char \(rn \h'-\w'\(sr'u'\(rn\h'\w'\(sr'u' .char \(mo \h'.08m'\(mo\h'-.08m' .char \(nm \h'.08m'\(nm\h'-.08m' --- 22,26 ---- .ftr C CR .cflags 8 \(an ! .char \[radicalex] \h'-\w'\(sr'u'\[radicalex]\h'\w'\(sr'u' .char \(mo \h'.08m'\(mo\h'-.08m' .char \(nm \h'.08m'\(nm\h'-.08m' *************** *** 39,42 **** --- 39,43 ---- .if !c\[ul] .char \[ul] \v'.25m'\D'l .5m 0'\v'-.25m' .if !c\[br] .char \[br] \Z'\v'.25m'\D'l 0 -1m'' + .if !c\[rn] .char \[rn] \v'-.75m'\D'l .5m 0'\v'.75m' .if !c\[or] .char \[or] \h'.1m'\Z'\D'l 0 -.675m''\h'.1m' .if !c\[Fi] .char \[Fi] ffi diff -rc2N groff-1.08/tmac/tmac.pspic groff-1.09/tmac/tmac.pspic *** groff-1.08/tmac/tmac.pspic Mon Mar 16 10:29:06 1992 --- groff-1.09/tmac/tmac.pspic Wed Feb 9 09:26:47 1994 *************** *** 12,15 **** --- 12,29 ---- .. .de PSPIC + .nr ps-offset-mode 0 + .if '\\$1'-L' \{\ + . nr ps-offset-mode 1 + . shift + .\} + .if '\\$1'-R' \{\ + . nr ps-offset-mode 2 + . shift + .\} + .if '\\$1'-I' \{\ + . nr ps-offset-mode 3 + . nr ps-offset (m;\\$2) + . shift 2 + .\} .br .sy echo .ps-bb `psbb \\$1` >/tmp/psbb\\n[$$] *************** *** 26,30 **** *\\n[ps-ht]+500/1000 . ne \\n[ps-desht]u+1v ! . nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-deswid]/2 . ie \\n[.$]>=3 .ds ps-desht \\n[ps-desht] . el .ds ps-desht \" empty --- 40,46 ---- *\\n[ps-ht]+500/1000 . ne \\n[ps-desht]u+1v ! . if \\n[ps-offset-mode]=0 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-deswid]/2 ! . if \\n[ps-offset-mode]=1 .nr ps-offset 0 ! . if \\n[ps-offset-mode]=2 .nr ps-offset \\n[.l]-\\n[.i]-\\n[ps-deswid] . ie \\n[.$]>=3 .ds ps-desht \\n[ps-desht] . el .ds ps-desht \" empty diff -rc2N groff-1.08/tmac/tmac.s groff-1.09/tmac/tmac.s *** groff-1.08/tmac/tmac.s Tue Sep 15 10:37:03 1992 --- groff-1.09/tmac/tmac.s Sun Jan 9 16:17:27 1994 *************** *** 1,2 **** --- 1,3 ---- + .\" -*- nroff -*- .ig Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. *************** *** 45,48 **** --- 46,50 ---- .. .de @init + .nr PO \\n(.o .\" a non-empty environment .ev ne *************** *** 395,399 **** .nr HM 1i .nr FM 1i - .nr PO 1i .ds LF .ds CF --- 397,400 ---- *************** *** 985,988 **** --- 986,990 ---- .ad \\n[par*adj] .par@reset-env + .par@reset .. .\" happens when the first page begins *************** *** 998,1001 **** --- 1000,1004 ---- .if !rPD .nr PD .3v>?\n(.V .if !rDD .nr DD .5v>?\n(.V + .if !rHY .nr HY 14 .if !dFAM .ds FAM \\n[.fam] .nr par*adj \\n[.j] *************** *** 1058,1064 **** .ls 1 .TA ! .hy 14 .. - .als @RT par@reset .\" This can be redefined by the user. .de TA --- 1061,1071 ---- .ls 1 .TA ! .hy \\n[HY] ! .. ! .de @RT ! .nr \\n[.ev]:pli 0 ! .nr \\n[.ev]:pri 0 ! .par@reset .. .\" This can be redefined by the user. .de TA *************** *** 1102,1111 **** . \" Divert the label so as to freeze any spaces. . di par*label ! . in 0 ! . nf \&\\$1 . di - . in - . fi . chop par*label . ti -\\n[\\n[.ev]:ai]u --- 1109,1116 ---- . \" Divert the label so as to freeze any spaces. . di par*label ! . par*push-tag-env \&\\$1 + . par*pop-tag-env . di . chop par*label . ti -\\n[\\n[.ev]:ai]u *************** *** 1118,1121 **** --- 1123,1146 ---- .\} .. + .\" We don't want margin characters to be attached when we divert + .\" the tag. Since there's no way to save and restore the current + .\" margin character, we have to switch to a new environment, taking + .\" what we need of the old environment with us. + .de par*push-tag-env + .nr par*saved-font \\n[.f] + .nr par*saved-size \\n[.s]z + .nr par*saved-ss \\n[.ss] + .ds par*saved-fam \\n[.fam] + .ev par + .nf + .TA + .ft \\n[par*saved-font] + .ps \\n[par*saved-size]u + .ss \\n[par*saved-ss] + .fam \\*[par*saved-fam] + .. + .de par*pop-tag-env + .ev + .. .de @RS .br *************** *** 1163,1167 **** .nr \\n[.ev]:li +1n .nr \\n[.ev]:ri +1n ! .par@reset .. .de @div-end!par*box-div --- 1188,1198 ---- .nr \\n[.ev]:li +1n .nr \\n[.ev]:ri +1n ! .nr par*box-in \\n[.in] ! .\" remember what 1n is, just in case the point size changes ! .nr par*box-n 1n ! .in +1n ! .ll -1n ! .lt -1n ! .ti \\n[par*box-in]u+1n .. .de @div-end!par*box-div *************** *** 1174,1178 **** --- 1205,1211 ---- .ie '\\n(.z'par*box-div' \{\ . br + . if \n[.V]>.25m .sp . di + . if \n[.V]>.25m .sp . ds@need \\n[dn] . par*box-mark-top *************** *** 1180,1192 **** . par*box-div . ev ! . nr \\n[.ev]:ri -1n ! . nr \\n[.ev]:li -1n ! . par@finish ! . par*box-draw \\n[.i]u \\n[.l]u .\} .el .@error B2 without B1 .. .de par*box-mark-top ! .ie '\\n[.z]'' .mk par*box-top .el \!.par*box-mark-top .. --- 1213,1230 ---- . par*box-div . ev ! . nr \\n[.ev]:ri -\\n[par*box-n] ! . nr \\n[.ev]:li -\\n[par*box-n] ! . in -\\n[par*box-n]u ! . ll +\\n[par*box-n]u ! . lt +\\n[par*box-n]u ! . par*box-draw \\n[.i]u \\n[.l]u-(\\n[.H]u==1n*1n) .\} .el .@error B2 without B1 .. .de par*box-mark-top ! .ie '\\n[.z]'' \{\ ! . rs ! . mk par*box-top ! .\} .el \!.par*box-mark-top .. *************** *** 1196,1199 **** --- 1234,1239 ---- . nr par*box-ll \\n[.l] . nr par*box-vpt \\n[.vpt] + . nr par*box-ad \\n[.j] + . ad l . vpt 0 . in \\$1 *************** *** 1209,1212 **** --- 1249,1253 ---- . ll \\n[par*box-ll]u . vpt \\n[par*box-vpt] + . ad \\n[par*box-ad] .\} .el \!.par*box-draw \\$1 \\$2 diff -rc2N groff-1.08/troff/TODO groff-1.09/troff/TODO *** groff-1.08/troff/TODO Thu Apr 1 10:55:36 1993 --- groff-1.09/troff/TODO Mon Feb 14 08:42:36 1994 *************** *** 71,75 **** Provide some way to upcase or downcase strings. ! Support non-uniformly scaleable fonts. Perhaps associate a suffix with a particular range of sizes. eg sizesuffix .display 14-512 --- 71,75 ---- Provide some way to upcase or downcase strings. ! Support non-uniformly scalable fonts. Perhaps associate a suffix with a particular range of sizes. eg sizesuffix .display 14-512 *************** *** 111,115 **** Provide some way for a macro to tell whether it was called with `'' or ! `.'. This would be useful for implementing a tracing macro packge. Request to remove an environment. (Maintain a count of the references --- 111,115 ---- Provide some way for a macro to tell whether it was called with `'' or ! `.'. This would be useful for implementing a tracing macro package. Request to remove an environment. (Maintain a count of the references *************** *** 131,132 **** --- 131,136 ---- More thorough range checking. + + Provide syntax for octal and hexadecimal numeric constants. Perhaps + o#100 and x#7f as per Scheme. Or perhaps PostScript 16#7f. Ambiguity + between whether `c' is treated as digit or scaling indicator. diff -rc2N groff-1.08/troff/charinfo.h groff-1.09/troff/charinfo.h *** groff-1.08/troff/charinfo.h Mon Nov 16 09:24:07 1992 --- groff-1.09/troff/charinfo.h Sun Feb 13 10:44:24 1994 *************** *** 146,150 **** { return (transparent_throughput && !transparent_translate ! ? TRANSLATE_NONE : special_translation); } --- 146,150 ---- { return (transparent_throughput && !transparent_translate ! ? int(TRANSLATE_NONE) : special_translation); } diff -rc2N groff-1.08/troff/dictionary.cc groff-1.09/troff/dictionary.cc *** groff-1.08/troff/dictionary.cc Tue Feb 23 17:32:52 1993 --- groff-1.09/troff/dictionary.cc Mon Apr 26 11:41:01 1993 *************** *** 113,117 **** break; r = int(table[i].s.hash() % size); ! } while ((i <= r && r < j) || (j < i && i <= r)); table[j] = table[i]; } --- 113,117 ---- break; r = int(table[i].s.hash() % size); ! } while ((i <= r && r < j) || (r < j && j < i) || (j < i && i <= r)); table[j] = table[i]; } diff -rc2N groff-1.08/troff/div.cc groff-1.09/troff/div.cc *** groff-1.08/troff/div.cc Tue Apr 13 10:30:58 1993 --- groff-1.09/troff/div.cc Sat Feb 12 11:46:48 1994 *************** *** 36,39 **** --- 36,41 ---- int done_end_macro = 0; // the end macro (if any) has finished int seen_last_page_ejector = 0; // seen the LAST_PAGE_EJECTOR cookie + int last_page_number = 0; // if > 0, the number of the last page + // specified with -o static int began_page_in_end_macro = 0; // a new page was begun during the end macro *************** *** 513,517 **** } ! NO_RETURN void cleanup_and_exit(int exit_code) { if (the_output) { --- 515,519 ---- } ! void cleanup_and_exit(int exit_code) { if (the_output) { *************** *** 534,537 **** --- 536,541 ---- began_page_in_end_macro = 1; } + if (last_page_number > 0 && page_number == last_page_number) + cleanup_and_exit(0); if (!the_output) init_output(); *************** *** 604,608 **** { hunits n; ! if (!has_arg() || !get_hunits(&n, 'v', topdiv->page_offset)) n = topdiv->prev_page_offset; topdiv->prev_page_offset = topdiv->page_offset; --- 608,615 ---- { hunits n; ! // The troff manual says that the default scaling indicator is v, ! // but it is in fact m: v wouldn't make sense for a horizontally ! // oriented request. ! if (!has_arg() || !get_hunits(&n, 'm', topdiv->page_offset)) n = topdiv->prev_page_offset; topdiv->prev_page_offset = topdiv->page_offset; diff -rc2N groff-1.08/troff/div.h groff-1.09/troff/div.h *** groff-1.08/troff/div.h Fri Apr 2 11:04:14 1993 --- groff-1.09/troff/div.h Sat Feb 12 11:46:49 1994 *************** *** 132,135 **** --- 132,136 ---- extern int exit_started; extern int done_end_macro; + extern int last_page_number; extern int seen_last_page_ejector; diff -rc2N groff-1.08/troff/input.cc groff-1.09/troff/input.cc *** groff-1.08/troff/input.cc Fri Apr 16 22:38:27 1993 --- groff-1.09/troff/input.cc Sun Feb 13 10:00:51 1994 *************** *** 38,41 **** --- 38,52 ---- #include "posix.h" + #ifdef ISATTY_MISSING + #undef isatty + #define isatty(n) (1) + #else /* not ISATTY_MISSING */ + #ifndef isatty + extern "C" { + int isatty(int); + } + #endif /* not isatty */ + #endif /* not ISATTY_MISSING */ + #define USAGE_EXIT_CODE 1 #define MACRO_PREFIX "tmac." *************** *** 70,78 **** --- 81,92 ---- int break_flag = 0; static int backtrace_flag = 0; + #ifndef POPEN_MISSING char *pipe_command = 0; + #endif charinfo *charset_table[256]; static int warning_mask = DEFAULT_WARNING_MASK; static int inhibit_errors = 0; + static int ignoring = 0; static void enable_warning(const char *); *************** *** 82,86 **** static symbol end_macro_name; static int compatible_flag = 0; - static void process_input_stack(); int ascii_output_flag = 0; int suppress_output_flag = 0; --- 96,99 ---- *************** *** 89,92 **** --- 102,110 ---- static int get_copy(node**, int = 0); + static void copy_mode_error(const char *, + const errarg & = empty_errarg, + const errarg & = empty_errarg, + const errarg & = empty_errarg); + static symbol read_escape_name(); static void interpolate_string(symbol); *************** *** 226,234 **** int lineno; const char *filename; int newline_flag; enum { BUF_SIZE = 512 }; unsigned char buf[BUF_SIZE]; public: ! file_iterator(FILE *, const char *); ~file_iterator(); int fill(node **); --- 244,254 ---- int lineno; const char *filename; + int popened; int newline_flag; enum { BUF_SIZE = 512 }; unsigned char buf[BUF_SIZE]; + void close(); public: ! file_iterator(FILE *, const char *, int = 0); ~file_iterator(); int fill(node **); *************** *** 241,246 **** }; ! file_iterator::file_iterator(FILE *f, const char *fn) ! : fp(f), filename(fn), lineno(1), newline_flag(0) { } --- 261,266 ---- }; ! file_iterator::file_iterator(FILE *f, const char *fn, int po) ! : fp(f), filename(fn), lineno(1), newline_flag(0), popened(po) { } *************** *** 248,255 **** file_iterator::~file_iterator() { ! if (fp != stdin) ! fclose(fp); ! else clearerr(stdin); } --- 268,284 ---- file_iterator::~file_iterator() { ! close(); ! } ! ! void file_iterator::close() ! { ! if (fp == stdin) clearerr(stdin); + #ifndef POPEN_MISSING + else if (popened) + pclose(fp); + #endif /* not POPEN_MISSING */ + else + fclose(fp); } *************** *** 261,272 **** int file_iterator::next_file(FILE *f, const char *s) { ! if (fp != stdin) ! fclose(fp); ! else ! clearerr(stdin); filename = s; fp = f; lineno = 1; newline_flag = 0; ptr = 0; eptr = 0; --- 290,299 ---- int file_iterator::next_file(FILE *f, const char *s) { ! close(); filename = s; fp = f; lineno = 1; newline_flag = 0; + popened = 0; ptr = 0; eptr = 0; *************** *** 331,335 **** void file_iterator::backtrace() { ! errprint("%1:%2: backtrace: file `%1'\n", filename, lineno); } --- 358,363 ---- void file_iterator::backtrace() { ! errprint("%1:%2: backtrace: %3 `%1'\n", filename, lineno, ! popened ? "process" : "file"); } *************** *** 590,594 **** switch (c) { case EOF: ! error("end of input in escape name"); return '\0'; default: --- 618,622 ---- switch (c) { case EOF: ! copy_mode_error("end of input in escape name"); return '\0'; default: *************** *** 601,605 **** case '\001': case '\b': ! error("%1 is not allowed in an escape name", input_char_description(c)); return '\0'; } --- 629,634 ---- case '\001': case '\b': ! copy_mode_error("%1 is not allowed in an escape name", ! input_char_description(c)); return '\0'; } *************** *** 656,660 **** if (buf == abuf) { if (i == 0) { ! error("empty escape name"); return NULL_SYMBOL; } --- 685,689 ---- if (buf == abuf) { if (i == 0) { ! copy_mode_error("empty escape name"); return NULL_SYMBOL; } *************** *** 1823,1827 **** } ! NO_RETURN void exit_troff() { exit_started = 1; --- 1852,1856 ---- } ! void exit_troff() { exit_started = 1; *************** *** 1995,1999 **** } ! static void process_input_stack() { int_stack trap_bol_stack; --- 2024,2028 ---- } ! void process_input_stack() { int_stack trap_bol_stack; *************** *** 2830,2833 **** --- 2859,2863 ---- macro arg; int quote_input_level = 0; + int done_tab_warning = 0; if (c == '\"') { quote_input_level = input_stack::get_level(); *************** *** 2849,2854 **** if (c == 0) arg.append(n); ! else arg.append(c); c = get_copy(&n); } --- 2879,2889 ---- if (c == 0) arg.append(n); ! else { ! if (c == '\t' && quote_input_level == 0 && !done_tab_warning) { ! warning(WARN_TAB, "tab character in unquoted macro argument"); ! done_tab_warning = 1; ! } arg.append(c); + } c = get_copy(&n); } *************** *** 2898,2901 **** --- 2933,2937 ---- { macro_iterator *mi = new macro_iterator; + int reading_from_terminal = isatty(fileno(stdin)); int had_prompt = 0; if (!tok.newline() && !tok.eof()) { *************** *** 2905,2909 **** while (c != EOF && c != '\n' && c != ' ') { if (!illegal_input_char(c)) { ! fputc(c, stderr); had_prompt = 1; } --- 2941,2946 ---- while (c != EOF && c != '\n' && c != ' ') { if (!illegal_input_char(c)) { ! if (reading_from_terminal) ! fputc(c, stderr); had_prompt = 1; } *************** *** 2915,2920 **** } } ! fputc(had_prompt ? ':' : '\007', stderr); ! fflush(stderr); input_stack::push(mi); macro mac; --- 2952,2959 ---- } } ! if (reading_from_terminal) { ! fputc(had_prompt ? ':' : '\007', stderr); ! fflush(stderr); ! } input_stack::push(mi); macro mac; *************** *** 2936,2944 **** } } input_stack::push(new string_iterator(mac)); tok.next(); } - void do_define_string(int append) { --- 2975,2984 ---- } } + if (reading_from_terminal) + clearerr(stdin); input_stack::push(new string_iterator(mac)); tok.next(); } void do_define_string(int append) { *************** *** 3090,3094 **** const char *s = nm.contents(); if (!s || *s == '\0') ! error("missing argument name"); else if (s[1] == 0 && csdigit(s[0])) input_stack::push(input_stack::get_arg(s[0] - '0')); --- 3130,3134 ---- const char *s = nm.contents(); if (!s || *s == '\0') ! copy_mode_error("missing argument name"); else if (s[1] == 0 && csdigit(s[0])) input_stack::push(input_stack::get_arg(s[0] - '0')); *************** *** 3111,3115 **** ; if (*p) ! error("bad argument name `%1'", s); else input_stack::push(input_stack::get_arg(atoi(s))); --- 3151,3155 ---- ; if (*p) ! copy_mode_error("bad argument name `%1'", s); else input_stack::push(input_stack::get_arg(atoi(s))); *************** *** 3266,3271 **** *mm = mac; } ! if (term != dot_symbol) interpolate_macro(term); else skip_line(); --- 3306,3313 ---- *mm = mac; } ! if (term != dot_symbol) { ! ignoring = 0; interpolate_macro(term); + } else skip_line(); *************** *** 3321,3325 **** --- 3363,3369 ---- void ignore() { + ignoring = 1; do_define_macro(DEFINE_IGNORE); + ignoring = 0; } *************** *** 4172,4175 **** --- 4216,4263 ---- } + // like .so but use popen() + + void pipe_source() + { + #ifdef POPEN_MISSING + error("pipes not available on this system"); + skip_line(); + #else /* not POPEN_MISSING */ + if (tok.newline() || tok.eof()) + error("missing command"); + else { + int c; + while ((c = get_copy(NULL)) == ' ' || c == '\t') + ; + int buf_size = 24; + char *buf = new char[buf_size]; + int buf_used = 0; + for (; c != '\n' && c != EOF; c = get_copy(NULL)) { + const char *s = asciify(c); + int slen = strlen(s); + if (buf_used + slen + 1> buf_size) { + char *old_buf = buf; + int old_buf_size = buf_size; + buf_size *= 2; + buf = new char[buf_size]; + memcpy(buf, old_buf, old_buf_size); + a_delete old_buf; + } + strcpy(buf + buf_used, s); + buf_used += slen; + } + buf[buf_used] = '\0'; + errno = 0; + FILE *fp = popen(buf, "r"); + if (fp) + input_stack::push(new file_iterator(fp, symbol(buf).contents(), 1)); + else + error("can't open pipe to process `%1': %2", buf, strerror(errno)); + a_delete buf; + } + tok.next(); + #endif /* not POPEN_MISSING */ + } + const char *asciify(int c) { *************** *** 4390,4393 **** --- 4478,4482 ---- get_charinfo(symbol("ul"))->set_flags(charinfo::OVERLAPS_HORIZONTALLY); get_charinfo(symbol("rn"))->set_flags(charinfo::OVERLAPS_HORIZONTALLY); + get_charinfo(symbol("radicalex"))->set_flags(charinfo::OVERLAPS_HORIZONTALLY); get_charinfo(symbol("ru"))->set_flags(charinfo::OVERLAPS_HORIZONTALLY); get_charinfo(symbol("br"))->set_flags(charinfo::OVERLAPS_VERTICALLY); *************** *** 4488,4491 **** --- 4577,4581 ---- ci->set_hyphenation_code(c); tok.next(); + tok.skip(); } skip_line(); *************** *** 4759,4764 **** { int c; ! while ((c = get_copy(0)) == ' ') ! ; if (c == EOF || c == '\n') fputs("User Abort.", stderr); --- 4849,4860 ---- { int c; ! if (tok.eof()) ! c = EOF; ! else if (tok.newline()) ! c = '\n'; ! else { ! while ((c = get_copy(0)) == ' ') ! ; ! } if (c == EOF || c == '\n') fputs("User Abort.", stderr); *************** *** 4803,4806 **** --- 4899,4906 ---- void pipe_output() { + #ifdef POPEN_MISSING + error("pipes not available on this system"); + skip_line(); + #else /* not POPEN_MISSING */ if (the_output) { error("can't pipe: output already started"); *************** *** 4811,4814 **** --- 4911,4915 ---- error("can't pipe to empty command"); } + #endif /* not POPEN_MISSING */ } *************** *** 4952,4955 **** --- 5053,5060 ---- else j = i; + if (j == 0) + last_page_number = -1; + else if (last_page_number >= 0 && j > last_page_number) + last_page_number = j; output_page_list = new page_range(i, j, output_page_list); if (*p != ',') *************** *** 5285,5288 **** --- 5390,5394 ---- process_input_file("-"); exit_troff(); + return 0; // not reached } *************** *** 5381,5384 **** --- 5487,5493 ---- init_request("mso", macro_source); init_request("do", do_request); + #ifndef POPEN_MISSING + init_request("pso", pipe_source); + #endif /* not POPEN_MISSING */ number_reg_dictionary.define("systat", new variable_reg(&system_status)); number_reg_dictionary.define("slimit", *************** *** 5564,5588 **** int mask; } warning_table[] = { ! "char", WARN_CHAR, ! "range", WARN_RANGE, ! "break", WARN_BREAK, ! "delim", WARN_DELIM, ! "el", WARN_EL, ! "scale", WARN_SCALE, ! "number", WARN_NUMBER, ! "syntax", WARN_SYNTAX, ! "tab", WARN_TAB, ! "right-brace", WARN_RIGHT_BRACE, ! "missing", WARN_MISSING, ! "input", WARN_INPUT, ! "escape", WARN_ESCAPE, ! "space", WARN_SPACE, ! "font", WARN_FONT, ! "di", WARN_DI, ! "mac", WARN_MAC, ! "reg", WARN_REG, ! "all", WARN_TOTAL & ~(WARN_DI | WARN_MAC | WARN_REG), ! "w", WARN_TOTAL, ! "default", DEFAULT_WARNING_MASK, }; --- 5673,5698 ---- int mask; } warning_table[] = { ! { "char", WARN_CHAR }, ! { "range", WARN_RANGE }, ! { "break", WARN_BREAK }, ! { "delim", WARN_DELIM }, ! { "el", WARN_EL }, ! { "scale", WARN_SCALE }, ! { "number", WARN_NUMBER }, ! { "syntax", WARN_SYNTAX }, ! { "tab", WARN_TAB }, ! { "right-brace", WARN_RIGHT_BRACE }, ! { "missing", WARN_MISSING }, ! { "input", WARN_INPUT }, ! { "escape", WARN_ESCAPE }, ! { "space", WARN_SPACE }, ! { "font", WARN_FONT }, ! { "di", WARN_DI }, ! { "mac", WARN_MAC }, ! { "reg", WARN_REG }, ! { "ig", WARN_IG }, ! { "all", WARN_TOTAL & ~(WARN_DI | WARN_MAC | WARN_REG) }, ! { "w", WARN_TOTAL }, ! { "default", DEFAULT_WARNING_MASK }, }; *************** *** 5614,5617 **** --- 5724,5744 ---- error("unknown warning `%1'", name); } + + static void copy_mode_error(const char *format, + const errarg &arg1, + const errarg &arg2, + const errarg &arg3) + { + if (ignoring) { + static const char prefix[] = "(in ignored input) "; + char *s = new char[sizeof(prefix) + strlen(format)]; + strcpy(s, prefix); + strcat(s, format); + warning(WARN_IG, s, arg1, arg2, arg3); + a_delete s; + } + else + error(format, arg1, arg2, arg3); + } enum error_type { WARNING, ERROR, FATAL }; diff -rc2N groff-1.08/troff/node.cc groff-1.09/troff/node.cc *** groff-1.08/troff/node.cc Sat Apr 3 17:34:19 1993 --- groff-1.09/troff/node.cc Fri Feb 11 12:45:39 1994 *************** *** 135,138 **** --- 135,139 ---- public: tfont_spec(symbol nm, int pos, font *, font_size, int, int); + tfont_spec(const tfont_spec &spec) { *this = spec; } tfont_spec plain(); int operator==(const tfont_spec &); *************** *** 174,179 **** } - static void invalidate_fontno(int n); - /* font_info functions */ --- 175,178 ---- *************** *** 623,627 **** --- 622,628 ---- class real_output_file : public output_file { + #ifndef POPEN_MISSING int piped; + #endif int printing; virtual void really_transparent_char(unsigned char) = 0; *************** *** 1177,1180 **** --- 1178,1182 ---- : printing(0) { + #ifndef POPEN_MISSING if (pipe_command) { if ((fp = popen(pipe_command, "w")) != 0) { *************** *** 1185,1188 **** --- 1187,1191 ---- } piped = 0; + #endif /* not POPEN_MISSING */ fp = stdout; } *************** *** 1197,1200 **** --- 1200,1204 ---- fatal("error writing output file"); } + #ifndef POPEN_MISSING if (piped) { int result = pclose(fp); *************** *** 1212,1216 **** } } ! else if (fclose(fp) < 0) { fp = 0; fatal("error closing output file"); --- 1216,1222 ---- } } ! else ! #endif /* not POPEN MISSING */ ! if (fclose(fp) < 0) { fp = 0; fatal("error closing output file"); *************** *** 4307,4311 **** delete font_table[n]; font_table[n] = new font_info(name, n, external_name, fm); ! invalidate_fontno(n); return 1; } --- 4313,4317 ---- delete font_table[n]; font_table[n] = new font_info(name, n, external_name, fm); ! font_family::invalidate_fontno(n); return 1; } *************** *** 4335,4339 **** delete font_table[n]; font_table[n] = new font_info(get_font_translation(name), n, NULL_SYMBOL, 0); ! invalidate_fontno(n); } --- 4341,4345 ---- delete font_table[n]; font_table[n] = new font_info(get_font_translation(name), n, NULL_SYMBOL, 0); ! font_family::invalidate_fontno(n); } *************** *** 4443,4447 **** } ! static void invalidate_fontno(int n) { assert(n >= 0 && n < font_table_size); --- 4449,4453 ---- } ! void font_family::invalidate_fontno(int n) { assert(n >= 0 && n < font_table_size); diff -rc2N groff-1.08/troff/node.h groff-1.09/troff/node.h *** groff-1.08/troff/node.h Thu Apr 1 12:35:57 1993 --- groff-1.09/troff/node.h Fri Feb 11 12:45:40 1994 *************** *** 471,475 **** --- 471,477 ---- }; + #ifndef POPEN_MISSING extern char *pipe_command; + #endif extern output_file *the_output; *************** *** 477,482 **** int in_output_page_list(int n); - static void invalidate_fontno(int); - class font_family { int *map; --- 479,482 ---- *************** *** 488,492 **** ~font_family(); make_definite(int); ! friend void invalidate_fontno(int); }; --- 488,492 ---- ~font_family(); make_definite(int); ! static void invalidate_fontno(int); }; diff -rc2N groff-1.08/troff/symbol.cc groff-1.09/troff/symbol.cc *** groff-1.08/troff/symbol.cc Wed Nov 25 17:02:29 1992 --- groff-1.09/troff/symbol.cc Sun Feb 13 10:24:46 1994 *************** *** 69,72 **** --- 69,75 ---- } + // Tell compiler that a variable is intentionally unused. + inline void unused(void *) { } + symbol::symbol(const char *p, int how) { *************** *** 109,112 **** --- 112,116 ---- --pp) { symbol temp(*pp, 1); /* insert it into the new table */ + unused(&temp); } a_delete old_table; diff -rc2N groff-1.08/troff/token.h groff-1.09/troff/token.h *** groff-1.08/troff/token.h Mon Aug 3 11:17:50 1992 --- groff-1.09/troff/token.h Thu May 27 22:27:01 1993 *************** *** 24,30 **** struct vunits; - // See ARM p251. - static void process_input_stack(); - class token { symbol nm; --- 24,27 ---- diff -rc2N groff-1.08/troff/troff.h groff-1.09/troff/troff.h *** groff-1.08/troff/troff.h Wed Nov 25 16:48:00 1992 --- groff-1.09/troff/troff.h Sat Feb 12 11:58:35 1994 *************** *** 32,43 **** #include "device.h" ! #ifdef __GNUG__ ! #define NO_RETURN volatile ! #else ! #define NO_RETURN ! #endif - NO_RETURN void cleanup_and_exit(int n); - typedef int units; --- 32,37 ---- #include "device.h" ! void cleanup_and_exit(int n); typedef int units; *************** *** 77,85 **** WARN_ESCAPE = 0100000, WARN_SPACE = 0200000, ! WARN_FONT = 0400000 // change WARN_TOTAL if you add more warning types }; ! const int WARN_TOTAL = 0777777; int warning(warning_type, const char *, --- 71,80 ---- WARN_ESCAPE = 0100000, WARN_SPACE = 0200000, ! WARN_FONT = 0400000, ! WARN_IG = 01000000 // change WARN_TOTAL if you add more warning types }; ! const int WARN_TOTAL = 01777777; int warning(warning_type, const char *, diff -rc2N groff-1.08/troff/troff.man groff-1.09/troff/troff.man *** groff-1.08/troff/troff.man Thu Apr 1 11:20:29 1993 --- groff-1.09/troff/troff.man Mon Feb 14 08:42:35 1994 *************** *** 151,154 **** --- 151,156 ---- means print every page from .IR n . + .B Troff + will exit after printing the last page in the list. .TP .BI \-r cn *************** *** 275,279 **** .B troff disallows this. ! Similarily it would make no sense to use a scaling indicator other than .B z --- 277,281 ---- .B troff disallows this. ! Similarly it would make no sense to use a scaling indicator other than .B z *************** *** 703,706 **** --- 705,711 ---- lines can be broken before the character (initially no characters have this property); + a line will not be broken at a character with this property + unless the characters on each side both have non-zero + hyphenation codes. .TP 4 *************** *** 709,712 **** --- 714,720 ---- .B \-\e(hy\e(em have this property); + a line will not be broken at a character with this property + unless the characters on each side both have non-zero + hyphenation codes. .TP 8 *************** *** 854,858 **** Any fonts specified in the .B special ! request will be searched before fonts specified in the .B fspecial request. --- 862,866 ---- Any fonts specified in the .B special ! request will be searched after fonts specified in the .B fspecial request. *************** *** 1051,1054 **** --- 1059,1068 ---- on stderr. .TP + .BI .pso \ command + This is behaves like the + .B so + request except that input comes from the standard output of + .IR command . + .TP .B .ptr Print the names and positions of all traps (not including input line *************** *** 1072,1076 **** input lines. Without an argument right justify the next input line. ! The number of lines to be right justifed is available in the .B \en[.rj] register. --- 1086,1090 ---- input lines. Without an argument right justify the next input line. ! The number of lines to be right justified is available in the .B \en[.rj] register. *************** *** 1791,1795 **** .TP .BR tab \t2048 ! Use of a tab character where a number was expected. .TP .BR right-brace \t4096 --- 1805,1811 ---- .TP .BR tab \t2048 ! Inappropriate use of a tab character. ! Either use of a tab character where a number was expected, ! or use of tab character in an unquoted macro argument. .TP .BR right-brace \t4096 *************** *** 1822,1825 **** --- 1838,1848 ---- Non-existent fonts. This is enabled by default. + .TP + .BR ig \t262144 + Illegal escapes in text ignored with the + .B ig + request. + These are conditions that are errors when they do not occur + in ignored text. .LP There are also names that can be used to refer to groups of warnings: diff -rc2N groff-1.08/xditview/ChangeLog groff-1.09/xditview/ChangeLog *** groff-1.08/xditview/ChangeLog Tue Mar 30 15:12:43 1993 --- groff-1.09/xditview/ChangeLog Sat Feb 12 10:39:17 1994 *************** *** 1,2 **** --- 1,17 ---- + Sat Feb 12 10:38:47 1994 James Clark (jjc@jclark.com) + + * DviChar.c (Adobe_Symbol_map): Rename radicalex to rn. + + Thu May 27 20:30:12 1993 James Clark (jjc@jclark.com) + + * device.c (isascii): Define if necessary. + (canonicalize_name): Cast argument to isdigit() to unsigned char. + + Thu Apr 29 18:36:57 1993 James Clark (jjc at jclark.com) + + * xditview.c: Include . + (NewFile): Don't declare rindex(). Use strrchr() rather than + rindex(). + Tue Mar 30 15:12:09 1993 James Clark (jjc at jclark) diff -rc2N groff-1.08/xditview/Dvi.c groff-1.09/xditview/Dvi.c *** groff-1.08/xditview/Dvi.c Sat Dec 12 17:51:58 1992 --- groff-1.09/xditview/Dvi.c Mon Feb 14 08:42:33 1994 *************** *** 471,475 **** dw->dvi.current_page = ParseInput (dw); /* ! * at EOF, seek back to the begining of this page. */ if (!dw->dvi.readingTmp && feof (dw->dvi.file)) { --- 471,475 ---- dw->dvi.current_page = ParseInput (dw); /* ! * at EOF, seek back to the beginning of this page. */ if (!dw->dvi.readingTmp && feof (dw->dvi.file)) { diff -rc2N groff-1.08/xditview/DviChar.c groff-1.09/xditview/DviChar.c *** groff-1.08/xditview/DviChar.c Sat Aug 15 13:49:24 1992 --- groff-1.09/xditview/DviChar.c Sat Feb 12 10:39:14 1994 *************** *** 493,497 **** { "pp", /* 94 */}, { "_", /* 95 */}, ! { "rn", /* 96 */}, { "*a", /* 97 */}, { "*b", /* 98 */}, --- 493,497 ---- { "pp", /* 94 */}, { "_", /* 95 */}, ! { "radicalex", /* 96 */}, { "*a", /* 97 */}, { "*b", /* 98 */}, diff -rc2N groff-1.08/xditview/DviChar.h groff-1.09/xditview/DviChar.h *** groff-1.08/xditview/DviChar.h Wed Mar 1 20:50:43 1989 --- groff-1.09/xditview/DviChar.h Mon Feb 14 08:42:32 1994 *************** *** 7,11 **** * * The encoding names are taken from X - ! * case insensitive, a dash seperating the * CharSetRegistry from the CharSetEncoding */ --- 7,11 ---- * * The encoding names are taken from X - ! * case insensitive, a dash separating the * CharSetRegistry from the CharSetEncoding */ diff -rc2N groff-1.08/xditview/Makefile groff-1.09/xditview/Makefile *** groff-1.08/xditview/Makefile Mon Apr 19 10:17:50 1993 --- groff-1.09/xditview/Makefile Thu Apr 29 18:38:13 1993 *************** *** 417,427 **** xditview.o: /usr/include/sys/sysmacros.h /local/include/X11/X.h xditview.o: /local/include/X11/Xfuncproto.h /local/include/X11/Xosdefs.h ! xditview.o: /usr/include/stddef.h /local/include/X11/Intrinsic.h xditview.o: /local/include/X11/Xutil.h /local/include/X11/Xresource.h ! xditview.o: /usr/include/string.h /local/include/X11/Core.h ! xditview.o: /local/include/X11/Composite.h /local/include/X11/Constraint.h ! xditview.o: /local/include/X11/Object.h /local/include/X11/RectObj.h ! xditview.o: /local/include/X11/StringDefs.h /local/include/X11/Shell.h ! xditview.o: /local/include/X11/Xaw/Paned.h xditview.o: /local/include/X11/Xmu/Converters.h xditview.o: /local/include/X11/Xaw/Viewport.h /local/include/X11/Xaw/Form.h --- 417,430 ---- xditview.o: /usr/include/sys/sysmacros.h /local/include/X11/X.h xditview.o: /local/include/X11/Xfuncproto.h /local/include/X11/Xosdefs.h ! xditview.o: /usr/include/stddef.h /local/include/X11/Xos.h ! xditview.o: /usr/include/string.h /usr/include/fcntl.h ! xditview.o: /usr/include/sys/fcntlcom.h /usr/include/sys/stat.h ! xditview.o: /usr/include/unistd.h /usr/include/sys/time.h ! xditview.o: /usr/include/sys/time.h /local/include/X11/Intrinsic.h xditview.o: /local/include/X11/Xutil.h /local/include/X11/Xresource.h ! xditview.o: /local/include/X11/Core.h /local/include/X11/Composite.h ! xditview.o: /local/include/X11/Constraint.h /local/include/X11/Object.h ! xditview.o: /local/include/X11/RectObj.h /local/include/X11/StringDefs.h ! xditview.o: /local/include/X11/Shell.h /local/include/X11/Xaw/Paned.h xditview.o: /local/include/X11/Xmu/Converters.h xditview.o: /local/include/X11/Xaw/Viewport.h /local/include/X11/Xaw/Form.h diff -rc2N groff-1.08/xditview/TODO groff-1.09/xditview/TODO *** groff-1.08/xditview/TODO Thu Feb 20 22:12:07 1992 --- groff-1.09/xditview/TODO Mon Feb 14 08:42:31 1994 *************** *** 9,13 **** specified in a resource (similar format to FontMap). ! The initial width of the dialog box should expand to accomodate the default value. --- 9,13 ---- specified in a resource (similar format to FontMap). ! The initial width of the dialog box should expand to accommodate the default value. diff -rc2N groff-1.08/xditview/device.c groff-1.09/xditview/device.c *** groff-1.08/xditview/device.c Tue Jul 28 11:35:33 1992 --- groff-1.09/xditview/device.c Thu May 27 20:30:56 1993 *************** *** 13,16 **** --- 13,20 ---- #endif + #ifndef isascii + #define isascii(c) (1) + #endif + extern void exit(); extern char *strtok(), *strchr(); *************** *** 308,312 **** for (p = s + 4; *p; p++) ! if (!isascii(*p) || !isdigit(*p)) return s; n = atoi(s + 4); --- 312,316 ---- for (p = s + 4; *p; p++) ! if (!isascii(*p) || !isdigit((unsigned char)*p)) return s; n = atoi(s + 4); diff -rc2N groff-1.08/xditview/gxditview.man groff-1.09/xditview/gxditview.man *** groff-1.08/xditview/gxditview.man Tue Feb 23 14:49:04 1993 --- groff-1.09/xditview/gxditview.man Mon Feb 14 08:33:48 1994 *************** *** 189,192 **** --- 189,221 ---- .BR font\ (class\ Font ) Specifies the font to be used for error messages. + .TP + .BR fontMap\ (class\ FontMap ) + Specifies the mapping from groff font names to X font names. This + must be a string containing a sequence of lines. Each line contains + two whitespace separated fields: first the groff font name, and + secondly the X font name. The default is + .nf + "\e + TR -adobe-times-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e + TI -adobe-times-medium-i-normal--*-100-*-*-*-*-iso8859-1\en\e + TB -adobe-times-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e + TBI -adobe-times-bold-i-normal--*-100-*-*-*-*-iso8859-1\en\e + CR -adobe-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e + CI -adobe-courier-medium-o-normal--*-100-*-*-*-*-iso8859-1\en\e + CB -adobe-courier-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e + CBI -adobe-courier-bold-o-normal--*-100-*-*-*-*-iso8859-1\en\e + HR -adobe-helvetica-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e + HI -adobe-helvetica-medium-o-normal--*-100-*-*-*-*-iso8859-1\en\e + HB -adobe-helvetica-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e + HBI -adobe-helvetica-bold-o-normal--*-100-*-*-*-*-iso8859-1\en\e + NR -adobe-new century schoolbook-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e + NI -adobe-new century schoolbook-medium-i-normal--*-100-*-*-*-*-iso8859-1\en\e + NB -adobe-new century schoolbook-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e + NBI -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\en\e + S -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\en\e + SS -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\en\e + " + .fi + .SH "SEE ALSO" .IR X (1), *************** *** 211,215 **** David Slattengren (Berkeley) .br ! Malcom Slaney (Schlumberger Palo Alto Research) .br Mark Moraes (University of Toronto) --- 240,244 ---- David Slattengren (Berkeley) .br ! Malcolm Slaney (Schlumberger Palo Alto Research) .br Mark Moraes (University of Toronto) diff -rc2N groff-1.08/xditview/xditview.c groff-1.09/xditview/xditview.c *** groff-1.08/xditview/xditview.c Thu Oct 1 20:03:17 1992 --- groff-1.09/xditview/xditview.c Thu Apr 29 18:36:53 1993 *************** *** 34,37 **** --- 34,38 ---- #include #include + #include #include #include *************** *** 266,270 **** { Arg arg[2]; ! char *n, *rindex (); FILE *new_file; Boolean seek = 0; --- 267,271 ---- { Arg arg[2]; ! char *n; FILE *new_file; Boolean seek = 0; *************** *** 295,299 **** if (hadFile || name[0] != '-' || name[1] != '\0') { XtSetArg (arg[0], XtNtitle, name); ! if (name[0] != '/' && (n = rindex (name, '/'))) n = n + 1; else --- 296,300 ---- if (hadFile || name[0] != '-' || name[1] != '\0') { XtSetArg (arg[0], XtNtitle, name); ! if (name[0] != '/' && (n = strrchr (name, '/'))) n = n + 1; else