From ecd1803572623b7833c53e4c255e05a59a5938ef Mon Sep 17 00:00:00 2001 From: kei Date: Tue, 21 Nov 2000 05:21:08 +0000 Subject: Import of "Mule" package: Multilingual GNU editing macros (editor) It was based on Mule ports of FreeBSD and Emacs ports of NetBSD originally, lots of changes are adapted as a result of discussion on tech-pkg-ja@jp.NetBSD.ORG mailing list. --- editors/mule/Makefile | 54 + editors/mule/files/info.patch | 290 +++ editors/mule/files/md5 | 3 + editors/mule/files/patch-sum | 25 + editors/mule/patches/patch-aa | 80 + editors/mule/patches/patch-ab | 1115 +++++++++++ editors/mule/patches/patch-ac | 22 + editors/mule/patches/patch-ad | 12 + editors/mule/patches/patch-ae | 173 ++ editors/mule/patches/patch-af | 15 + editors/mule/patches/patch-ag | 13 + editors/mule/patches/patch-ah | 30 + editors/mule/patches/patch-ai | 13 + editors/mule/patches/patch-aj | 15 + editors/mule/patches/patch-ak | 13 + editors/mule/patches/patch-al | 16 + editors/mule/patches/patch-am | 13 + editors/mule/patches/patch-an | 38 + editors/mule/patches/patch-ao | 46 + editors/mule/patches/patch-ar | 18 + editors/mule/patches/patch-as | 86 + editors/mule/patches/patch-au | 24 + editors/mule/patches/patch-av | 19 + editors/mule/patches/patch-aw | 19 + editors/mule/patches/patch-az | 20 + editors/mule/patches/patch-ba | 18 + editors/mule/patches/patch-bb | 4272 +++++++++++++++++++++++++++++++++++++++++ editors/mule/pkg/COMMENT | 1 + editors/mule/pkg/DESCR | 15 + editors/mule/pkg/PLIST | 1037 ++++++++++ 30 files changed, 7515 insertions(+) create mode 100644 editors/mule/Makefile create mode 100644 editors/mule/files/info.patch create mode 100644 editors/mule/files/md5 create mode 100644 editors/mule/files/patch-sum create mode 100644 editors/mule/patches/patch-aa create mode 100644 editors/mule/patches/patch-ab create mode 100644 editors/mule/patches/patch-ac create mode 100644 editors/mule/patches/patch-ad create mode 100644 editors/mule/patches/patch-ae create mode 100644 editors/mule/patches/patch-af create mode 100644 editors/mule/patches/patch-ag create mode 100644 editors/mule/patches/patch-ah create mode 100644 editors/mule/patches/patch-ai create mode 100644 editors/mule/patches/patch-aj create mode 100644 editors/mule/patches/patch-ak create mode 100644 editors/mule/patches/patch-al create mode 100644 editors/mule/patches/patch-am create mode 100644 editors/mule/patches/patch-an create mode 100644 editors/mule/patches/patch-ao create mode 100644 editors/mule/patches/patch-ar create mode 100644 editors/mule/patches/patch-as create mode 100644 editors/mule/patches/patch-au create mode 100644 editors/mule/patches/patch-av create mode 100644 editors/mule/patches/patch-aw create mode 100644 editors/mule/patches/patch-az create mode 100644 editors/mule/patches/patch-ba create mode 100644 editors/mule/patches/patch-bb create mode 100644 editors/mule/pkg/COMMENT create mode 100644 editors/mule/pkg/DESCR create mode 100644 editors/mule/pkg/PLIST (limited to 'editors/mule') diff --git a/editors/mule/Makefile b/editors/mule/Makefile new file mode 100644 index 00000000000..3c3e3eefc10 --- /dev/null +++ b/editors/mule/Makefile @@ -0,0 +1,54 @@ +# $NetBSD: Makefile,v 1.1.1.1 2000/11/21 05:21:08 kei Exp $ + +DISTNAME= mule-2.3 +CATEGORIES= editors +MASTER_SITES= ftp://ftp.m17n.org/pub/mule/ + +MAINTAINER= kei@netbsd.org +HOMEPAGE= http://www.m17n.org/mule/MulePage.en.html + +.include "../../mk/bsd.prefs.mk" + +.if !defined(USE_WNN4) || ${USE_WNN4} == YES +DEPENDS+= ja-FreeWnn-lib-1.10:../../japanese/freewnn-lib +.endif +.if !defined(USE_CANNA) || ${USE_CANNA} == YES +DEPENDS+= Canna-lib-3.5b2:../../japanese/canna-lib +.endif + +WRKSRC= ${WRKDIR}/mule +GNU_CONFIGURE= yes +USE_GMAKE= yes +USE_GTEXINFO= yes + +CONFIGURE_ARGS+= ${MACHINE_ARCH}--netbsd --with-x --with-x-toolkit=lucid +CONFIGURE_ARGS+= --terminal-face --mcpath +.if ${MACHINE_ARCH} != "alpha" && ${MACHINE_ARCH} != "sparc64" +CONFIGURE_ARGS+= --valbits=26 +.endif + +# Find X11 libraries with xpkgwedge +.if defined(USE_LOCALBASE_FOR_X11) +CONFIGURE_ARGS+= --x-libraries=${X11BASE}/lib --x-includes=${X11BASE}/inc +lude +.endif + +.if !defined(USE_WNN4) || ${USE_WNN4} == YES +CONFIGURE_ARGS+= --with-wnn4 --wnn-includes=${LOCALBASE}/include/wnn --wnn-libraries=${LOCALBASE}/lib +.endif + +.if !defined(USE_CANNA) || ${USE_CANNA} == YES +CONFIGURE_ARGS+= --with-canna --canna-includes=${LOCALBASE}/include/canna --canna-libraries=${LOCALBASE}/lib +.endif + +INFO_FILES= antenews-jp canna-jp cl dired-x egg-jp emacs forms gnus mule \ + mule-jp sc vip + +MAN1= coco.1 ctags.1 etags.1 m2ps.1 mule.1 + +post-patch: + @${ECHO_MSG} "===> Applying jumbo patches in info directory" + @${PATCH} ${PATCH_ARGS} < ${FILESDIR}/info.patch + @${RM} -f ${WRKSRC}/info/*.orig + +.include "../../mk/bsd.pkg.mk" diff --git a/editors/mule/files/info.patch b/editors/mule/files/info.patch new file mode 100644 index 00000000000..78e16e1a7a5 --- /dev/null +++ b/editors/mule/files/info.patch @@ -0,0 +1,290 @@ +$NetBSD: info.patch,v 1.1.1.1 2000/11/21 05:21:08 kei Exp $ + +--- info/CCL.orig Thu Nov 16 23:13:27 2000 ++++ info/CCL Thu Nov 16 23:16:47 2000 +@@ -3,7 +3,10 @@ + from file `CCL.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* CCL: (CCL). Code Conversion Language. ++END-INFO-DIR-ENTRY + +  + File: CCL, Node: Top, Up: (mule) +--- info/ISO2022.orig Thu Nov 16 23:14:20 2000 ++++ info/ISO2022 Thu Nov 16 23:16:52 2000 +@@ -3,7 +3,10 @@ + from file `ISO2022.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* ISO2022: (ISO2022). ISO2022 encoding system. ++END-INFO-DIR-ENTRY + +  + File: ISO2022, Node: Top, Up: (mule) +--- info/R2L.orig Thu Nov 16 23:16:04 2000 ++++ info/R2L Thu Nov 16 23:16:32 2000 +@@ -3,7 +3,10 @@ + from file `R2L.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* R2L: (R2L). Right-to-left writing on Mule. ++END-INFO-DIR-ENTRY + +  + File: R2L, Node: Top, Up: (mule) +--- info/XFONT.orig Thu Nov 16 23:35:33 2000 ++++ info/XFONT Thu Nov 16 23:37:17 2000 +@@ -2,7 +2,9 @@ + produced by texinfo-format-buffer + from file: XFONT.texi + +- ++START-INFO-DIR-ENTRY ++* XFONT: (XFONT). X's FONT usage. ++END-INFO-DIR-ENTRY + +  + File: XFONT Node: Top, Up: (mule) +--- info/antenews-jp.orig Thu Nov 16 23:57:34 2000 ++++ info/antenews-jp Thu Nov 16 23:59:26 2000 +@@ -3,6 +3,10 @@ + from file `antenews-jp.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Antenews-jp: (antenews-jp). Antenews of Emacs 19. (written in Japanese) ++END-INFO-DIR-ENTRY + +  + File: antenews-jp, Node: Top, Next: Basic Changes, Up: (dir) +--- info/canna-jp.orig Thu Nov 16 23:17:23 2000 ++++ info/canna-jp Thu Nov 16 23:27:01 2000 +@@ -2,7 +2,11 @@ + produced by texinfo-format-buffer + from file: canna-jp.texinfo + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Canna-jp: (canna-jp). Japanese Inputting method Canna. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + File: canna-jp Node: Top, Prev: (dir), Up: (dir), Next: 概説 +--- info/egg-jp-1.orig Thu Nov 16 23:24:54 2000 ++++ info/egg-jp-1 Thu Nov 16 23:26:29 2000 +@@ -2,8 +2,11 @@ + produced by texinfo-format-buffer + from file: egg-jp.texi + +- +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Egg-jp: (egg-jp). Built-in Chinese/Japanese Inputting Method for Mule. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + File: egg-jp Node: Top, Up: (dir), Next: Overview +--- info/egg-jp-2.orig Thu Nov 16 23:25:00 2000 ++++ info/egg-jp-2 Thu Nov 16 23:26:40 2000 +@@ -2,8 +2,11 @@ + produced by texinfo-format-buffer + from file: egg-jp.texi + +- +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Egg-jp: (egg-jp). Built-in Chinese/Japanese Inputting Method for Mule. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + File: egg-jp Node: Editing, Prev: Registration, Up: Dictionary Management, Next: Customization +--- info/egg-jp.orig Thu Nov 16 23:24:46 2000 ++++ info/egg-jp Thu Nov 16 23:26:20 2000 +@@ -2,8 +2,11 @@ + produced by texinfo-format-buffer + from file: egg-jp.texi + +- +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Egg-jp: (egg-jp). Built-in Chinese/Japanese Inputting Method for Mule. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + Indirect: +--- info/egg.orig Thu Nov 16 23:22:57 2000 ++++ info/egg Thu Nov 16 23:28:48 2000 +@@ -3,7 +3,10 @@ + from file `egg.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* egg: (egg). Built-in Chinese/Japanese Inputting method for Mule. ++END-INFO-DIR-ENTRY + +  + File: egg, Node: Top, Up: (mule) +--- info/kbd-trans.orig Thu Nov 16 23:37:34 2000 ++++ info/kbd-trans Thu Nov 16 23:38:39 2000 +@@ -3,7 +3,10 @@ + from file `kbd-trans.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* kbd-trans: (kbd-trans). keyboard translation on Mule. ++END-INFO-DIR-ENTRY + +  + File: kbd-trans, Node: Top, Up: (mule) +--- info/languages.orig Thu Nov 16 23:39:23 2000 ++++ info/languages Thu Nov 16 23:41:03 2000 +@@ -3,7 +3,10 @@ + from file `languages.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* languages: (languages). various Asian and European languages in Mule. ++END-INFO-DIR-ENTRY + +  + File: languages, Node: Top, Up: (mule) +--- info/m2ps.orig Thu Nov 16 23:41:11 2000 ++++ info/m2ps Thu Nov 16 23:41:46 2000 +@@ -3,7 +3,10 @@ + from file `m2ps.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* m2ps: (m2ps). Converter from Mule code to PostScript. ++END-INFO-DIR-ENTRY + +  + File: m2ps, Node: Top, Up: (mule) +--- info/mule-jp-1.orig Thu Nov 16 23:53:22 2000 ++++ info/mule-jp-1 Thu Nov 16 23:54:40 2000 +@@ -3,7 +3,11 @@ + from file `mule-jp.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Mule-jp: (mule-jp). MULtilingual Enhancement to GNU Emacs. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + File: mule-jp, Node: Top, Next: Overview, Up: (dir) +--- info/mule-jp-2.orig Thu Nov 16 23:53:22 2000 ++++ info/mule-jp-2 Thu Nov 16 23:54:42 2000 +@@ -3,7 +3,11 @@ + from file `mule-jp.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Mule-jp: (mule-jp). MULtilingual Enhancement to GNU Emacs. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + File: mule-jp, Node: Set Coding System, Next: Key Input, Prev: Buffers, Up: Multilingual Char +--- info/mule-jp-3.orig Thu Nov 16 23:53:22 2000 ++++ info/mule-jp-3 Thu Nov 16 23:54:45 2000 +@@ -3,7 +3,11 @@ + from file `mule-jp.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Mule-jp: (mule-jp). MULtilingual Enhancement to GNU Emacs. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + File: mule-jp, Node: Justifying, Next: Enhancement, Prev: Filling, Up: Filling&Justifying +--- info/mule-jp.orig Thu Nov 16 23:53:22 2000 ++++ info/mule-jp Thu Nov 16 23:54:36 2000 +@@ -3,7 +3,11 @@ + from file `mule-jp.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Mule-jp: (mule-jp). MULtilingual Enhancement to GNU Emacs. ++ (written in Japanese) ++END-INFO-DIR-ENTRY + +  + Indirect: +--- info/mule.orig Thu Nov 16 23:46:33 2000 ++++ info/mule Thu Nov 16 23:51:31 2000 +@@ -3,6 +3,10 @@ + from file `mule.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Mule: (mule). MULtilingual Enhancement to GNU Emacs. ++END-INFO-DIR-ENTRY + + This file documents the internal structure of Mule (MULtilingual + Enhancement to GNU Emacs). +--- info/quail.orig Thu Nov 16 23:53:27 2000 ++++ info/quail Thu Nov 16 23:55:28 2000 +@@ -3,7 +3,10 @@ + from file `quail.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* quail: (quail). Imputting methods of multilingual text on Mule. ++END-INFO-DIR-ENTRY + +  + File: quail, Node: Top, Up: (mule) +--- info/terminology.orig Thu Nov 16 23:59:54 2000 ++++ info/terminology Fri Nov 17 00:01:42 2000 +@@ -3,7 +3,10 @@ + from file `terminology.texi' + using `texinfmt.el' version 2.32 of 19 November 1993. + +- ++INFO-DIR-SECTION Editors ++START-INFO-DIR-ENTRY ++* Terminology: (terminology). Terminology used by Mule. ++END-INFO-DIR-ENTRY + +  + File: terminology, Node: Top, Up: (mule) diff --git a/editors/mule/files/md5 b/editors/mule/files/md5 new file mode 100644 index 00000000000..38207d9fd65 --- /dev/null +++ b/editors/mule/files/md5 @@ -0,0 +1,3 @@ +$NetBSD: md5,v 1.1.1.1 2000/11/21 05:21:08 kei Exp $ + +MD5 (mule-2.3.tar.gz) = e97cfbf19ee43442b416004eb92aac41 diff --git a/editors/mule/files/patch-sum b/editors/mule/files/patch-sum new file mode 100644 index 00000000000..aae42cd2769 --- /dev/null +++ b/editors/mule/files/patch-sum @@ -0,0 +1,25 @@ +$NetBSD: patch-sum,v 1.1.1.1 2000/11/21 05:21:08 kei Exp $ + +MD5 (patch-aa) = 7ea2769158c781897538a3e288731072 +MD5 (patch-ab) = 30328117a0190ca42366961fd38c9c6d +MD5 (patch-ac) = fbac22f39733903512b4b2f21afb1c0d +MD5 (patch-ad) = 96c1b4b98261aef633167d0a3ddb36eb +MD5 (patch-ae) = 31b33f72bd08ea4e11fb267780d4bf35 +MD5 (patch-af) = 5800488847aaa2409d81c95528dedbd8 +MD5 (patch-ag) = 2f3962394e54f421af307499abd742ca +MD5 (patch-ah) = 7eb2b3e41a38c57715b3e94312c84897 +MD5 (patch-ai) = b9f7cc3a79664484d42cc44fa2888a58 +MD5 (patch-aj) = c65db746a995aca506d4a0546026a6e4 +MD5 (patch-ak) = 90f849803e2d80f6388f63d70eadc061 +MD5 (patch-al) = e136d81f01e077527f8ec3ce0d275d09 +MD5 (patch-am) = efdbf4778e0f66ed4ce4d0398bf396d2 +MD5 (patch-an) = 94b8993036eda249a30592b88e0c1134 +MD5 (patch-ao) = 7c144963be534027bdfe462a3c118d27 +MD5 (patch-ar) = 2cbf759a9c82c9e1abb6a11ed0b315df +MD5 (patch-as) = 7f08ad6a16ecfc9a4aa8e328c9049425 +MD5 (patch-au) = 899153af2caa93b4fa6dbe6a446b24ea +MD5 (patch-av) = 78da6b62d9c1c00b56715d7f8a3ccf04 +MD5 (patch-aw) = 1c619081c2ee3c55585c1ffc7acdc034 +MD5 (patch-az) = 850d146d480411d2d2a66301fbe2fa51 +MD5 (patch-ba) = 222cfdb4a3f3b48e6efc9acee272f466 +MD5 (patch-bb) = e8f991ef2941f2ac1dfda3378e4e0ea5 diff --git a/editors/mule/patches/patch-aa b/editors/mule/patches/patch-aa new file mode 100644 index 00000000000..57d1b1480c7 --- /dev/null +++ b/editors/mule/patches/patch-aa @@ -0,0 +1,80 @@ +$NetBSD: patch-aa,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/s/netbsd.h.orig Thu Oct 12 19:53:15 1995 ++++ src/s/netbsd.h Sun Sep 19 12:36:05 1999 +@@ -3,6 +3,10 @@ + /* Get most of the stuff from bsd4.3 */ + #include "bsd4-3.h" + ++#if defined (__alpha__) && !defined (__ELF__) ++#define NO_SHARED_LIBS ++#endif ++ + /* For mem-limits.h. */ + #define BSD4_2 + +@@ -30,8 +34,8 @@ + #define NO_TERMIO + + #define LIBS_DEBUG +-/* -lutil is not needed for NetBSD >0.9. */ +-#define LIBS_SYSTEM -lutil -lcrypt ++#define LIBS_SYSTEM -lcrypt ++ + #define LIBS_TERMCAP -ltermcap + + #define NEED_ERRNO +@@ -40,7 +44,9 @@ + /* Netbsd has POSIX-style pgrp behavior. */ + #undef BSD_PGRPS + +-#ifndef NO_SHARED_LIBS ++#define GETPGRP_NO_ARG ++ ++#if !defined (NO_SHARED_LIBS) && ! defined (__ELF__) + /* These definitions should work for either dynamic or static linking, + whichever is the default for `cc -nostdlib'. */ + #define HAVE_TEXT_START /* No need to define `start_of_text'. */ +@@ -54,14 +60,34 @@ + #define N_BSSADDR(x) (N_ALIGN(x, N_DATADDR(x)+x.a_data)) + #define N_TRELOFF(x) N_RELOFF(x) + #endif +-#endif /* not NO_SHARED_LIBS */ +- +-/* Reread the time zone on startup. */ +-#define LOCALTIME_CACHE ++#endif /* not NO_SHARED_LIBS and not ELF */ + + #define HAVE_WAIT_HEADER ++#define WAIT_USE_INT + +-/* 94.7.29 by T.Sakakibara */ +-#ifdef emacs +-#include +-#endif ++#define NO_MATHERR ++ ++#define AMPERSAND_FULL_NAME ++ ++#ifdef __ELF__ ++/* Here is how to find X Windows. LD_SWITCH_X_SITE_AUX gives an -R option ++ says where to find X windows at run time. We convert it to a -rpath option ++ which is what OSF1 uses. */ ++#define LD_SWITCH_SYSTEM `echo LD_SWITCH_X_SITE_AUX | sed -e 's/-R/-Wl,-rpath,/'` ++ ++#define HAVE_TEXT_START /* No need to define `start_of_text'. */ ++#define UNEXEC unexelf.o ++#define ORDINARY_LINK ++ ++#if defined(__i386__) ++#define DATA_SEG_BITS 0x08000000 ++#endif /* __i386__ */ ++ ++#endif /* __ELF__ */ ++ ++/* On post 1.3 releases of NetBSD, gcc -nostdlib also clears ++ the library search parth, i.e. it won't search /usr/lib ++ for libc and friends. Using -nostartfiles instead avoids ++ this problem, and will also work on earlier NetBSD releases */ ++ ++#define LINKER $(CC) -nostartfiles diff --git a/editors/mule/patches/patch-ab b/editors/mule/patches/patch-ab new file mode 100644 index 00000000000..ec4ee710b21 --- /dev/null +++ b/editors/mule/patches/patch-ab @@ -0,0 +1,1115 @@ +$NetBSD: patch-ab,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/unexelf.c.orig Fri Oct 21 13:21:00 1994 ++++ src/unexelf.c Sat May 13 14:04:55 2000 +@@ -1,19 +1,22 @@ + /* Copyright (C) 1985, 1986, 1987, 1988, 1990, 1992 + Free Software Foundation, Inc. + +- This program is free software; you can redistribute it and/or modify +- it under the terms of the GNU General Public License as published by +- the Free Software Foundation; either version 2, or (at your option) +- any later version. +- +- This program is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- GNU General Public License for more details. +- +- You should have received a copy of the GNU General Public License +- along with this program; if not, write to the Free Software +- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++This file is part of GNU Emacs. ++ ++GNU Emacs is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GNU Emacs is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GNU Emacs; see the file COPYING. If not, write to ++the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. + + In other words, you are welcome to use, share and improve this program. + You are forbidden to forbid anyone else to use, share and improve +@@ -30,14 +33,14 @@ + * Modified heavily since then. + * + * Synopsis: +- * unexec (new_name, a_name, data_start, bss_start, entry_address) +- * char *new_name, *a_name; ++ * unexec (new_name, old_name, data_start, bss_start, entry_address) ++ * char *new_name, *old_name; + * unsigned data_start, bss_start, entry_address; + * + * Takes a snapshot of the program and makes an a.out format file in the + * file named by the string argument new_name. +- * If a_name is non-NULL, the symbol table will be taken from the given file. +- * On some machines, an existing a_name file is required. ++ * If old_name is non-NULL, the symbol table will be taken from the given file. ++ * On some machines, an existing old_name file is required. + * + * The boundaries within the a.out file may be adjusted with the data_start + * and bss_start arguments. Either or both may be given as 0 for defaults. +@@ -98,64 +101,64 @@ + Link Info Adralgn Entsize + + [1] 1 2 0x80480d4 0xd4 0x13 .interp +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [2] 5 2 0x80480e8 0xe8 0x388 .hash +- 3 0 0x4 0x4 ++ 3 0 0x4 0x4 + + [3] 11 2 0x8048470 0x470 0x7f0 .dynsym +- 4 1 0x4 0x10 ++ 4 1 0x4 0x10 + + [4] 3 2 0x8048c60 0xc60 0x3ad .dynstr +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [5] 9 2 0x8049010 0x1010 0x338 .rel.plt +- 3 7 0x4 0x8 ++ 3 7 0x4 0x8 + + [6] 1 6 0x8049348 0x1348 0x3 .init +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [7] 1 6 0x804934c 0x134c 0x680 .plt +- 0 0 0x4 0x4 ++ 0 0 0x4 0x4 + + [8] 1 6 0x80499cc 0x19cc 0x3c56f .text +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [9] 1 6 0x8085f3c 0x3df3c 0x3 .fini +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [10] 1 2 0x8085f40 0x3df40 0x69c .rodata +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [11] 1 2 0x80865dc 0x3e5dc 0xd51 .rodata1 +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [12] 1 3 0x8088330 0x3f330 0x20afc .data +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [13] 1 3 0x80a8e2c 0x5fe2c 0x89d .data1 +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [14] 1 3 0x80a96cc 0x606cc 0x1a8 .got +- 0 0 0x4 0x4 ++ 0 0 0x4 0x4 + + [15] 6 3 0x80a9874 0x60874 0x80 .dynamic +- 4 0 0x4 0x8 ++ 4 0 0x4 0x8 + + [16] 8 3 0x80a98f4 0x608f4 0x449c .bss +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [17] 2 0 0 0x608f4 0x9b90 .symtab +- 18 371 0x4 0x10 ++ 18 371 0x4 0x10 + + [18] 3 0 0 0x6a484 0x8526 .strtab +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [19] 3 0 0 0x729aa 0x93 .shstrtab +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [20] 1 0 0 0x72a3d 0x68b7 .comment +- 0 0 0x1 0 ++ 0 0 0x1 0 + + raid:/nfs/raid/src/dist-18.56/src> dump -h xemacs + +@@ -166,67 +169,67 @@ + Link Info Adralgn Entsize + + [1] 1 2 0x80480d4 0xd4 0x13 .interp +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [2] 5 2 0x80480e8 0xe8 0x388 .hash +- 3 0 0x4 0x4 ++ 3 0 0x4 0x4 + + [3] 11 2 0x8048470 0x470 0x7f0 .dynsym +- 4 1 0x4 0x10 ++ 4 1 0x4 0x10 + + [4] 3 2 0x8048c60 0xc60 0x3ad .dynstr +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [5] 9 2 0x8049010 0x1010 0x338 .rel.plt +- 3 7 0x4 0x8 ++ 3 7 0x4 0x8 + + [6] 1 6 0x8049348 0x1348 0x3 .init +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [7] 1 6 0x804934c 0x134c 0x680 .plt +- 0 0 0x4 0x4 ++ 0 0 0x4 0x4 + + [8] 1 6 0x80499cc 0x19cc 0x3c56f .text +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [9] 1 6 0x8085f3c 0x3df3c 0x3 .fini +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [10] 1 2 0x8085f40 0x3df40 0x69c .rodata +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [11] 1 2 0x80865dc 0x3e5dc 0xd51 .rodata1 +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [12] 1 3 0x8088330 0x3f330 0x20afc .data +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [13] 1 3 0x80a8e2c 0x5fe2c 0x89d .data1 +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [14] 1 3 0x80a96cc 0x606cc 0x1a8 .got +- 0 0 0x4 0x4 ++ 0 0 0x4 0x4 + + [15] 6 3 0x80a9874 0x60874 0x80 .dynamic +- 4 0 0x4 0x8 ++ 4 0 0x4 0x8 + + [16] 8 3 0x80c6800 0x7d800 0 .bss +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [17] 2 0 0 0x7d800 0x9b90 .symtab +- 18 371 0x4 0x10 ++ 18 371 0x4 0x10 + + [18] 3 0 0 0x87390 0x8526 .strtab +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [19] 3 0 0 0x8f8b6 0x93 .shstrtab +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [20] 1 0 0 0x8f949 0x68b7 .comment +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [21] 1 3 0x80a98f4 0x608f4 0x1cf0c .data +- 0 0 0x4 0 ++ 0 0 0x4 0 + + * This is an example of how the file header is changed. "Shoff" is + * the section header offset within the file. Since that table is +@@ -276,20 +279,20 @@ + Type Offset Vaddr Paddr + Filesz Memsz Flags Align + +-6 0x34 0x8048034 0 +-0xa0 0xa0 5 0 ++6 0x34 0x8048034 0 ++0xa0 0xa0 5 0 + +-3 0xd4 0 0 +-0x13 0 4 0 ++3 0xd4 0 0 ++0x13 0 4 0 + +-1 0x34 0x8048034 0 +-0x3f2f9 0x3f2f9 5 0x1000 ++1 0x34 0x8048034 0 ++0x3f2f9 0x3f2f9 5 0x1000 + +-1 0x3f330 0x8088330 0 +-0x215c4 0x25a60 7 0x1000 ++1 0x3f330 0x8088330 0 ++0x215c4 0x25a60 7 0x1000 + +-2 0x60874 0x80a9874 0 +-0x80 0 7 0 ++2 0x60874 0x80a9874 0 ++0x80 0 7 0 + + raid:/nfs/raid/src/dist-18.56/src> dump -o xemacs + +@@ -298,42 +301,42 @@ + Type Offset Vaddr Paddr + Filesz Memsz Flags Align + +-6 0x34 0x8048034 0 +-0xa0 0xa0 5 0 ++6 0x34 0x8048034 0 ++0xa0 0xa0 5 0 + +-3 0xd4 0 0 +-0x13 0 4 0 ++3 0xd4 0 0 ++0x13 0 4 0 + +-1 0x34 0x8048034 0 +-0x3f2f9 0x3f2f9 5 0x1000 ++1 0x34 0x8048034 0 ++0x3f2f9 0x3f2f9 5 0x1000 + +-1 0x3f330 0x8088330 0 +-0x3e4d0 0x3e4d0 7 0x1000 ++1 0x3f330 0x8088330 0 ++0x3e4d0 0x3e4d0 7 0x1000 + +-2 0x60874 0x80a9874 0 +-0x80 0 7 0 ++2 0x60874 0x80a9874 0 ++0x80 0 7 0 + + + */ + +-/* Modified by wtien@urbana.mcd.mot.com of Motorola Inc. +- * ++/* Modified by wtien@urbana.mcd.mot.com of Motorola Inc. ++ * + * The above mechanism does not work if the unexeced ELF file is being +- * re-layout by other applications (such as `strip'). All the applications ++ * re-layout by other applications (such as `strip'). All the applications + * that re-layout the internal of ELF will layout all sections in ascending +- * order of their file offsets. After the re-layout, the data2 section will +- * still be the LAST section in the section header vector, but its file offset ++ * order of their file offsets. After the re-layout, the data2 section will ++ * still be the LAST section in the section header vector, but its file offset + * is now being pushed far away down, and causes part of it not to be mapped +- * in (ie. not covered by the load segment entry in PHDR vector), therefore ++ * in (ie. not covered by the load segment entry in PHDR vector), therefore + * causes the new binary to fail. + * + * The solution is to modify the unexec algorithm to insert the new data2 + * section header right before the new bss section header, so their file +- * offsets will be in the ascending order. Since some of the section's (all +- * sections AFTER the bss section) indexes are now changed, we also need to +- * modify some fields to make them point to the right sections. This is done ++ * offsets will be in the ascending order. Since some of the section's (all ++ * sections AFTER the bss section) indexes are now changed, we also need to ++ * modify some fields to make them point to the right sections. This is done + * by macro PATCH_INDEX. All the fields that need to be patched are: +- * ++ * + * 1. ELF header e_shstrndx field. + * 2. section header sh_link and sh_info field. + * 3. symbol table entry st_shndx field. +@@ -345,67 +348,67 @@ + Link Info Adralgn Entsize + + [1] 1 2 0x80480d4 0xd4 0x13 .interp +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [2] 5 2 0x80480e8 0xe8 0x388 .hash +- 3 0 0x4 0x4 ++ 3 0 0x4 0x4 + + [3] 11 2 0x8048470 0x470 0x7f0 .dynsym +- 4 1 0x4 0x10 ++ 4 1 0x4 0x10 + + [4] 3 2 0x8048c60 0xc60 0x3ad .dynstr +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [5] 9 2 0x8049010 0x1010 0x338 .rel.plt +- 3 7 0x4 0x8 ++ 3 7 0x4 0x8 + + [6] 1 6 0x8049348 0x1348 0x3 .init +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [7] 1 6 0x804934c 0x134c 0x680 .plt +- 0 0 0x4 0x4 ++ 0 0 0x4 0x4 + + [8] 1 6 0x80499cc 0x19cc 0x3c56f .text +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [9] 1 6 0x8085f3c 0x3df3c 0x3 .fini +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [10] 1 2 0x8085f40 0x3df40 0x69c .rodata +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [11] 1 2 0x80865dc 0x3e5dc 0xd51 .rodata1 +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [12] 1 3 0x8088330 0x3f330 0x20afc .data +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [13] 1 3 0x80a8e2c 0x5fe2c 0x89d .data1 +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [14] 1 3 0x80a96cc 0x606cc 0x1a8 .got +- 0 0 0x4 0x4 ++ 0 0 0x4 0x4 + + [15] 6 3 0x80a9874 0x60874 0x80 .dynamic +- 4 0 0x4 0x8 ++ 4 0 0x4 0x8 + + [16] 1 3 0x80a98f4 0x608f4 0x1cf0c .data +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [17] 8 3 0x80c6800 0x7d800 0 .bss +- 0 0 0x4 0 ++ 0 0 0x4 0 + + [18] 2 0 0 0x7d800 0x9b90 .symtab +- 19 371 0x4 0x10 ++ 19 371 0x4 0x10 + + [19] 3 0 0 0x87390 0x8526 .strtab +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [20] 3 0 0 0x8f8b6 0x93 .shstrtab +- 0 0 0x1 0 ++ 0 0 0x1 0 + + [21] 1 0 0 0x8f949 0x68b7 .comment +- 0 0 0x1 0 ++ 0 0 0x1 0 + + */ + +@@ -417,15 +420,130 @@ + #include + #include + #include ++#if !defined (__NetBSD__) && !defined (__OpenBSD__) + #include ++#endif + #include ++#if defined (__sony_news) && defined (_SYSTYPE_SYSV) ++#include ++#include ++#endif /* __sony_news && _SYSTYPE_SYSV */ ++ ++#if defined (__alpha__) && !defined (__NetBSD__) && !defined (__OpenBSD__) ++/* Declare COFF debugging symbol table. This used to be in ++ /usr/include/sym.h, but this file is no longer included in Red Hat ++ 5.0 and presumably in any other glibc 2.x based distribution. */ ++typedef struct { ++ short magic; ++ short vstamp; ++ int ilineMax; ++ int idnMax; ++ int ipdMax; ++ int isymMax; ++ int ioptMax; ++ int iauxMax; ++ int issMax; ++ int issExtMax; ++ int ifdMax; ++ int crfd; ++ int iextMax; ++ long cbLine; ++ long cbLineOffset; ++ long cbDnOffset; ++ long cbPdOffset; ++ long cbSymOffset; ++ long cbOptOffset; ++ long cbAuxOffset; ++ long cbSsOffset; ++ long cbSsExtOffset; ++ long cbFdOffset; ++ long cbRfdOffset; ++ long cbExtOffset; ++} HDRR, *pHDRR; ++#define cbHDRR sizeof(HDRR) ++#define hdrNil ((pHDRR)0) ++#endif ++ ++#ifdef __NetBSD__ ++/* ++ * NetBSD does not have normal-looking user-land ELF support. ++ */ ++# ifdef __alpha__ ++# define ELFSIZE 64 ++# else ++# define ELFSIZE 32 ++# endif ++# include ++ ++#ifndef PT_LOAD ++# define PT_LOAD Elf_pt_load ++# define SHT_SYMTAB Elf_sht_symtab ++# define SHT_DYNSYM Elf_sht_dynsym ++# define SHT_NULL Elf_sht_null ++# define SHT_NOBITS Elf_sht_nobits ++# define SHT_REL Elf_sht_rel ++# define SHT_RELA Elf_sht_rela ++ ++# define SHN_UNDEF Elf_eshn_undefined ++# define SHN_ABS Elf_eshn_absolute ++# define SHN_COMMON Elf_eshn_common ++#endif ++ ++/* ++ * The magic of picking the right size types is handled by the ELFSIZE ++ * definition above. ++ */ ++# ifdef __STDC__ ++# define ElfW(type) Elf_##type ++# else ++# define ElfW(type) Elf_/**/type ++# endif ++ ++# ifdef __alpha__ ++# include ++# define HDRR struct ecoff_symhdr ++# define pHDRR HDRR * ++# endif /* __alpha__*/ ++ ++# ifdef __mips__ ++# define SHT_MIPS_DEBUG DT_MIPS_FLAGS ++# define HDRR struct Elf_Shdr ++# endif /* __mips__ */ ++ ++#endif /* __NetBSD__ */ ++ ++ ++#ifdef __OpenBSD__ ++# include ++#endif ++ ++#if __GNU_LIBRARY__ - 0 >= 6 ++# include /* get ElfW etc */ ++#endif ++ ++#ifndef ElfW ++# ifdef __STDC__ ++# define ElfW(type) Elf32_##type ++# else ++# define ElfW(type) Elf32_/**/type ++# endif ++#endif + + #ifndef emacs + #define fatal(a, b, c) fprintf (stderr, a, b, c), exit (1) + #else ++#include + extern void fatal (char *, ...); + #endif + ++#if defined ( __sony_news) && defined (_SYSTYPE_SYSV) ++# define HAVE_MIPS_SBSS ++#endif ++ ++#if (defined (__mips__) || defined (__powerpc__)) && (defined(__NetBSD__) || defined(__OpenBSD__)) ++# define HAVE_MIPS_SBSS ++#endif ++ + #ifndef ELF_BSS_SECTION_NAME + #define ELF_BSS_SECTION_NAME ".bss" + #endif +@@ -433,15 +551,38 @@ + /* Get the address of a particular section or program header entry, + * accounting for the size of the entries. + */ ++/* ++ On PPC Reference Platform running Solaris 2.5.1 ++ the plt section is also of type NOBI like the bss section. ++ (not really stored) and therefore sections after the bss ++ section start at the plt offset. The plt section is always ++ the one just before the bss section. ++ Thus, we modify the test from ++ if (NEW_SECTION_H (nn).sh_offset >= new_data2_offset) ++ to ++ if (NEW_SECTION_H (nn).sh_offset >= ++ OLD_SECTION_H (old_bss_index-1).sh_offset) ++ This is just a hack. We should put the new data section ++ before the .plt section. ++ And we should not have this routine at all but use ++ the libelf library to read the old file and create the new ++ file. ++ The changed code is minimal and depends on prep set in m/prep.h ++ Erik Deumens ++ Quantum Theory Project ++ University of Florida ++ deumens@qtp.ufl.edu ++ Apr 23, 1996 ++ */ + + #define OLD_SECTION_H(n) \ +- (*(Elf32_Shdr *) ((byte *) old_section_h + old_file_h->e_shentsize * (n))) ++ (*(ElfW(Shdr) *) ((byte *) old_section_h + old_file_h->e_shentsize * (n))) + #define NEW_SECTION_H(n) \ +- (*(Elf32_Shdr *) ((byte *) new_section_h + new_file_h->e_shentsize * (n))) ++ (*(ElfW(Shdr) *) ((byte *) new_section_h + new_file_h->e_shentsize * (n))) + #define OLD_PROGRAM_H(n) \ +- (*(Elf32_Phdr *) ((byte *) old_program_h + old_file_h->e_phentsize * (n))) ++ (*(ElfW(Phdr) *) ((byte *) old_program_h + old_file_h->e_phentsize * (n))) + #define NEW_PROGRAM_H(n) \ +- (*(Elf32_Phdr *) ((byte *) new_program_h + new_file_h->e_phentsize * (n))) ++ (*(ElfW(Phdr) *) ((byte *) new_program_h + new_file_h->e_phentsize * (n))) + + #define PATCH_INDEX(n) \ + do { \ +@@ -451,9 +592,9 @@ + + /* Round X up to a multiple of Y. */ + +-int ++ElfW(Addr) + round_up (x, y) +- int x, y; ++ ElfW(Addr) x, y; + { + int rem = x % y; + if (rem == 0) +@@ -461,6 +602,47 @@ + return x - rem + y; + } + ++#if defined(__alpha__) || (defined ( __sony_news) && defined (_SYSTYPE_SYSV)) ++/* We are using ECOFF symbols embedded in ELF. */ ++ ++void ++relocate_ecoff_symhdr(symhdr, diff) ++ HDRR *symhdr; ++ ElfW(Word) diff; ++{ ++ symhdr->cbLineOffset += diff; ++ symhdr->cbDnOffset += diff; ++ symhdr->cbPdOffset += diff; ++ symhdr->cbSymOffset += diff; ++ symhdr->cbOptOffset += diff; ++ symhdr->cbAuxOffset += diff; ++ symhdr->cbSsOffset += diff; ++ symhdr->cbSsExtOffset += diff; ++ symhdr->cbFdOffset += diff; ++ symhdr->cbRfdOffset += diff; ++ symhdr->cbExtOffset += diff; ++} ++#endif /* __alpha__ or __sony_news and systype_sysv */ ++ ++#ifdef notyet ++void ++relocate_elf_proghdr(p, diff) ++ HDRR *symhdr; ++ ElfW(Word) diff; ++{ ++ phdr->sh_name += diff; ++ phdr->sh_type += diff; ++ phdr->sh_flags += diff; ++ phdr->sh_addr += diff; ++ phdr->sh_offset += diff; ++ phdr->sh_size += diff; ++ phdr->sh_link += diff; ++ phdr->sh_info += diff; ++ phdr->sh_addralign += diff; ++ phdr->sh_entsize += diff; ++}; ++#endif /* notyet */ ++ + /* **************************************************************** + * unexec + * +@@ -483,19 +665,23 @@ + /* Pointers to the file, program and section headers for the old and new + * files. + */ +- Elf32_Ehdr *old_file_h, *new_file_h; +- Elf32_Phdr *old_program_h, *new_program_h; +- Elf32_Shdr *old_section_h, *new_section_h; ++ ElfW(Ehdr) *old_file_h, *new_file_h; ++ ElfW(Phdr) *old_program_h, *new_program_h; ++ ElfW(Shdr) *old_section_h, *new_section_h; + + /* Point to the section name table in the old file */ + char *old_section_names; + +- Elf32_Addr old_bss_addr, new_bss_addr; +- Elf32_Word old_bss_size, new_data2_size; +- Elf32_Off new_data2_offset; +- Elf32_Addr new_data2_addr; ++ ElfW(Addr) old_bss_addr, new_bss_addr; ++ ElfW(Word) old_bss_size, new_data2_size; ++ ElfW(Off) new_data2_offset; ++ ElfW(Addr) new_data2_addr; + + int n, nn, old_bss_index, old_data_index, new_data2_index; ++#ifdef HAVE_MIPS_SBSS ++ int old_sbss_index, old_mdebug_index; ++ int bss_phdr_index; ++#endif /* HAVE_MIPS_SBSS */ + struct stat stat_buf; + + /* Open the old file & map it into the address space. */ +@@ -508,7 +694,8 @@ + if (fstat (old_file, &stat_buf) == -1) + fatal ("Can't fstat (%s): errno %d\n", old_name, errno); + +- old_base = mmap (0, stat_buf.st_size, PROT_READ, MAP_SHARED, old_file, 0); ++ old_base = mmap ((caddr_t) 0, stat_buf.st_size, PROT_READ, MAP_SHARED, ++ old_file, 0); + + if (old_base == (caddr_t) -1) + fatal ("Can't mmap (%s): errno %d\n", old_name, errno); +@@ -520,9 +707,9 @@ + + /* Get pointers to headers & section names */ + +- old_file_h = (Elf32_Ehdr *) old_base; +- old_program_h = (Elf32_Phdr *) ((byte *) old_base + old_file_h->e_phoff); +- old_section_h = (Elf32_Shdr *) ((byte *) old_base + old_file_h->e_shoff); ++ old_file_h = (ElfW(Ehdr) *) old_base; ++ old_program_h = (ElfW(Phdr) *) ((byte *) old_base + old_file_h->e_phoff); ++ old_section_h = (ElfW(Shdr) *) ((byte *) old_base + old_file_h->e_shoff); + old_section_names = (char *) old_base + + OLD_SECTION_H (old_file_h->e_shstrndx).sh_offset; + +@@ -544,16 +731,61 @@ + if (old_bss_index == old_file_h->e_shnum) + fatal ("Can't find .bss in %s.\n", old_name, 0); + ++#ifdef HAVE_MIPS_SBSS ++ for (old_sbss_index = 1; old_sbss_index < (int) old_file_h->e_shnum; ++ old_sbss_index++) ++ { ++#ifdef DEBUG ++ fprintf (stderr, "Looking for .sbss - found %s\n", ++ old_section_names + OLD_SECTION_H (old_sbss_index).sh_name); ++#endif ++ if (!strcmp (old_section_names + OLD_SECTION_H (old_sbss_index).sh_name, ++ ".sbss")) ++ break; ++ } ++ if (old_sbss_index == old_file_h->e_shnum) ++ { ++ old_bss_addr = OLD_SECTION_H(old_bss_index).sh_addr; ++ old_bss_size = OLD_SECTION_H(old_bss_index).sh_size; ++ new_data2_offset = OLD_SECTION_H(old_bss_index).sh_offset; ++ new_data2_index = old_bss_index; ++ } ++ else ++ { ++ old_bss_addr = OLD_SECTION_H(old_sbss_index).sh_addr; ++ old_bss_size = OLD_SECTION_H(old_bss_index).sh_size ++ + OLD_SECTION_H(old_sbss_index).sh_size; ++ new_data2_offset = OLD_SECTION_H(old_sbss_index).sh_offset; ++ new_data2_index = old_sbss_index; ++ } ++ ++ for (old_mdebug_index = 1; old_mdebug_index < (int) old_file_h->e_shnum; ++ old_mdebug_index++) ++ { ++#ifdef DEBUG ++ fprintf (stderr, "Looking for .mdebug - found %s\n", ++ old_section_names + OLD_SECTION_H (old_mdebug_index).sh_name); ++#endif ++ if (!strcmp (old_section_names + OLD_SECTION_H (old_mdebug_index).sh_name, ++ ".mdebug")) ++ break; ++ } ++ if (old_mdebug_index == old_file_h->e_shnum) ++ old_mdebug_index = 0; ++#else /* not HAVE_MIPS_SBSS */ + old_bss_addr = OLD_SECTION_H (old_bss_index).sh_addr; + old_bss_size = OLD_SECTION_H (old_bss_index).sh_size; +-#if defined(emacs) || !defined(DEBUG) +- new_bss_addr = (Elf32_Addr) sbrk (0); ++#endif /* not HAVE_MIPS_SBSS */ ++#if defined (emacs) || !defined (DEBUG) ++ new_bss_addr = (ElfW(Addr)) sbrk (0); + #else + new_bss_addr = old_bss_addr + old_bss_size + 0x1234; + #endif + new_data2_addr = old_bss_addr; + new_data2_size = new_bss_addr - old_bss_addr; ++#ifndef HAVE_MIPS_SBSS + new_data2_offset = OLD_SECTION_H (old_bss_index).sh_offset; ++#endif /* not HAVE_MIPS_SBSS */ + + #ifdef DEBUG + fprintf (stderr, "old_bss_index %d\n", old_bss_index); +@@ -582,15 +814,20 @@ + if (ftruncate (new_file, new_file_size)) + fatal ("Can't ftruncate (%s): errno %d\n", new_name, errno); + +- new_base = mmap (0, new_file_size, PROT_READ | PROT_WRITE, MAP_SHARED, +- new_file, 0); ++#ifdef UNEXEC_USE_MAP_PRIVATE ++ new_base = mmap ((caddr_t) 0, new_file_size, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE, new_file, 0); ++#else ++ new_base = mmap ((caddr_t) 0, new_file_size, PROT_READ | PROT_WRITE, ++ MAP_SHARED, new_file, 0); ++#endif + + if (new_base == (caddr_t) -1) + fatal ("Can't mmap (%s): errno %d\n", new_name, errno); + +- new_file_h = (Elf32_Ehdr *) new_base; +- new_program_h = (Elf32_Phdr *) ((byte *) new_base + old_file_h->e_phoff); +- new_section_h = (Elf32_Shdr *) ++ new_file_h = (ElfW(Ehdr) *) new_base; ++ new_program_h = (ElfW(Phdr) *) ((byte *) new_base + old_file_h->e_phoff); ++ new_section_h = (ElfW(Shdr) *) + ((byte *) new_base + old_file_h->e_shoff + new_data2_size); + + /* Make our new file, program and section headers as copies of the +@@ -633,8 +870,14 @@ + if ((OLD_SECTION_H (old_bss_index)).sh_addralign > alignment) + alignment = OLD_SECTION_H (old_bss_index).sh_addralign; + ++#ifdef HAVE_MIPS_SBSS ++ if (NEW_PROGRAM_H (n).p_vaddr + NEW_PROGRAM_H (n).p_filesz ++ > round_up (old_bss_addr, alignment)) ++ fatal ("Program segment above .bss in %s\n", old_name, 0); ++#else /* not HAVE_MIPS_SBSS */ + if (NEW_PROGRAM_H (n).p_vaddr + NEW_PROGRAM_H (n).p_filesz > old_bss_addr) + fatal ("Program segment above .bss in %s\n", old_name, 0); ++#endif /* not HAVE_MIPS_SBSS */ + + if (NEW_PROGRAM_H (n).p_type == PT_LOAD + && (round_up ((NEW_PROGRAM_H (n)).p_vaddr +@@ -646,9 +889,16 @@ + if (n < 0) + fatal ("Couldn't find segment next to .bss in %s\n", old_name, 0); + +- NEW_PROGRAM_H (n).p_filesz += new_data2_size; ++#ifdef HAVE_MIPS_SBSS ++ bss_phdr_index = n; ++#endif ++ ++ /* Make sure that the size includes any padding before the old .bss ++ section. */ ++ NEW_PROGRAM_H (n).p_filesz = new_bss_addr - NEW_PROGRAM_H (n).p_vaddr; + NEW_PROGRAM_H (n).p_memsz = NEW_PROGRAM_H (n).p_filesz; + ++ + #if 0 /* Maybe allow section after data2 - does this ever happen? */ + for (n = new_file_h->e_phnum - 1; n >= 0; n--) + { +@@ -675,18 +925,27 @@ + if (old_data_index == old_file_h->e_shnum) + fatal ("Can't find .data in %s.\n", old_name, 0); + +- /* Walk through all section headers, insert the new data2 section right ++ /* Walk through all section headers, insert the new data2 section right + before the new bss section. */ + for (n = 1, nn = 1; n < (int) old_file_h->e_shnum; n++, nn++) + { + caddr_t src; +- /* If it is bss section, insert the new data2 section before it. */ +- if (n == old_bss_index) ++ int temp_index; ++#ifdef HAVE_MIPS_SBSS ++ /* If it is (s)bss section, insert the new data2 section before it. */ ++ /* new_data2_index is the index of either old_sbss or old_bss, that was ++ chosen as a section for new_data2. */ ++ temp_index = new_data2_index; ++#else /* not HAVE_MIPS_SBSS */ ++ /* If it is bss section, insert the new data2 section before it. */ ++ temp_index = old_bss_index; ++#endif /* not HAVE_MIPS_SBSS */ ++ if (n == temp_index) + { + /* Steal the data section header for this data2 section. */ + memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (old_data_index), + new_file_h->e_shentsize); +- ++ + NEW_SECTION_H (nn).sh_addr = new_data2_addr; + NEW_SECTION_H (nn).sh_offset = new_data2_offset; + NEW_SECTION_H (nn).sh_size = new_data2_size; +@@ -696,37 +955,87 @@ + NEW_SECTION_H (nn).sh_addralign = OLD_SECTION_H (n).sh_addralign; + + /* Now copy over what we have in the memory now. */ +- memcpy (NEW_SECTION_H (nn).sh_offset + new_base, +- (caddr_t) OLD_SECTION_H (n).sh_addr, ++ memcpy (NEW_SECTION_H (nn).sh_offset + new_base, ++ (caddr_t) OLD_SECTION_H (n).sh_addr, + new_data2_size); + nn++; + } +- +- memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (n), ++ ++ memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (n), + old_file_h->e_shentsize); + +- /* The new bss section's size is zero, and its file offset and virtual +- address should be off by NEW_DATA2_SIZE. */ +- if (n == old_bss_index) ++ if (n == old_bss_index ++#ifdef HAVE_MIPS_SBSS ++ /* The new bss and sbss section's size is zero, and its file offset ++ and virtual address should be off by NEW_DATA2_SIZE. */ ++ || n == old_sbss_index ++#endif /* HAVE_MIPS_SBSS */ ++ ) + { + /* NN should be `old_bss_index + 1' at this point. */ + NEW_SECTION_H (nn).sh_offset += new_data2_size; + NEW_SECTION_H (nn).sh_addr += new_data2_size; + /* Let the new bss section address alignment be the same as the +- section address alignment followed the old bss section, so ++ section address alignment followed the old bss section, so + this section will be placed in exactly the same place. */ + NEW_SECTION_H (nn).sh_addralign = OLD_SECTION_H (nn).sh_addralign; + NEW_SECTION_H (nn).sh_size = 0; ++ ++#ifdef HAVE_MIPS_SBSS ++ /* On ELF mips, the new data section replaces both .sbss and .bss ++ (we have, after all, written to them.). Adding new_data2_size ++ to the sh_addr and sh_offset of sbss puts sbss at the end of ++ the new data section. setting the size to zero makes it empty. ++ But then, adding the new_data2_size to the bss address puts ++ its start beyond the end of the original bss. If the sbss size ++ was bigger than a page, the bss ends up not covered by the ++ program header. This breaks strip. Since both sbss and bss ++ are zero-sized, just use the same address and file offset for ++ both, guaranteeing other tools will assign them to the same ++ program section (asssuming no sections are loaded at higher ++ offsets.) */ ++ if (n == old_bss_index) { ++ int new_sbss_bss_padding = NEW_SECTION_H(nn).sh_addr - ++ NEW_SECTION_H(nn - 1).sh_addr; ++ printf("sbss to bss offset =0x%x\n", new_sbss_bss_padding); ++ NEW_SECTION_H(nn).sh_addr =NEW_SECTION_H(nn - 1).sh_addr; ++ NEW_SECTION_H(nn).sh_offset =NEW_SECTION_H(nn - 1).sh_offset; ++ } ++#endif /* HAVE_MIPS_SBSS */ + } +- /* Any section that was original placed AFTER the bss section should now +- be off by NEW_DATA2_SIZE. */ +- else if (NEW_SECTION_H (nn).sh_offset >= new_data2_offset) +- NEW_SECTION_H (nn).sh_offset += new_data2_size; +- ++ else ++ { ++ /* Any section that was original placed AFTER the bss ++ section should now be off by NEW_DATA2_SIZE. */ ++#ifdef SOLARIS_POWERPC ++ /* On PPC Reference Platform running Solaris 2.5.1 ++ the plt section is also of type NOBI like the bss section. ++ (not really stored) and therefore sections after the bss ++ section start at the plt offset. The plt section is always ++ the one just before the bss section. ++ It would be better to put the new data section before ++ the .plt section, or use libelf instead. ++ Erik Deumens, deumens@qtp.ufl.edu. */ ++ if (NEW_SECTION_H (nn).sh_offset ++ >= OLD_SECTION_H (old_bss_index-1).sh_offset) ++ NEW_SECTION_H (nn).sh_offset += new_data2_size; ++#else ++ if (round_up (NEW_SECTION_H (nn).sh_offset, ++ OLD_SECTION_H (old_bss_index).sh_addralign) ++ >= new_data2_offset) ++ NEW_SECTION_H (nn).sh_offset += new_data2_size; ++#endif ++ /* Any section that was originally placed after the section ++ header table should now be off by the size of one section ++ header table entry. */ ++ if (NEW_SECTION_H (nn).sh_offset > new_file_h->e_shoff) ++ NEW_SECTION_H (nn).sh_offset += new_file_h->e_shentsize; ++ } ++ + /* If any section hdr refers to the section after the new .data +- section, make it refer to next one because we have inserted ++ section, make it refer to next one because we have inserted + a new section in between. */ +- ++ + PATCH_INDEX (NEW_SECTION_H (nn).sh_link); + /* For symbol tables, info is a symbol table index, + so don't change it. */ +@@ -738,7 +1047,7 @@ + if (NEW_SECTION_H (nn).sh_type == SHT_NULL + || NEW_SECTION_H (nn).sh_type == SHT_NOBITS) + continue; +- ++ + /* Write out the sections. .data and .data1 (and data2, called + ".data" in the strings table) get copied from the current process + instead of the old file. */ +@@ -747,22 +1056,54 @@ + || !strcmp ((old_section_names + NEW_SECTION_H(n).sh_name), + ".sdata") + #endif ++#ifdef HAVE_MIPS_SBSS ++ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), ++ ".sdata") ++ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), ++ ".lit4") ++ || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), ++ ".lit8") ++#endif /* HAVE_MIPS_SBSS */ + || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name), + ".data1")) + src = (caddr_t) OLD_SECTION_H (n).sh_addr; + else + src = old_base + OLD_SECTION_H (n).sh_offset; +- ++ + memcpy (NEW_SECTION_H (nn).sh_offset + new_base, src, + NEW_SECTION_H (nn).sh_size); + ++#ifdef __alpha__ ++ /* Update Alpha COFF symbol table: */ ++ if (strcmp (old_section_names + OLD_SECTION_H (n).sh_name, ".mdebug") ++ == 0) ++ { ++ pHDRR symhdr = (pHDRR) (NEW_SECTION_H (nn).sh_offset + new_base); ++ relocate_ecoff_symhdr(symhdr, new_data2_size); ++ } ++#endif /* __alpha__ */ ++ ++#if defined (__sony_news) && defined (_SYSTYPE_SYSV) ++ if (NEW_SECTION_H (nn).sh_type == SHT_MIPS_DEBUG && old_mdebug_index) ++ { ++ int diff = NEW_SECTION_H(nn).sh_offset ++ - OLD_SECTION_H(old_mdebug_index).sh_offset; ++ HDRR *phdr = (HDRR *)(NEW_SECTION_H (nn).sh_offset + new_base); ++ ++ if (diff) ++ { ++ relocate_ecoff_symhdr(phdr, diff); ++ } ++ } ++#endif /* __sony_news and systype_sysv */ ++ + /* If it is the symbol table, its st_shndx field needs to be patched. */ + if (NEW_SECTION_H (nn).sh_type == SHT_SYMTAB + || NEW_SECTION_H (nn).sh_type == SHT_DYNSYM) + { +- Elf32_Shdr *spt = &NEW_SECTION_H (nn); ++ ElfW(Shdr) *spt = &NEW_SECTION_H (nn); + unsigned int num = spt->sh_size / spt->sh_entsize; +- Elf32_Sym * sym = (Elf32_Sym *) (NEW_SECTION_H (nn).sh_offset + ++ ElfW(Sym) * sym = (ElfW(Sym) *) (NEW_SECTION_H (nn).sh_offset + + new_base); + for (; num--; sym++) + { +@@ -770,7 +1111,7 @@ + || (sym->st_shndx == SHN_ABS) + || (sym->st_shndx == SHN_COMMON)) + continue; +- ++ + PATCH_INDEX (sym->st_shndx); + } + } +@@ -780,21 +1121,71 @@ + for (n = new_file_h->e_shnum - 1; n; n--) + { + byte *symnames; +- Elf32_Sym *symp, *symendp; ++ ElfW(Sym) *symp, *symendp; + + if (NEW_SECTION_H (n).sh_type != SHT_DYNSYM + && NEW_SECTION_H (n).sh_type != SHT_SYMTAB) + continue; + +- symnames = NEW_SECTION_H (NEW_SECTION_H (n).sh_link).sh_offset + new_base; +- symp = (Elf32_Sym *) (NEW_SECTION_H (n).sh_offset + new_base); +- symendp = (Elf32_Sym *) ((byte *)symp + NEW_SECTION_H (n).sh_size); ++ symnames = ((byte *) new_base ++ + NEW_SECTION_H (NEW_SECTION_H (n).sh_link).sh_offset); ++ symp = (ElfW(Sym) *) (NEW_SECTION_H (n).sh_offset + new_base); ++ symendp = (ElfW(Sym) *) ((byte *)symp + NEW_SECTION_H (n).sh_size); + + for (; symp < symendp; symp ++) + if (strcmp ((char *) (symnames + symp->st_name), "_end") == 0 +- || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0) ++ || strcmp ((char *) (symnames + symp->st_name), "end") == 0 ++ || strcmp ((char *) (symnames + symp->st_name), "_edata") == 0 ++ || strcmp ((char *) (symnames + symp->st_name), "edata") == 0) + memcpy (&symp->st_value, &new_bss_addr, sizeof (new_bss_addr)); + } ++ ++ /* This loop seeks out relocation sections for the data section, so ++ that it can undo relocations performed by the runtime linker. */ ++ for (n = new_file_h->e_shnum - 1; n; n--) ++ { ++ ElfW(Shdr) section = NEW_SECTION_H (n); ++ switch (section.sh_type) { ++ default: ++ break; ++ case SHT_REL: ++ case SHT_RELA: ++ /* This code handles two different size structs, but there should ++ be no harm in that provided that r_offset is always the first ++ member. */ ++ nn = section.sh_info; ++ if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data") ++ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name), ++ ".data1")) ++ { ++ ElfW(Addr) offset = NEW_SECTION_H (nn).sh_addr - ++ NEW_SECTION_H (nn).sh_offset; ++ caddr_t reloc = old_base + section.sh_offset, end; ++ for (end = reloc + section.sh_size; reloc < end; ++ reloc += section.sh_entsize) ++ { ++ ElfW(Addr) addr = ((ElfW(Rel) *) reloc)->r_offset - offset; ++#ifdef __alpha__ ++ /* The Alpha ELF binutils currently have a bug that ++ sometimes results in relocs that contain all ++ zeroes. Work around this for now... */ ++ if (((ElfW(Rel) *) reloc)->r_offset == 0) ++ continue; ++#endif ++ memcpy (new_base + addr, old_base + addr, sizeof(ElfW(Addr))); ++ } ++ } ++ break; ++ } ++ } ++ ++#ifdef UNEXEC_USE_MAP_PRIVATE ++ if (lseek (new_file, 0, SEEK_SET) == -1) ++ fatal ("Can't rewind (%s): errno %d\n", new_name, errno); ++ ++ if (write (new_file, new_base, new_file_size) != new_file_size) ++ fatal ("Can't write (%s): errno %d\n", new_name, errno); ++#endif + + /* Close the files and make the new file executable. */ + diff --git a/editors/mule/patches/patch-ac b/editors/mule/patches/patch-ac new file mode 100644 index 00000000000..002845572a8 --- /dev/null +++ b/editors/mule/patches/patch-ac @@ -0,0 +1,22 @@ +$NetBSD: patch-ac,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- lib-src/Makefile.in.in.orig Mon Dec 19 13:13:45 1994 ++++ lib-src/Makefile.in.in Sun Sep 27 19:22:21 1998 +@@ -206,7 +206,7 @@ + if [ `(cd ${archlibdir} && /bin/pwd)` \ + != `(cd ${srcdir} && /bin/pwd)` ]; then \ + for file in ${SCRIPTS}; do \ +- (cd ..; $(INSTALL_PROGRAM) ${srcdir}/$$file ${archlibdir}/$$file); \ ++ (cd ..; $(INSTALL) ${srcdir}/$$file ${archlibdir}/$$file); \ + done ; \ + fi + +@@ -219,7 +219,7 @@ + (cd ..; $(INSTALL_PROGRAM) lib-src/$${file} ${bindir}/$${file}) ; \ + done + for file in ${INSTALLABLE_SCRIPTS} ; do \ +- (cd ..; $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file}) ; \ ++ (cd ..; $(INSTALL) ${srcdir}/$${file} ${bindir}/$${file}) ; \ + done + + uninstall: diff --git a/editors/mule/patches/patch-ad b/editors/mule/patches/patch-ad new file mode 100644 index 00000000000..376ecbb7c3d --- /dev/null +++ b/editors/mule/patches/patch-ad @@ -0,0 +1,12 @@ +$NetBSD: patch-ad,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- configure.orig Mon Sep 20 13:03:01 1999 ++++ configure Mon Sep 20 13:35:04 1999 +@@ -587,6 +587,7 @@ + machine=hp9000s300 ;; + mips-*-netbsd*) machine=pmax ;; + ns32k-*-netbsd*) machine=ns32000 ;; ++ powerpc-*-netbsd*) machine=powerpc ;; + sparc-*-netbsd*) machine=sparc ;; + esac + ;; diff --git a/editors/mule/patches/patch-ae b/editors/mule/patches/patch-ae new file mode 100644 index 00000000000..cb5215fd4da --- /dev/null +++ b/editors/mule/patches/patch-ae @@ -0,0 +1,173 @@ +$NetBSD: patch-ae,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +NetBSD patch-bd,v 1.2 1999/06/04 04:15:44 mycroft Exp +original patch from editors/emacs pkg. + +--- /dev/null Mon Sep 20 13:51:57 1999 ++++ src/m/powerpc.h Mon Sep 20 23:21:37 1999 +@@ -0,0 +1,165 @@ ++/* machine description file For the PowerPC chip. ++ Copyright (C) 1994, 1997 Free Software Foundation, Inc. ++ ++This file is part of GNU Emacs. ++ ++GNU Emacs is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 1, or (at your option) ++any later version. ++ ++GNU Emacs is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GNU Emacs; see the file COPYING. If not, write to ++the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++/* The following three symbols give information on ++ the size of various data types. */ ++ ++#define SHORTBITS 16 /* Number of bits in a short */ ++ ++#define INTBITS 32 /* Number of bits in an int */ ++ ++#define LONGBITS 32 /* Number of bits in a long */ ++ ++/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word ++ is the most significant byte. */ ++ ++#define WORDS_BIG_ENDIAN ++ ++/* Define NO_ARG_ARRAY if you cannot take the address of the first of a ++ * group of arguments and treat it as an array of the arguments. */ ++ ++#define NO_ARG_ARRAY ++ ++/* Define WORD_MACHINE if addresses and such have ++ * to be corrected before they can be used as byte counts. */ ++ ++/* #define WORD_MACHINE */ ++ ++/* Now define a symbol for the cpu type, if your compiler ++ does not define it automatically: ++ Ones defined so far include vax, m68000, ns16000, pyramid, ++ orion, tahoe, APOLLO and many others */ ++ ++/* __powerpc__ defined automatically */ ++ ++ ++/* Use type EMACS_INT rather than a union, to represent Lisp_Object */ ++/* This is desirable for most machines. */ ++ ++#define NO_UNION_TYPE ++ ++/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend ++ the 24-bit bit field into an int. In other words, if bit fields ++ are always unsigned. ++ ++ If you use NO_UNION_TYPE, this flag does not matter. */ ++ ++#define EXPLICIT_SIGN_EXTEND ++ ++/* Data type of load average, as read out of kmem. */ ++ ++#define LOAD_AVE_TYPE long ++ ++/* Convert that into an integer that is 100 for a load average of 1.0 */ ++ ++#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE) ++ ++/* Define CANNOT_DUMP on machines where unexec does not work. ++ Then the function dump-emacs will not be defined ++ and temacs will do (load "loadup") automatically unless told otherwise. */ ++ ++/* #define CANNOT_DUMP */ ++ ++/* Define VIRT_ADDR_VARIES if the virtual addresses of ++ pure and impure space as loaded can vary, and even their ++ relative order cannot be relied on. ++ ++ Otherwise Emacs assumes that text space precedes data space, ++ numerically. */ ++ ++/* #define VIRT_ADDR_VARIES */ ++ ++/* Define C_ALLOCA if this machine does not support a true alloca ++ and the one written in C should be used instead. ++ Define HAVE_ALLOCA to say that the system provides a properly ++ working alloca function and it should be used. ++ Define neither one if an assembler-language alloca ++ in the file alloca.s should be used. */ ++ ++#define HAVE_ALLOCA ++ ++/* GNU malloc and the relocating allocator do not work together ++ with X. [Who wrote that?] */ ++ ++/* May 1995: reportedly [Rainer Schoepf ] both the ++ system and the gnu malloc system work with "alpha-dec-osf3.0" and ++ "alpha-dec-osf3.2". */ ++ ++/* May 1995: it seems to me [Morten Welinder ] that both ++ mallocs work with "alpha-dec-osf2.0", but I daren't break anything ++ right now. Feel free to play if you want. */ ++ ++/* #define SYSTEM_MALLOC */ ++ ++/* Define NO_REMAP if memory segmentation makes it not work well ++ to change the boundary between the text section and data section ++ when Emacs is dumped. If you define this, the preloaded Lisp ++ code will not be sharable; but that's better than failing completely. */ ++ ++#define NO_REMAP ++ ++/* Some really obscure 4.2-based systems (like Sequent DYNIX) ++ * do not support asynchronous I/O (using SIGIO) on sockets, ++ * even though it works fine on tty's. If you have one of ++ * these systems, define the following, and then use it in ++ * config.h (or elsewhere) to decide when (not) to use SIGIO. ++ * ++ * You'd think this would go in an operating-system description file, ++ * but since it only occurs on some, but not all, BSD systems, the ++ * reasonable place to select for it is in the machine description ++ * file. ++ */ ++ ++/* #define NO_SOCK_SIGIO */ ++ ++ ++#ifdef __ELF__ ++/* With ELF, make sure that all common symbols get allocated to in the ++ data section. Otherwise, the dump of temacs may miss variables in ++ the shared library that have been initialized. For example, with ++ GNU libc, __malloc_initialized would normally be resolved to the ++ shared library's .bss section, which is fatal. */ ++# ifdef __GNUC__ ++# define C_SWITCH_MACHINE -fno-common ++# else ++# error What gives? Fix me if DEC Unix supports ELF now. ++# endif ++#endif ++ ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++#define ORDINARY_LINK ++#endif ++ ++#ifdef __ELF__ ++#undef UNEXEC ++#define UNEXEC unexelf.o ++#endif ++ ++/* On the Alpha it's best to avoid including TERMIO since struct ++ termio and struct termios are mutually incompatible. */ ++#define NO_TERMIO ++ ++#if defined (LINUX) || defined (__NetBSD__) || defined (__OpenBSD__) ++# define TEXT_END ({ extern int _etext; &_etext; }) ++#endif ++ ++#if (defined (__NetBSD__) || defined (__OpenBSD__)) && defined (__ELF__) ++#define HAVE_TEXT_START ++#endif diff --git a/editors/mule/patches/patch-af b/editors/mule/patches/patch-af new file mode 100644 index 00000000000..a4cc8b29f35 --- /dev/null +++ b/editors/mule/patches/patch-af @@ -0,0 +1,15 @@ +$NetBSD: patch-af,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/lisp.h.orig Mon Sep 20 13:42:34 1999 ++++ src/lisp.h Mon Sep 20 13:43:50 1999 +@@ -30,6 +30,10 @@ + /* 93.1.15 modified for Mule Ver.0.9.7.1 by Y.Akiba + Patch for NeXT is updated. */ + ++#if defined(__NetBSD__) ++#include /* for DBLL_DIG */ ++#endif ++ + /* Define the fundamental Lisp data structures */ + + /* Define an integer type with the same size as Lisp_Object. diff --git a/editors/mule/patches/patch-ag b/editors/mule/patches/patch-ag new file mode 100644 index 00000000000..7dc741a734f --- /dev/null +++ b/editors/mule/patches/patch-ag @@ -0,0 +1,13 @@ +$NetBSD: patch-ag,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/coding.c.orig Mon Sep 20 23:39:02 1999 ++++ src/coding.c Mon Sep 20 23:39:41 1999 +@@ -154,7 +154,7 @@ + /* 92.4.3, 92.12.18 by K.Handa */ + Lisp_Object Qcoding_system, Qcoding_system_p, Qnon_nil_coding_system_p; + Lisp_Object Qeol_type; +-Lisp_Object Qpriority; ++extern Lisp_Object Qpriority; + /* end of patch */ + #endif /* emacs */ + diff --git a/editors/mule/patches/patch-ah b/editors/mule/patches/patch-ah new file mode 100644 index 00000000000..407b467b33d --- /dev/null +++ b/editors/mule/patches/patch-ah @@ -0,0 +1,30 @@ +$NetBSD: patch-ah,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/fileio.c.orig Mon Sep 20 23:29:04 1999 ++++ src/fileio.c Mon Sep 20 23:30:03 1999 +@@ -2604,8 +2604,6 @@ + return value; + } + +-#ifdef unix +- + DEFUN ("unix-sync", Funix_sync, Sunix_sync, 0, 0, "", + "Tell Unix to finish all pending disk updates.") + () +@@ -2614,8 +2612,6 @@ + return Qnil; + } + +-#endif /* unix */ +- + DEFUN ("file-newer-than-file-p", Ffile_newer_than_file_p, Sfile_newer_than_file_p, 2, 2, 0, + "Return t if file FILE1 is newer than file FILE2.\n\ + If FILE1 does not exist, the answer is nil;\n\ +@@ -4507,7 +4503,5 @@ + defsubr (&Sread_file_name_internal); + defsubr (&Sread_file_name); + +-#ifdef unix + defsubr (&Sunix_sync); +-#endif + } diff --git a/editors/mule/patches/patch-ai b/editors/mule/patches/patch-ai new file mode 100644 index 00000000000..d327e9285d3 --- /dev/null +++ b/editors/mule/patches/patch-ai @@ -0,0 +1,13 @@ +$NetBSD: patch-ai,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/floatfns.c.orig Mon Sep 20 23:43:32 1999 ++++ src/floatfns.c Mon Sep 20 23:43:41 1999 +@@ -49,7 +49,7 @@ + #include "lisp.h" + #include "syssignal.h" + +-Lisp_Object Qarith_error; ++extern Lisp_Object Qarith_error; + + #ifdef LISP_FLOAT_TYPE + diff --git a/editors/mule/patches/patch-aj b/editors/mule/patches/patch-aj new file mode 100644 index 00000000000..470f93a4dbe --- /dev/null +++ b/editors/mule/patches/patch-aj @@ -0,0 +1,15 @@ +$NetBSD: patch-aj,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/getloadavg.c.orig Mon Sep 20 23:29:10 1999 ++++ src/getloadavg.c Mon Sep 20 23:30:54 1999 +@@ -64,10 +64,7 @@ + /* Both the Emacs and non-Emacs sections want this. Some + configuration files' definitions for the LOAD_AVE_CVT macro (like + sparc.h's) use macros like FSCALE, defined here. */ +-#ifdef unix + #include +-#endif +- + + #ifdef HAVE_CONFIG_H + #if defined (emacs) || defined (CONFIG_BROKETS) diff --git a/editors/mule/patches/patch-ak b/editors/mule/patches/patch-ak new file mode 100644 index 00000000000..ec169fd83ea --- /dev/null +++ b/editors/mule/patches/patch-ak @@ -0,0 +1,13 @@ +$NetBSD: patch-ak,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/keyboard.c.orig Mon Sep 20 23:36:21 1999 ++++ src/keyboard.c Mon Sep 20 23:37:10 1999 +@@ -301,7 +301,7 @@ + + /* The timestamp of the last input event we received from the X server. + X Windows wants this for selection ownership. */ +-unsigned long last_event_timestamp; ++extern unsigned long last_event_timestamp; + + Lisp_Object Qself_insert_command; + Lisp_Object Qforward_char; diff --git a/editors/mule/patches/patch-al b/editors/mule/patches/patch-al new file mode 100644 index 00000000000..5df6659b576 --- /dev/null +++ b/editors/mule/patches/patch-al @@ -0,0 +1,16 @@ +$NetBSD: patch-al,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +--- src/lread.c.orig Mon Sep 20 23:44:46 1999 ++++ src/lread.c Mon Sep 20 23:45:25 1999 +@@ -86,9 +86,9 @@ + + Lisp_Object Qread_char, Qget_file_char, Qstandard_input, Qcurrent_load_list; + Lisp_Object Qvariable_documentation, Vvalues, Vstandard_input, Vafter_load_alist; +-Lisp_Object Qascii_character, Qload; ++Lisp_Object Qascii_character; + +-extern Lisp_Object Qevent_symbol_element_mask; ++extern Lisp_Object Qload, Qevent_symbol_element_mask; + + /* non-zero if inside `load' */ + int load_in_progress; diff --git a/editors/mule/patches/patch-am b/editors/mule/patches/patch-am new file mode 100644 index 00000000000..249b95150cc --- /dev/null +++ b/editors/mule/patches/patch-am @@ -0,0 +1,13 @@ +$NetBSD: patch-am,v 1.1.1.1 2000/11/21 05:21:09 kei Exp $ + +--- src/xfns.c.orig Tue Sep 21 00:13:59 1999 ++++ src/xfns.c Tue Sep 21 00:14:42 1999 +@@ -226,7 +226,7 @@ + Lisp_Object Qbox; + Lisp_Object Qcursor_color; + Lisp_Object Qcursor_type; +-Lisp_Object Qfont; ++extern Lisp_Object Qfont; + Lisp_Object Qforeground_color; + Lisp_Object Qgeometry; + /* Lisp_Object Qicon; */ diff --git a/editors/mule/patches/patch-an b/editors/mule/patches/patch-an new file mode 100644 index 00000000000..d0a2ee24fa1 --- /dev/null +++ b/editors/mule/patches/patch-an @@ -0,0 +1,38 @@ +$NetBSD: patch-an,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** Makefile.in.orig Tue Dec 20 11:01:54 1994 +--- Makefile.in Fri Nov 17 15:29:34 2000 +*************** +*** 186,192 **** + # Subdirectories to make recursively. `lisp' is not included + # because the compiled lisp files are part of the distribution + # and you cannot remake them without installing Emacs first. +! SUBDIR = lib-src src + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile +--- 186,192 ---- + # Subdirectories to make recursively. `lisp' is not included + # because the compiled lisp files are part of the distribution + # and you cannot remake them without installing Emacs first. +! SUBDIR = lib-src src man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile +*************** +*** 341,347 **** + if [ ! -f ${infodir}/dir ] && [ -f dir ]; then \ + (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \ + fi ; \ +! for f in cl* dired-x* emacs* forms* gnus* info* sc* vip* \ + antenews* canna* egg* languages* m2ps* mule* kbd-trans* \ + quail* terminology* CCL* ISO2022* R2L* XFONT*; do \ + (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f); \ +--- 341,347 ---- + if [ ! -f ${infodir}/dir ] && [ -f dir ]; then \ + (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \ + fi ; \ +! for f in cl* dired-x* emacs* forms* gnus* sc* vip* \ + antenews* canna* egg* languages* m2ps* mule* kbd-trans* \ + quail* terminology* CCL* ISO2022* R2L* XFONT*; do \ + (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f); \ diff --git a/editors/mule/patches/patch-ao b/editors/mule/patches/patch-ao new file mode 100644 index 00000000000..98c613162f2 --- /dev/null +++ b/editors/mule/patches/patch-ao @@ -0,0 +1,46 @@ +$NetBSD: patch-ao,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/Makefile.orig Sun Jul 3 06:35:17 1994 +--- man/Makefile Fri Nov 17 20:49:09 2000 +*************** +*** 4,10 **** + MAKEINFO = makeinfo + TEXINDEX_OBJS = texindex.o getopt.o + INFO_TARGETS = ../info/emacs ../info/cl ../info/forms ../info/vip \ +! ../info/gnus ../info/sc ../info/info ../info/dired-x + DVI_TARGETS = emacs.dvi cl.dvi forms.dvi vip.dvi gnus.dvi sc.dvi dired-x.dvi + INFOSOURCES = info.texi info-stnd.texi + +--- 4,10 ---- + MAKEINFO = makeinfo + TEXINDEX_OBJS = texindex.o getopt.o + INFO_TARGETS = ../info/emacs ../info/cl ../info/forms ../info/vip \ +! ../info/gnus ../info/sc ../info/dired-x + DVI_TARGETS = emacs.dvi cl.dvi forms.dvi vip.dvi gnus.dvi sc.dvi dired-x.dvi + INFOSOURCES = info.texi info-stnd.texi + +*************** +*** 54,59 **** +--- 54,60 ---- + gnu1.texi \ + glossary.texi + ++ all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) +*************** +*** 66,77 **** + + getopt.o: getopt.c + $(CC) -Demacs -I../src -I../lib-src -c getopt.c +- +- ../info/info: ${INFOSOURCES} +- $(MAKEINFO) --no-split info.texi +- +- info.dvi: texindex ${INFOSOURCES} +- $(TEXI2DVI) info.texi + + ../info/emacs: ${EMACSSOURCES} + $(MAKEINFO) emacs.texi +--- 67,72 ---- diff --git a/editors/mule/patches/patch-ar b/editors/mule/patches/patch-ar new file mode 100644 index 00000000000..6715838ad8a --- /dev/null +++ b/editors/mule/patches/patch-ar @@ -0,0 +1,18 @@ +$NetBSD: patch-ar,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/cl.texi.orig Fri Nov 17 13:56:11 2000 +--- man/cl.texi Fri Nov 17 14:09:59 2000 +*************** +*** 2,7 **** +--- 2,12 ---- + @setfilename ../info/cl + @settitle Common Lisp Extensions + ++ @dircategory Editors ++ @direntry ++ * CL: (cl). Partial Common Lisp support for Emacs Lisp. ++ @end direntry ++ + @iftex + @finalout + @end iftex diff --git a/editors/mule/patches/patch-as b/editors/mule/patches/patch-as new file mode 100644 index 00000000000..27a8e0e95e2 --- /dev/null +++ b/editors/mule/patches/patch-as @@ -0,0 +1,86 @@ +$NetBSD: patch-as,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/dired-x.texi.orig Sun Aug 14 01:58:50 1994 +--- man/dired-x.texi Fri Nov 17 21:38:37 2000 +*************** +*** 18,23 **** +--- 18,29 ---- + @setfilename ../info/dired-x + @c dired-x.el REVISION NUMBER + @settitle Dired Extra Version 2 User's Manual ++ ++ @dircategory Editors ++ @direntry ++ * Dired-X: (dired-x). Dired Extra Features. ++ @end direntry ++ + @iftex + @finalout + @end iftex +*************** +*** 196,227 **** + @enumerate + @item + Omitting of uninteresting files from dired listing. +! @itemize + @xref{Omitting Files in Dired} + @end itemize + @item + Local variables for dired directories. +! @itemize + @xref{Local Variables} + @end itemize + @item + Guessing shell commands in dired buffers. +! @itemize + @xref{Shell Command Guessing} + @end itemize + @item + Running dired command in non-dired buffers. +! @itemize + @xref{Virtual Dired} + @end itemize + @item + Finding a file mentioned in a buffer +! @itemize + @xref{Find File At Point} + @end itemize + @item + Commands using file marking. +! @itemize + @xref{Advanced Mark Commands} + @end itemize + @end enumerate +--- 202,233 ---- + @enumerate + @item + Omitting of uninteresting files from dired listing. +! @itemize @bullet + @xref{Omitting Files in Dired} + @end itemize + @item + Local variables for dired directories. +! @itemize @bullet + @xref{Local Variables} + @end itemize + @item + Guessing shell commands in dired buffers. +! @itemize @bullet + @xref{Shell Command Guessing} + @end itemize + @item + Running dired command in non-dired buffers. +! @itemize @bullet + @xref{Virtual Dired} + @end itemize + @item + Finding a file mentioned in a buffer +! @itemize @bullet + @xref{Find File At Point} + @end itemize + @item + Commands using file marking. +! @itemize @bullet + @xref{Advanced Mark Commands} + @end itemize + @end enumerate diff --git a/editors/mule/patches/patch-au b/editors/mule/patches/patch-au new file mode 100644 index 00000000000..026c11a4c0f --- /dev/null +++ b/editors/mule/patches/patch-au @@ -0,0 +1,24 @@ +$NetBSD: patch-au,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/emacs.texi.orig Fri Nov 4 20:08:52 1994 +--- man/emacs.texi Fri Nov 17 20:35:02 2000 +*************** +*** 1,10 **** +--- 1,17 ---- + \input texinfo + ++ @setfilename ../info/emacs ++ + @ifinfo + @c The edition number appears in several places in this file + This corresponds to the tenth edition of the @cite{GNU Emacs Manual}, + for Emacs version 19.28. + @c Please REMEMBER to update edition number in *three* places in this file. ++ ++ @dircategory Editors ++ @direntry ++ * Emacs: (emacs). The extensible self-documenting text editor. ++ @end direntry + + Published by the Free Software Foundation + 675 Massachusetts Avenue diff --git a/editors/mule/patches/patch-av b/editors/mule/patches/patch-av new file mode 100644 index 00000000000..88908272402 --- /dev/null +++ b/editors/mule/patches/patch-av @@ -0,0 +1,19 @@ +$NetBSD: patch-av,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/forms.texi.orig Fri Nov 17 13:56:59 2000 +--- man/forms.texi Fri Nov 17 14:15:09 2000 +*************** +*** 16,21 **** +--- 16,27 ---- + @c @smallbook + @comment %**end of header (This is for running Texinfo on a region.) + ++ @dircategory Editors ++ @direntry ++ * Forms: (forms). Emacs package for editing data bases ++ by filling in forms. ++ @end direntry ++ + @ifinfo + This file documents Forms mode, a form-editing major mode for GNU Emacs. + diff --git a/editors/mule/patches/patch-aw b/editors/mule/patches/patch-aw new file mode 100644 index 00000000000..bf40370b7ef --- /dev/null +++ b/editors/mule/patches/patch-aw @@ -0,0 +1,19 @@ +$NetBSD: patch-aw,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/gnus.texi.orig Fri Nov 17 13:57:09 2000 +--- man/gnus.texi Fri Nov 17 15:09:32 2000 +*************** +*** 3,8 **** +--- 3,14 ---- + @comment %**start of header (This is for running Texinfo on a region.) + @setfilename ../info/gnus + @settitle GNUS 3.15 Manual ++ ++ @dircategory Editors ++ @direntry ++ * GNUS: (gnus). The newsreader GNUS. ++ @end direntry ++ + @iftex + @finalout + @end iftex diff --git a/editors/mule/patches/patch-az b/editors/mule/patches/patch-az new file mode 100644 index 00000000000..ef4e1022e21 --- /dev/null +++ b/editors/mule/patches/patch-az @@ -0,0 +1,20 @@ +$NetBSD: patch-az,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/sc.texi.orig Fri Nov 17 13:58:18 2000 +--- man/sc.texi Fri Nov 17 14:57:08 2000 +*************** +*** 6,11 **** +--- 6,18 ---- + @iftex + @finalout + @end iftex ++ ++ @dircategory Editors ++ @direntry ++ * SC: (sc). Supercite lets you cite parts of messages you're ++ replying to, in flexible ways. ++ @end direntry ++ + @c @setchapternewpage odd % For book style double sided manual. + @comment %**end of header (This is for running Texinfo on a region.) + @c @smallbook diff --git a/editors/mule/patches/patch-ba b/editors/mule/patches/patch-ba new file mode 100644 index 00000000000..a4ae126716e --- /dev/null +++ b/editors/mule/patches/patch-ba @@ -0,0 +1,18 @@ +$NetBSD: patch-ba,v 1.1.1.1 2000/11/21 05:21:10 kei Exp $ + +*** man/vip.texi.orig Fri Nov 17 13:58:36 2000 +--- man/vip.texi Fri Nov 17 14:58:20 2000 +*************** +*** 25,30 **** +--- 25,35 ---- + @setfilename ../info/vip + @settitle VIP + ++ @dircategory Editors ++ @direntry ++ * VIP: (vip). An VI-emulation for Emacs. ++ @end direntry ++ + @iftex + @finalout + @end iftex diff --git a/editors/mule/patches/patch-bb b/editors/mule/patches/patch-bb new file mode 100644 index 00000000000..2fd6dbec669 --- /dev/null +++ b/editors/mule/patches/patch-bb @@ -0,0 +1,4272 @@ +$NetBSD: patch-bb,v 1.1.1.1 2000/11/21 05:21:14 kei Exp $ + +*** man/texinfo.tex.orig Fri Nov 17 16:10:16 2000 +--- man/texinfo.tex Fri Nov 17 20:00:13 2000 +*************** +*** 1,6 **** +! %% TeX macros to handle texinfo files + +! % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc. + + %This texinfo.tex file is free software; you can redistribute it and/or + %modify it under the terms of the GNU General Public License as +--- 1,8 ---- +! %% TeX macros to handle Texinfo files. +! %% Id: texinfo.tex,v 1.1.1.2 1997/09/24 19:26:42 gwr Exp + +! % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, +! % 94, 95, 96, 97 Free Software Foundation, Inc. + + %This texinfo.tex file is free software; you can redistribute it and/or + %modify it under the terms of the GNU General Public License as +*************** +*** 14,51 **** + + %You should have received a copy of the GNU General Public License + %along with this texinfo.tex file; see the file COPYING. If not, write +! %to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, +! %USA. + + + %In other words, you are welcome to use, share and improve this program. + %You are forbidden to forbid anyone else to use, share and improve + %what you give them. Help stamp out software-hoarding! + + % This automatically updates the version number based on RCS. + \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} +! \deftexinfoversion Revision: 2.133 + \message{Loading texinfo package [Version \texinfoversion]:} + +! % Print the version number if in a .fmt file. +! \everyjob{\message{[Texinfo version \texinfoversion]}\message{}} + + % Save some parts of plain tex whose names we will redefine. + +- \let\ptextilde=\~ +- \let\ptexlbrace=\{ +- \let\ptexrbrace=\} +- \let\ptexdots=\dots +- \let\ptexdot=\. +- \let\ptexstar=\* +- \let\ptexend=\end +- \let\ptexbullet=\bullet + \let\ptexb=\b + \let\ptexc=\c + \let\ptexi=\i + \let\ptext=\t +- \let\ptexl=\l +- \let\ptexL=\L + + % Be sure we're in horizontal mode when doing a tie, since we make space + % equivalent to this in @example-like environments. Otherwise, a space +--- 16,65 ---- + + %You should have received a copy of the GNU General Public License + %along with this texinfo.tex file; see the file COPYING. If not, write +! %to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +! %Boston, MA 02111-1307, USA. + + + %In other words, you are welcome to use, share and improve this program. + %You are forbidden to forbid anyone else to use, share and improve + %what you give them. Help stamp out software-hoarding! + ++ ++ % Send bug reports to bug-texinfo@prep.ai.mit.edu. ++ % Please include a *precise* test case in each bug report. ++ ++ ++ % Make it possible to create a .fmt file just by loading this file: ++ % if the underlying format is not loaded, start by loading it now. ++ % Added by gildea November 1993. ++ \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi ++ + % This automatically updates the version number based on RCS. + \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} +! \deftexinfoversion Revision: 1.1.1.2 + \message{Loading texinfo package [Version \texinfoversion]:} + +! % If in a .fmt file, print the version number +! % and turn on active characters that we couldn't do earlier because +! % they might have appeared in the input file name. +! \everyjob{\message{[Texinfo version \texinfoversion]}\message{} +! \catcode`+=\active \catcode`\_=\active} + + % Save some parts of plain tex whose names we will redefine. + + \let\ptexb=\b ++ \let\ptexbullet=\bullet + \let\ptexc=\c ++ \let\ptexcomma=\, ++ \let\ptexdot=\. ++ \let\ptexdots=\dots ++ \let\ptexend=\end ++ \let\ptexequiv = \equiv + \let\ptexi=\i ++ \let\ptexlbrace=\{ ++ \let\ptexrbrace=\} ++ \let\ptexstar=\* + \let\ptext=\t + + % Be sure we're in horizontal mode when doing a tie, since we make space + % equivalent to this in @example-like environments. Otherwise, a space +*************** +*** 53,61 **** + % since \penalty is valid in vertical mode, we'd end up putting the + % penalty on the vertical list instead of in the new paragraph. + {\catcode`@ = 11 +! \gdef\tie{\leavevmode\penalty\@M\ } + } +! \let\~ = \tie % And make it available as @~. + + \message{Basics,} + \chardef\other=12 +--- 67,78 ---- + % since \penalty is valid in vertical mode, we'd end up putting the + % penalty on the vertical list instead of in the new paragraph. + {\catcode`@ = 11 +! % Avoid using \@M directly, because that causes trouble +! % if the definition is written into an index file. +! \global\let\tiepenalty = \@M +! \gdef\tie{\leavevmode\penalty\tiepenalty\ } + } +! + + \message{Basics,} + \chardef\other=12 +*************** +*** 86,95 **** + \hyphenation{eshell} + + % Margin to add to right of even pages, to left of odd pages. +! \newdimen \bindingoffset \bindingoffset=0pt +! \newdimen \normaloffset \normaloffset=\hoffset + \newdimen\pagewidth \newdimen\pageheight +- \pagewidth=\hsize \pageheight=\vsize + + % Sometimes it is convenient to have everything in the transcript file + % and nothing on the terminal. We don't just call \tracingall here, +--- 103,111 ---- + \hyphenation{eshell} + + % Margin to add to right of even pages, to left of odd pages. +! \newdimen \bindingoffset +! \newdimen \normaloffset + \newdimen\pagewidth \newdimen\pageheight + + % Sometimes it is convenient to have everything in the transcript file + % and nothing on the terminal. We don't just call \tracingall here, +*************** +*** 102,182 **** + \showboxbreadth\maxdimen\showboxdepth\maxdimen + }% + +! %---------------------Begin change----------------------- + % +! %%%% For @cropmarks command. +! % Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986 + % + \newdimen\cornerlong \newdimen\cornerthick +! \newdimen \topandbottommargin +! \newdimen \outerhsize \newdimen \outervsize +! \cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks + \outerhsize=7in + %\outervsize=9.5in + % Alternative @smallbook page size is 9.25in + \outervsize=9.25in + \topandbottommargin=.75in +! % +! %---------------------End change----------------------- + + % \onepageout takes a vbox as an argument. Note that \pagecontents +! % does insertions itself, but you have to call it yourself. +! \chardef\PAGE=255 \output={\onepageout{\pagecontents\PAGE}} +! \def\onepageout#1{\hoffset=\normaloffset +! \ifodd\pageno \advance\hoffset by \bindingoffset +! \else \advance\hoffset by -\bindingoffset\fi +! {\escapechar=`\\\relax % makes sure backslash is used in output files. +! \shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}% +! {\let\hsize=\pagewidth \makefootline}}}% +! \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi} +! +! %%%% For @cropmarks command %%%% +! +! % Here is a modification of the main output routine for Near East Publications +! % This provides right-angle cropmarks at all four corners. +! % The contents of the page are centerlined into the cropmarks, +! % and any desired binding offset is added as an \hskip on either +! % site of the centerlined box. (P. A. MacKay, 12 November, 1986) +! % +! \def\croppageout#1{\hoffset=0pt % make sure this doesn't mess things up +! {\escapechar=`\\\relax % makes sure backslash is used in output files. +! \shipout +! \vbox to \outervsize{\hsize=\outerhsize +! \vbox{\line{\ewtop\hfill\ewtop}} +! \nointerlineskip +! \line{\vbox{\moveleft\cornerthick\nstop} +! \hfill +! \vbox{\moveright\cornerthick\nstop}} +! \vskip \topandbottommargin +! \centerline{\ifodd\pageno\hskip\bindingoffset\fi +! \vbox{ +! {\let\hsize=\pagewidth \makeheadline} +! \pagebody{#1} +! {\let\hsize=\pagewidth \makefootline}} +! \ifodd\pageno\else\hskip\bindingoffset\fi} +! \vskip \topandbottommargin plus1fill minus1fill +! \boxmaxdepth\cornerthick +! \line{\vbox{\moveleft\cornerthick\nsbot} +! \hfill +! \vbox{\moveright\cornerthick\nsbot}} +! \nointerlineskip +! \vbox{\line{\ewbot\hfill\ewbot}} +! }} + \advancepageno +! \ifnum\outputpenalty>-20000 \else\dosupereject\fi} +! % +! % Do @cropmarks to get crop marks +! \def\cropmarks{\let\onepageout=\croppageout } + + \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} + {\catcode`\@ =11 + \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi + \dimen@=\dp#1 \unvbox#1 + \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + } + +- % + % Here are the rules for the cropmarks. Note that they are + % offset so that the space between them is truly \outerhsize or \outervsize + % (P. A. MacKay, 12 November, 1986) +--- 118,225 ---- + \showboxbreadth\maxdimen\showboxdepth\maxdimen + }% + +! % For @cropmarks command. +! % Do @cropmarks to get crop marks. +! % +! \newif\ifcropmarks +! \let\cropmarks = \cropmarkstrue + % +! % Dimensions to add cropmarks at corners. +! % Added by P. A. MacKay, 12 Nov. 1986 + % + \newdimen\cornerlong \newdimen\cornerthick +! \newdimen\topandbottommargin +! \newdimen\outerhsize \newdimen\outervsize +! \cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks + \outerhsize=7in + %\outervsize=9.5in + % Alternative @smallbook page size is 9.25in + \outervsize=9.25in + \topandbottommargin=.75in +! +! % Main output routine. +! \chardef\PAGE = 255 +! \output = {\onepageout{\pagecontents\PAGE}} +! +! \newbox\headlinebox +! \newbox\footlinebox + + % \onepageout takes a vbox as an argument. Note that \pagecontents +! % does insertions, but you have to call it yourself. +! \def\onepageout#1{% +! \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi +! % +! \ifodd\pageno \advance\hoffset by \bindingoffset +! \else \advance\hoffset by -\bindingoffset\fi +! % +! % Do this outside of the \shipout so @code etc. will be expanded in +! % the headline as they should be, not taken literally (outputting ''code). +! \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% +! \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% +! % +! {% +! % Have to do this stuff outside the \shipout because we want it to +! % take effect in \write's, yet the group defined by the \vbox ends +! % before the \shipout runs. +! % +! \escapechar = `\\ % use backslash in output files. +! \indexdummies % don't expand commands in the output. +! \normalturnoffactive % \ in index entries must not stay \, e.g., if +! % the page break happens to be in the middle of an example. +! \shipout\vbox{% +! \ifcropmarks \vbox to \outervsize\bgroup +! \hsize = \outerhsize +! \line{\ewtop\hfil\ewtop}% +! \nointerlineskip +! \line{% +! \vbox{\moveleft\cornerthick\nstop}% +! \hfill +! \vbox{\moveright\cornerthick\nstop}% +! }% +! \vskip\topandbottommargin +! \line\bgroup +! \hfil % center the page within the outer (page) hsize. +! \ifodd\pageno\hskip\bindingoffset\fi +! \vbox\bgroup +! \fi +! % +! \unvbox\headlinebox +! \pagebody{#1}% +! \unvbox\footlinebox +! % +! \ifcropmarks +! \egroup % end of \vbox\bgroup +! \hfil\egroup % end of (centering) \line\bgroup +! \vskip\topandbottommargin plus1fill minus1fill +! \boxmaxdepth = \cornerthick +! \line{% +! \vbox{\moveleft\cornerthick\nsbot}% +! \hfill +! \vbox{\moveright\cornerthick\nsbot}% +! }% +! \nointerlineskip +! \line{\ewbot\hfil\ewbot}% +! \egroup % \vbox from first cropmarks clause +! \fi +! }% end of \shipout\vbox +! }% end of group with \turnoffactive + \advancepageno +! \ifnum\outputpenalty>-20000 \else\dosupereject\fi +! } +! +! \newinsert\margin \dimen\margin=\maxdimen + + \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} + {\catcode`\@ =11 + \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi ++ % marginal hacks, juha@viisa.uucp (Juha Takala) ++ \ifvoid\margin\else % marginal info is present ++ \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi + \dimen@=\dp#1 \unvbox#1 + \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + } + + % Here are the rules for the cropmarks. Note that they are + % offset so that the space between them is truly \outerhsize or \outervsize + % (P. A. MacKay, 12 November, 1986) +*************** +*** 344,354 **** + %\def\'{{'}} + + % Used to generate quoted braces. +- + \def\mylbrace {{\tt \char '173}} + \def\myrbrace {{\tt \char '175}} + \let\{=\mylbrace + \let\}=\myrbrace + + % @: forces normal size whitespace following. + \def\:{\spacefactor=1000 } +--- 387,429 ---- + %\def\'{{'}} + + % Used to generate quoted braces. + \def\mylbrace {{\tt \char '173}} + \def\myrbrace {{\tt \char '175}} + \let\{=\mylbrace + \let\}=\myrbrace ++ \begingroup ++ % Definitions to produce actual \{ & \} command in an index. ++ \catcode`\{ = 12 \catcode`\} = 12 ++ \catcode`\[ = 1 \catcode`\] = 2 ++ \catcode`\@ = 0 \catcode`\\ = 12 ++ @gdef@lbracecmd[\{]% ++ @gdef@rbracecmd[\}]% ++ @endgroup ++ ++ % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent ++ % Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. ++ \let\, = \c ++ \let\dotaccent = \. ++ \def\ringaccent#1{{\accent23 #1}} ++ \let\tieaccent = \t ++ \let\ubaraccent = \b ++ \let\udotaccent = \d ++ ++ % Other special characters: @questiondown @exclamdown ++ % Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. ++ \def\questiondown{?`} ++ \def\exclamdown{!`} ++ ++ % Dotless i and dotless j, used for accents. ++ \def\imacro{i} ++ \def\jmacro{j} ++ \def\dotless#1{% ++ \def\temp{#1}% ++ \ifx\temp\imacro \ptexi ++ \else\ifx\temp\jmacro \j ++ \else \errmessage{@dotless can be used only with i or j}% ++ \fi\fi ++ } + + % @: forces normal size whitespace following. + \def\:{\spacefactor=1000 } +*************** +*** 359,364 **** +--- 434,448 ---- + % @. is an end-of-sentence period. + \def\.{.\spacefactor=3000 } + ++ % @enddots{} is an end-of-sentence ellipsis. ++ \gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp}$\spacefactor=3000} ++ ++ % @! is an end-of-sentence bang. ++ \gdef\!{!\spacefactor=3000 } ++ ++ % @? is an end-of-sentence query. ++ \gdef\?{?\spacefactor=3000 } ++ + % @w prevents a word break. Without the \leavevmode, @w at the + % beginning of a paragraph, when TeX is still in vertical mode, would + % produce a whole line of output instead of starting the paragraph. +*************** +*** 506,522 **** + \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + + %\hbox{{\rm#1}}\hfil\break}} + + % @include file insert text of that file as input. +! +! \def\include{\parsearg\includezzz} +! %Use \input\thisfile to avoid blank after \input, which may be an active +! %char (in which case the blank would become the \input argument). +! %The grouping keeps the value of \thisfile correct even when @include +! %is nested. +! \def\includezzz #1{\begingroup +! \def\thisfile{#1}\input\thisfile + \endgroup} + + \def\thisfile{} +--- 590,623 ---- + \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + ++ % @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. ++ ++ \def\inmargin#1{% ++ \strut\vadjust{\nobreak\kern-\strutdepth ++ \vtop to \strutdepth{\baselineskip\strutdepth\vss ++ \llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}} ++ \newskip\inmarginspacing \inmarginspacing=1cm ++ \def\strutdepth{\dp\strutbox} ++ + %\hbox{{\rm#1}}\hfil\break}} + + % @include file insert text of that file as input. +! % Allow normal characters that we make active in the argument (a file name). +! \def\include{\begingroup +! \catcode`\\=12 +! \catcode`~=12 +! \catcode`^=12 +! \catcode`_=12 +! \catcode`|=12 +! \catcode`<=12 +! \catcode`>=12 +! \catcode`+=12 +! \parsearg\includezzz} +! % Restore active chars for included file. +! \def\includezzz#1{\endgroup\begingroup +! % Read the included file in a group so nested @include's work. +! \def\thisfile{#1}% +! \input\thisfile + \endgroup} + + \def\thisfile{} +*************** +*** 531,537 **** + % @sp n outputs n lines of vertical space + + \def\sp{\parsearg\spxxx} +! \def\spxxx #1{\par \vskip #1\baselineskip} + + % @comment ...line which is ignored... + % @c is the same as @comment +--- 632,638 ---- + % @sp n outputs n lines of vertical space + + \def\sp{\parsearg\spxxx} +! \def\spxxx #1{\vskip #1\baselineskip} + + % @comment ...line which is ignored... + % @c is the same as @comment +*************** +*** 544,549 **** +--- 645,653 ---- + + \let\c=\comment + ++ % @paragraphindent is defined for the Info formatting commands only. ++ \let\paragraphindent=\comment ++ + % Prevent errors for section commands. + % Used in @ignore and in failing conditionals. + \def\ignoresections{% +*************** +*** 578,583 **** +--- 682,688 ---- + % incorrectly. + % + \def\ignoremorecommands{% ++ \let\defcodeindex = \relax + \let\defcv = \relax + \let\deffn = \relax + \let\deffnx = \relax +*************** +*** 601,606 **** +--- 706,720 ---- + \let\printindex = \relax + \let\pxref = \relax + \let\settitle = \relax ++ \let\setchapternewpage = \relax ++ \let\setchapterstyle = \relax ++ \let\everyheading = \relax ++ \let\evenheading = \relax ++ \let\oddheading = \relax ++ \let\everyfooting = \relax ++ \let\evenfooting = \relax ++ \let\oddfooting = \relax ++ \let\headings = \relax + \let\include = \relax + \let\lowersections = \relax + \let\down = \relax +*************** +*** 609,627 **** + \let\set = \relax + \let\clear = \relax + \let\item = \relax +- \let\message = \relax + } + + % Ignore @ignore ... @end ignore. + % + \def\ignore{\doignore{ignore}} + +! % Also ignore @ifinfo, @menu, and @direntry text. + % + \def\ifinfo{\doignore{ifinfo}} + \def\menu{\doignore{menu}} + \def\direntry{\doignore{direntry}} + + % Ignore text until a line `@end #1'. + % + \def\doignore#1{\begingroup +--- 723,752 ---- + \let\set = \relax + \let\clear = \relax + \let\item = \relax + } + + % Ignore @ignore ... @end ignore. + % + \def\ignore{\doignore{ignore}} + +! % Also ignore @ifinfo, @ifhtml, @html, @menu, and @direntry text. + % + \def\ifinfo{\doignore{ifinfo}} ++ \def\ifhtml{\doignore{ifhtml}} ++ \def\html{\doignore{html}} + \def\menu{\doignore{menu}} + \def\direntry{\doignore{direntry}} + ++ % Also ignore @macro ... @end macro. The user must run texi2dvi, ++ % which runs makeinfo to do macro expansion. Ignore @unmacro, too. ++ \def\macro{\doignore{macro}} ++ \let\unmacro = \comment ++ ++ ++ % @dircategory CATEGORY -- specify a category of the dir file ++ % which this file should belong to. Ignore this in TeX. ++ \let\dircategory = \comment ++ + % Ignore text until a line `@end #1'. + % + \def\doignore#1{\begingroup +*************** +*** 653,663 **** + \immediate\write16{If you are running another version of TeX, relax.} + \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} + \immediate\write16{ Then upgrade your TeX installation if you can.} + \immediate\write16{If you are stuck with version 3.0, run the} + \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} + \immediate\write16{ to use a workaround.} + \immediate\write16{} +! \warnedobstrue + \fi + } + +--- 778,789 ---- + \immediate\write16{If you are running another version of TeX, relax.} + \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} + \immediate\write16{ Then upgrade your TeX installation if you can.} ++ \immediate\write16{ (See ftp://ftp.gnu.ai.mit.edu/pub/gnu/TeX.README.)} + \immediate\write16{If you are stuck with version 3.0, run the} + \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} + \immediate\write16{ to use a workaround.} + \immediate\write16{} +! \global\warnedobstrue + \fi + } + +*************** +*** 733,749 **** + % Since we want to separate VAR from REST-OF-LINE (which might be + % empty), we can't just use \parsearg; we have to insert a space of our + % own to delimit the rest of the line, and then take it out again if we +! % didn't need it. + % +! \def\set{\parsearg\setxxx} + \def\setxxx#1{\setyyy#1 \endsetyyy} + \def\setyyy#1 #2\endsetyyy{% + \def\temp{#2}% + \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty + \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. + \fi + } +! \def\setzzz#1#2 \endsetzzz{\expandafter\xdef\csname SET#1\endcsname{#2}} + + % @clear VAR clears (i.e., unsets) the variable VAR. + % +--- 859,882 ---- + % Since we want to separate VAR from REST-OF-LINE (which might be + % empty), we can't just use \parsearg; we have to insert a space of our + % own to delimit the rest of the line, and then take it out again if we +! % didn't need it. Make sure the catcode of space is correct to avoid +! % losing inside @example, for instance. + % +! \def\set{\begingroup\catcode` =10 +! \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. +! \parsearg\setxxx} + \def\setxxx#1{\setyyy#1 \endsetyyy} + \def\setyyy#1 #2\endsetyyy{% + \def\temp{#2}% + \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty + \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. + \fi ++ \endgroup + } +! % Can't use \xdef to pre-expand #2 and save some time, since \temp or +! % \next or other control sequences that we've defined might get us into +! % an infinite loop. Consider `@set foo @cite{bar}'. +! \def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} + + % @clear VAR clears (i.e., unsets) the variable VAR. + % +*************** +*** 752,761 **** + + % @value{foo} gets the text saved in variable foo. + % +! \def\value#1{\expandafter +! \ifx\csname SET#1\endcsname\relax +! {\{No value for ``#1''\}} +! \else \csname SET#1\endcsname \fi} + + % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined + % with @set. +--- 885,900 ---- + + % @value{foo} gets the text saved in variable foo. + % +! \def\value{\begingroup +! \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. +! \valuexxx} +! \def\valuexxx#1{% +! \expandafter\ifx\csname SET#1\endcsname\relax +! {\{No value for ``#1''\}}% +! \else +! \csname SET#1\endcsname +! \fi +! \endgroup} + + % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined + % with @set. +*************** +*** 855,860 **** +--- 994,1000 ---- + \expandafter\expandafter\expandafter\appendixsetref{\lastnode}\fi + \global\let\lastnode=\relax} + ++ % @refill is a no-op. + \let\refill=\relax + + % @setfilename is done at the beginning of every texinfo file. +*************** +*** 869,879 **** + \comment % Ignore the actual filename. + } + + \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + +! \def\inforef #1{\inforefzzz #1,,,,**} +! \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, +! node \samp{\ignorespaces#1{}}} + + \message{fonts,} + +--- 1009,1032 ---- + \comment % Ignore the actual filename. + } + ++ % @bye. + \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + +! % \def\macro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\macroxxx} +! % \def\macroxxx#1#2 \end macro{% +! % \expandafter\gdef\macrotemp#1{#2}% +! % \endgroup} +! +! %\def\linemacro#1{\begingroup\ignoresections\catcode`\#=6\def\macrotemp{#1}\parsearg\linemacroxxx} +! %\def\linemacroxxx#1#2 \end linemacro{% +! %\let\parsearg=\relax +! %\edef\macrotempx{\csname M\butfirst\expandafter\string\macrotemp\endcsname}% +! %\expandafter\xdef\macrotemp{\parsearg\macrotempx}% +! %\expandafter\gdef\macrotempx#1{#2}% +! %\endgroup} +! +! %\def\butfirst#1{} +! + + \message{fonts,} + +*************** +*** 885,982 **** + \def\sf{\fam=\sffam \tensf} + \let\li = \sf % Sometimes we call it \li, not \sf. + + %% Try out Computer Modern fonts at \magstephalf + \let\mainmagstep=\magstephalf + + \ifx\bigger\relax + \let\mainmagstep=\magstep1 +! \font\textrm=cmr12 +! \font\texttt=cmtt12 + \else +! \font\textrm=cmr10 scaled \mainmagstep +! \font\texttt=cmtt10 scaled \mainmagstep + \fi + % Instead of cmb10, you many want to use cmbx10. + % cmbx10 is a prettier font on its own, but cmb10 + % looks better when embedded in a line with cmr10. +! \font\textbf=cmb10 scaled \mainmagstep +! \font\textit=cmti10 scaled \mainmagstep +! \font\textsl=cmsl10 scaled \mainmagstep +! \font\textsf=cmss10 scaled \mainmagstep +! \font\textsc=cmcsc10 scaled \mainmagstep + \font\texti=cmmi10 scaled \mainmagstep + \font\textsy=cmsy10 scaled \mainmagstep + + % A few fonts for @defun, etc. +! \font\defbf=cmbx10 scaled \magstep1 %was 1314 +! \font\deftt=cmtt10 scaled \magstep1 + \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} + +! % Fonts for indices and small examples. + % We actually use the slanted font rather than the italic, + % because texinfo normally uses the slanted fonts for that. + % Do not make many font distinctions in general in the index, since they + % aren't very useful. +! \font\ninett=cmtt9 +! \font\indrm=cmr9 +! \font\indit=cmsl9 + \let\indsl=\indit + \let\indtt=\ninett + \let\indsf=\indrm + \let\indbf=\indrm +! \let\indsc=\indrm + \font\indi=cmmi9 + \font\indsy=cmsy9 + +! % Fonts for headings +! \font\chaprm=cmbx12 scaled \magstep2 +! \font\chapit=cmti12 scaled \magstep2 +! \font\chapsl=cmsl12 scaled \magstep2 +! \font\chaptt=cmtt12 scaled \magstep2 +! \font\chapsf=cmss12 scaled \magstep2 + \let\chapbf=\chaprm +! \font\chapsc=cmcsc10 scaled\magstep3 + \font\chapi=cmmi12 scaled \magstep2 + \font\chapsy=cmsy10 scaled \magstep3 + +! \font\secrm=cmbx12 scaled \magstep1 +! \font\secit=cmti12 scaled \magstep1 +! \font\secsl=cmsl12 scaled \magstep1 +! \font\sectt=cmtt12 scaled \magstep1 +! \font\secsf=cmss12 scaled \magstep1 +! \font\secbf=cmbx12 scaled \magstep1 +! \font\secsc=cmcsc10 scaled\magstep2 + \font\seci=cmmi12 scaled \magstep1 + \font\secsy=cmsy10 scaled \magstep2 + +! % \font\ssecrm=cmbx10 scaled \magstep1 % This size an font looked bad. +! % \font\ssecit=cmti10 scaled \magstep1 % The letters were too crowded. +! % \font\ssecsl=cmsl10 scaled \magstep1 +! % \font\ssectt=cmtt10 scaled \magstep1 +! % \font\ssecsf=cmss10 scaled \magstep1 +! +! %\font\ssecrm=cmb10 scaled 1315 % Note the use of cmb rather than cmbx. +! %\font\ssecit=cmti10 scaled 1315 % Also, the size is a little larger than +! %\font\ssecsl=cmsl10 scaled 1315 % being scaled magstep1. +! %\font\ssectt=cmtt10 scaled 1315 +! %\font\ssecsf=cmss10 scaled 1315 + + %\let\ssecbf=\ssecrm + +! \font\ssecrm=cmbx12 scaled \magstephalf +! \font\ssecit=cmti12 scaled \magstephalf +! \font\ssecsl=cmsl12 scaled \magstephalf +! \font\ssectt=cmtt12 scaled \magstephalf +! \font\ssecsf=cmss12 scaled \magstephalf +! \font\ssecbf=cmbx12 scaled \magstephalf +! \font\ssecsc=cmcsc10 scaled \magstep1 + \font\sseci=cmmi12 scaled \magstephalf + \font\ssecsy=cmsy10 scaled \magstep1 + % The smallcaps and symbol fonts should actually be scaled \magstep1.5, + % but that is not a standard magnification. + + % Fonts for title page: +! \font\titlerm = cmbx12 scaled \magstep3 + \let\authorrm = \secrm + + % In order for the font changes to affect most math symbols and letters, +--- 1038,1173 ---- + \def\sf{\fam=\sffam \tensf} + \let\li = \sf % Sometimes we call it \li, not \sf. + ++ % We don't need math for this one. ++ \def\ttsl{\tenttsl} ++ + %% Try out Computer Modern fonts at \magstephalf + \let\mainmagstep=\magstephalf + ++ % Set the font macro #1 to the font named #2, adding on the ++ % specified font prefix (normally `cm'). ++ % #3 is the font's design size, #4 is a scale factor ++ \def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} ++ ++ % Use cm as the default font prefix. ++ % To specify the font prefix, you must define \fontprefix ++ % before you read in texinfo.tex. ++ \ifx\fontprefix\undefined ++ \def\fontprefix{cm} ++ \fi ++ % Support font families that don't use the same naming scheme as CM. ++ \def\rmshape{r} ++ \def\rmbshape{bx} %where the normal face is bold ++ \def\bfshape{b} ++ \def\bxshape{bx} ++ \def\ttshape{tt} ++ \def\ttbshape{tt} ++ \def\ttslshape{sltt} ++ \def\itshape{ti} ++ \def\itbshape{bxti} ++ \def\slshape{sl} ++ \def\slbshape{bxsl} ++ \def\sfshape{ss} ++ \def\sfbshape{ss} ++ \def\scshape{csc} ++ \def\scbshape{csc} ++ + \ifx\bigger\relax + \let\mainmagstep=\magstep1 +! \setfont\textrm\rmshape{12}{1000} +! \setfont\texttt\ttshape{12}{1000} + \else +! \setfont\textrm\rmshape{10}{\mainmagstep} +! \setfont\texttt\ttshape{10}{\mainmagstep} + \fi + % Instead of cmb10, you many want to use cmbx10. + % cmbx10 is a prettier font on its own, but cmb10 + % looks better when embedded in a line with cmr10. +! \setfont\textbf\bfshape{10}{\mainmagstep} +! \setfont\textit\itshape{10}{\mainmagstep} +! \setfont\textsl\slshape{10}{\mainmagstep} +! \setfont\textsf\sfshape{10}{\mainmagstep} +! \setfont\textsc\scshape{10}{\mainmagstep} +! \setfont\textttsl\ttslshape{10}{\mainmagstep} + \font\texti=cmmi10 scaled \mainmagstep + \font\textsy=cmsy10 scaled \mainmagstep + + % A few fonts for @defun, etc. +! \setfont\defbf\bxshape{10}{\magstep1} %was 1314 +! \setfont\deftt\ttshape{10}{\magstep1} + \def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} + +! % Fonts for indices and small examples (9pt). + % We actually use the slanted font rather than the italic, + % because texinfo normally uses the slanted fonts for that. + % Do not make many font distinctions in general in the index, since they + % aren't very useful. +! \setfont\ninett\ttshape{9}{1000} +! \setfont\indrm\rmshape{9}{1000} +! \setfont\indit\slshape{9}{1000} + \let\indsl=\indit + \let\indtt=\ninett ++ \let\indttsl=\ninett + \let\indsf=\indrm + \let\indbf=\indrm +! \setfont\indsc\scshape{10}{900} + \font\indi=cmmi9 + \font\indsy=cmsy9 + +! % Chapter (and unnumbered) fonts (17.28pt). +! \setfont\chaprm\rmbshape{12}{\magstep2} +! \setfont\chapit\itbshape{10}{\magstep3} +! \setfont\chapsl\slbshape{10}{\magstep3} +! \setfont\chaptt\ttbshape{12}{\magstep2} +! \setfont\chapttsl\ttslshape{10}{\magstep3} +! \setfont\chapsf\sfbshape{12}{\magstep2} + \let\chapbf=\chaprm +! \setfont\chapsc\scbshape{10}{\magstep3} + \font\chapi=cmmi12 scaled \magstep2 + \font\chapsy=cmsy10 scaled \magstep3 + +! % Section fonts (14.4pt). +! \setfont\secrm\rmbshape{12}{\magstep1} +! \setfont\secit\itbshape{10}{\magstep2} +! \setfont\secsl\slbshape{10}{\magstep2} +! \setfont\sectt\ttbshape{12}{\magstep1} +! \setfont\secttsl\ttslshape{10}{\magstep2} +! \setfont\secsf\sfbshape{12}{\magstep1} +! \let\secbf\secrm +! \setfont\secsc\scbshape{10}{\magstep2} + \font\seci=cmmi12 scaled \magstep1 + \font\secsy=cmsy10 scaled \magstep2 + +! % \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. +! % \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. +! % \setfont\ssecsl\slshape{10}{\magstep1} +! % \setfont\ssectt\ttshape{10}{\magstep1} +! % \setfont\ssecsf\sfshape{10}{\magstep1} +! +! %\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. +! %\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than +! %\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. +! %\setfont\ssectt\ttshape{10}{1315} +! %\setfont\ssecsf\sfshape{10}{1315} + + %\let\ssecbf=\ssecrm + +! % Subsection fonts (13.15pt). +! \setfont\ssecrm\rmbshape{12}{\magstephalf} +! \setfont\ssecit\itbshape{10}{1315} +! \setfont\ssecsl\slbshape{10}{1315} +! \setfont\ssectt\ttbshape{12}{\magstephalf} +! \setfont\ssecttsl\ttslshape{10}{\magstep1} +! \setfont\ssecsf\sfbshape{12}{\magstephalf} +! \let\ssecbf\ssecrm +! \setfont\ssecsc\scbshape{10}{\magstep1} + \font\sseci=cmmi12 scaled \magstephalf + \font\ssecsy=cmsy10 scaled \magstep1 + % The smallcaps and symbol fonts should actually be scaled \magstep1.5, + % but that is not a standard magnification. + + % Fonts for title page: +! \setfont\titlerm\rmbshape{12}{\magstep3} + \let\authorrm = \secrm + + % In order for the font changes to affect most math symbols and letters, +*************** +*** 995,1028 **** + % The font-changing commands redefine the meanings of \tenSTYLE, instead + % of just \STYLE. We do this so that font changes will continue to work + % in math mode, where it is the current \fam that is relevant in most +! % cases, not the current. Plain TeX does, for example, +! % \def\bf{\fam=\bffam \tenbf} By redefining \tenbf, we obviate the need +! % to redefine \bf itself. + \def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc +! \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \resetmathfonts} + \def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc +! \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy +! \resetmathfonts} + \def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc +! \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy +! \resetmathfonts} + \def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc +! \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy +! \resetmathfonts} + \def\indexfonts{% + \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl + \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc +! \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy +! \resetmathfonts} + + % Set up the default fonts, so we can use them for creating boxes. + % +--- 1186,1220 ---- + % The font-changing commands redefine the meanings of \tenSTYLE, instead + % of just \STYLE. We do this so that font changes will continue to work + % in math mode, where it is the current \fam that is relevant in most +! % cases, not the current font. Plain TeX does \def\bf{\fam=\bffam +! % \tenbf}, for example. By redefining \tenbf, we obviate the need to +! % redefine \bf itself. + \def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc +! \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl + \resetmathfonts} + \def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc +! \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl +! \resetmathfonts \setleading{19pt}} + \def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc +! \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl +! \resetmathfonts \setleading{16pt}} + \def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc +! \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl +! \resetmathfonts \setleading{15pt}} +! \let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? + \def\indexfonts{% + \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl + \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc +! \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy \let\tenttsl=\indttsl +! \resetmathfonts \setleading{12pt}} + + % Set up the default fonts, so we can use them for creating boxes. + % +*************** +*** 1032,1040 **** + \newcount\fontdepth \fontdepth=0 + + % Fonts for short table of contents. +! \font\shortcontrm=cmr12 +! \font\shortcontbf=cmbx12 +! \font\shortcontsl=cmsl12 + + %% Add scribe-like font environments, plus @l for inline lisp (usually sans + %% serif) and @ii for TeX italic +--- 1224,1232 ---- + \newcount\fontdepth \fontdepth=0 + + % Fonts for short table of contents. +! \setfont\shortcontrm\rmshape{12}{1000} +! \setfont\shortcontbf\bxshape{12}{1000} +! \setfont\shortcontsl\slshape{12}{1000} + + %% Add scribe-like font environments, plus @l for inline lisp (usually sans + %% serif) and @ii for TeX italic +*************** +*** 1061,1073 **** + \def\restorehyphenation{\hyphenchar\font = `- } + + \def\t#1{% +! {\tt \nohyphenation \rawbackslash \frenchspacing #1}% + \null + } +! \let\ttfont = \t +! %\def\samp #1{`{\tt \rawbackslash \frenchspacing #1}'\null} + \def\samp #1{`\tclose{#1}'\null} +! \def\key #1{{\tt \nohyphenation \uppercase{#1}}\null} + \def\ctrl #1{{\tt \rawbackslash \hat}#1} + + \let\file=\samp +--- 1253,1273 ---- + \def\restorehyphenation{\hyphenchar\font = `- } + + \def\t#1{% +! {\tt \rawbackslash \frenchspacing #1}% + \null + } +! \let\ttfont=\t + \def\samp #1{`\tclose{#1}'\null} +! \setfont\smallrm\rmshape{8}{1000} +! \font\smallsy=cmsy9 +! \def\key#1{{\smallrm\textfont2=\smallsy \leavevmode\hbox{% +! \raise0.4pt\hbox{$\langle$}\kern-.08em\vtop{% +! \vbox{\hrule\kern-0.4pt +! \hbox{\raise0.4pt\hbox{\vphantom{$\langle$}}#1}}% +! \kern-0.4pt\hrule}% +! \kern-.06em\raise0.4pt\hbox{$\rangle$}}}} +! % The old definition, with no lozenge: +! %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} + \def\ctrl #1{{\tt \rawbackslash \hat}#1} + + \let\file=\samp +*************** +*** 1096,1135 **** + } + + % We *must* turn on hyphenation at `-' and `_' in \code. +! % Otherwise, it is too hard to avoid overful hboxes + % in the Emacs manual, the Library manual, etc. + + % Unfortunately, TeX uses one parameter (\hyphenchar) to control + % both hyphenation at - and hyphenation within words. + % We must therefore turn them both off (\tclose does that) +! % and arrange explicitly to hyphenate an a dash. + % -- rms. + { + \catcode`\-=\active + \catcode`\_=\active + \global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} + % The following is used by \doprintindex to insure that long function names + % wrap around. It is necessary for - and _ to be active before the index is + % read from the file, as \entry parses the arguments long before \code is + % ever called. -- mycroft +! \global\def\indexbreaks{\catcode`\-=\active \let-\realdash \catcode`\_=\active \let_\realunder} + } + \def\realdash{-} +- \def\realunder{_} + \def\codedash{-\discretionary{}{}{}} +! \def\codeunder{\normalunderscore\discretionary{}{}{}} + \def\codex #1{\tclose{#1}\endgroup} + + %\let\exp=\tclose %Was temporary + + % @kbd is like @code, except that if the argument is just one @key command, + % then @kbd has no effect. +! + \def\xkey{\key} + \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% +! \else\tclose{\look}\fi +! \else\tclose{\look}\fi} + + % Typeset a dimension, e.g., `in' or `pt'. The only reason for the + % argument is to make the input look right: @dmn{pt} instead of +--- 1296,1354 ---- + } + + % We *must* turn on hyphenation at `-' and `_' in \code. +! % Otherwise, it is too hard to avoid overfull hboxes + % in the Emacs manual, the Library manual, etc. + + % Unfortunately, TeX uses one parameter (\hyphenchar) to control + % both hyphenation at - and hyphenation within words. + % We must therefore turn them both off (\tclose does that) +! % and arrange explicitly to hyphenate at a dash. + % -- rms. + { + \catcode`\-=\active + \catcode`\_=\active ++ \catcode`\|=\active + \global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} + % The following is used by \doprintindex to insure that long function names + % wrap around. It is necessary for - and _ to be active before the index is + % read from the file, as \entry parses the arguments long before \code is + % ever called. -- mycroft +! % _ is always active; and it shouldn't be \let = to an _ that is a +! % subscript character anyway. Then, @cindex @samp{_} (for example) +! % fails. --karl +! \global\def\indexbreaks{% +! \catcode`\-=\active \let-\realdash + } ++ } ++ + \def\realdash{-} + \def\codedash{-\discretionary{}{}{}} +! \def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} + \def\codex #1{\tclose{#1}\endgroup} + + %\let\exp=\tclose %Was temporary + + % @kbd is like @code, except that if the argument is just one @key command, + % then @kbd has no effect. +! % + \def\xkey{\key} + \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% +! \else{\tclose{\ttsl\look}}\fi +! \else{\tclose{\ttsl\look}}\fi} +! +! % @url, @email. Quotes do not seem necessary. +! \let\url=\code % perhaps include a hypertex \special eventually +! % rms does not like the angle brackets --karl, 17may97. +! %\def\email#1{$\langle${\tt #1}$\rangle$} +! \let\email=\code +! +! % Check if we are currently using a typewriter font. Since all the +! % Computer Modern typewriter fonts have zero interword stretch (and +! % shrink), and it is reasonable to expect all typewriter fonts to have +! % this property, we can check that font parameter. +! % +! \def\ifmonospace{\ifdim\fontdimen3\font=0pt } + + % Typeset a dimension, e.g., `in' or `pt'. The only reason for the + % argument is to make the input look right: @dmn{pt} instead of +*************** +*** 1139,1150 **** + + \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} + +! \def\l#1{{\li #1}\null} % + +! \def\r#1{{\rm #1}} % roman font + % Use of \lowercase was suggested. +! \def\sc#1{{\smallcaps#1}} % smallcaps font +! \def\ii#1{{\it #1}} % italic font + + \message{page headings,} + +--- 1358,1376 ---- + + \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} + +! % @l was never documented to mean ``switch to the Lisp font'', +! % and it is not used as such in any manual I can find. We need it for +! % Polish suppressed-l. --karl, 22sep96. +! %\def\l#1{{\li #1}\null} + +! \def\r#1{{\rm #1}} % roman font + % Use of \lowercase was suggested. +! \def\sc#1{{\smallcaps#1}} % smallcaps font +! \def\ii#1{{\it #1}} % italic font +! +! % @pounds{} is a sterling sign. +! \def\pounds{{\it\$}} +! + + \message{page headings,} + +*************** +*** 1159,1165 **** + + \def\shorttitlepage{\parsearg\shorttitlepagezzz} + \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% +! \endgroup\page\hbox{}\page} + + \def\titlepage{\begingroup \parindent=0pt \textfonts + \let\subtitlerm=\tenrm +--- 1385,1391 ---- + + \def\shorttitlepage{\parsearg\shorttitlepagezzz} + \def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% +! \endgroup\page\hbox{}\page} + + \def\titlepage{\begingroup \parindent=0pt \textfonts + \let\subtitlerm=\tenrm +*************** +*** 1176,1184 **** + % Now you can print the title using @title. + \def\title{\parsearg\titlezzz}% + \def\titlezzz##1{\leftline{\titlefont{##1}} +! % print a rule at the page bottom also. +! \finishedtitlepagefalse +! \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % +--- 1402,1410 ---- + % Now you can print the title using @title. + \def\title{\parsearg\titlezzz}% + \def\titlezzz##1{\leftline{\titlefont{##1}} +! % print a rule at the page bottom also. +! \finishedtitlepagefalse +! \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % +*************** +*** 1196,1202 **** + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else +! \finishtitlepage + \fi + \oldpage + \let\page = \oldpage +--- 1422,1428 ---- + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else +! \finishtitlepage + \fi + \oldpage + \let\page = \oldpage +*************** +*** 1284,1297 **** + % + }% unbind the catcode of @. + +! % @headings double turns headings on for double-sided printing. +! % @headings single turns headings on for single-sided printing. +! % @headings off turns them off. +! % @headings on same as @headings double, retained for compatibility. +! % @headings after turns on double-sided headings after this page. +! % @headings doubleafter turns on double-sided headings after this page. + % @headings singleafter turns on single-sided headings after this page. +! % By default, they are off. + + \def\headings #1 {\csname HEADINGS#1\endcsname} + +--- 1510,1524 ---- + % + }% unbind the catcode of @. + +! % @headings double turns headings on for double-sided printing. +! % @headings single turns headings on for single-sided printing. +! % @headings off turns them off. +! % @headings on same as @headings double, retained for compatibility. +! % @headings after turns on double-sided headings after this page. +! % @headings doubleafter turns on double-sided headings after this page. + % @headings singleafter turns on single-sided headings after this page. +! % By default, they are off at the start of a document, +! % and turned `on' after @end titlepage. + + \def\headings #1 {\csname HEADINGS#1\endcsname} + +*************** +*** 1305,1326 **** + % title on inside top of left hand pages, and page numbers on outside top + % edge of all pages. + \def\HEADINGSdouble{ +- %\pagealignmacro + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + } + % For single-sided printing, chapter title goes across top left of page, + % page number on top right. + \def\HEADINGSsingle{ +- %\pagealignmacro + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\thischapter\hfil\folio}} + \global\oddheadline={\line{\thischapter\hfil\folio}} + } + \def\HEADINGSon{\HEADINGSdouble} + +--- 1532,1555 ---- + % title on inside top of left hand pages, and page numbers on outside top + % edge of all pages. + \def\HEADINGSdouble{ + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} + \global\oddheadline={\line{\thischapter\hfil\folio}} ++ \global\let\contentsalignmacro = \chapoddpage + } ++ \let\contentsalignmacro = \chappager ++ + % For single-sided printing, chapter title goes across top left of page, + % page number on top right. + \def\HEADINGSsingle{ + \global\pageno=1 + \global\evenfootline={\hfil} + \global\oddfootline={\hfil} + \global\evenheadline={\line{\thischapter\hfil\folio}} + \global\oddheadline={\line{\thischapter\hfil\folio}} ++ \global\let\contentsalignmacro = \chappager + } + \def\HEADINGSon{\HEADINGSdouble} + +*************** +*** 1331,1336 **** +--- 1560,1566 ---- + \global\oddfootline={\hfil} + \global\evenheadline={\line{\folio\hfil\thistitle}} + \global\oddheadline={\line{\thischapter\hfil\folio}} ++ \global\let\contentsalignmacro = \chapoddpage + } + + \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +*************** +*** 1339,1344 **** +--- 1569,1575 ---- + \global\oddfootline={\hfil} + \global\evenheadline={\line{\thischapter\hfil\folio}} + \global\oddheadline={\line{\thischapter\hfil\folio}} ++ \global\let\contentsalignmacro = \chappager + } + + % Subroutines used in generating headings +*************** +*** 1362,1367 **** +--- 1593,1599 ---- + \def\settitle{\parsearg\settitlezzz} + \def\settitlezzz #1{\gdef\thistitle{#1}} + ++ + \message{tables,} + + % @tabs -- simple alignment +*************** +*** 1394,1400 **** + + \newif\ifitemxneedsnegativevskip + +! \def\itemxpar{\par\ifitemxneedsnegativevskip\vskip-\parskip\nobreak\fi} + + \def\internalBitem{\smallbreak \parsearg\itemzzz} + \def\internalBitemx{\itemxpar \parsearg\itemzzz} +--- 1626,1632 ---- + + \newif\ifitemxneedsnegativevskip + +! \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + + \def\internalBitem{\smallbreak \parsearg\itemzzz} + \def\internalBitemx{\itemxpar \parsearg\itemzzz} +*************** +*** 1501,1507 **** + \def\tablez #1#2#3#4#5#6{% + \aboveenvbreak % + \begingroup % +! \def\Edescription{\Etable}% Neccessary kludge. + \let\itemindex=#1% + \ifnum 0#3>0 \advance \leftskip by #3\mil \fi % + \ifnum 0#4>0 \tableindent=#4\mil \fi % +--- 1733,1739 ---- + \def\tablez #1#2#3#4#5#6{% + \aboveenvbreak % + \begingroup % +! \def\Edescription{\Etable}% Necessary kludge. + \let\itemindex=#1% + \ifnum 0#3>0 \advance \leftskip by #3\mil \fi % + \ifnum 0#4>0 \tableindent=#4\mil \fi % +*************** +*** 1658,1674 **** + \def\itemizeitem{% + \advance\itemno by 1 + {\let\par=\endgraf \smallbreak}% +! \ifhmode \errmessage{\in hmode at itemizeitem}\fi + {\parskip=0in \hskip 0pt + \hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% + \vadjust{\penalty 1200}}% + \flushcr} + + % @multitable macros +! % Amy Hendrickson, 8/18/94 + % +! % @multitable ... @endmultitable will make as many columns as desired. +! % Contents of each column will wrap at width given in preamble. Width + % can be specified either with sample text given in a template line, + % or in percent of \hsize, the current width of text on page. + +--- 1890,1906 ---- + \def\itemizeitem{% + \advance\itemno by 1 + {\let\par=\endgraf \smallbreak}% +! \ifhmode \errmessage{In hmode at itemizeitem}\fi + {\parskip=0in \hskip 0pt + \hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% + \vadjust{\penalty 1200}}% + \flushcr} + + % @multitable macros +! % Amy Hendrickson, 8/18/94, 3/6/96 + % +! % @multitable ... @end multitable will make as many columns as desired. +! % Contents of each column will wrap at width given in preamble. Width + % can be specified either with sample text given in a template line, + % or in percent of \hsize, the current width of text on page. + +*************** +*** 1676,1796 **** + + % To make preamble: + % +! % Either define widths of columns in terms of percent of \hsize: +! % @multitable @percentofhsize .2 .3 .5 + % @item ... + % +! % Numbers following @percentofhsize are the percent of the total + % current hsize to be used for each column. You may use as many + % columns as desired. + + % Or use a template: + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item ... + % using the widest term desired in each column. + +! +! % Each new table line starts with @item, each subsequent new column + % starts with @tab. Empty columns may be produced by supplying @tab's + % with nothing between them for as many times as empty columns are needed, + % ie, @tab@tab@tab will produce two empty columns. + +! % @item, @tab, @multicolumn or @endmulticolumn do not need to be on their + % own lines, but it will not hurt if they are. + + % Sample multitable: + + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item first col stuff @tab second col stuff @tab third col +! % @item +! % first col stuff +! % @tab +! % second col stuff +! % @tab +! % third col +! % @item first col stuff @tab second col stuff + % @tab Many paragraphs of text may be used in any column. +! % + % They will wrap at the width determined by the template. + % @item@tab@tab This will be in third column. +! % @endmultitable + + % Default dimensions may be reset by user. +! % @intableparskip will set vertical space between paragraphs in table. +! % @intableparindent will set paragraph indent in table. +! % @spacebetweencols will set horizontal space to be left between columns. +! % @spacebetweenlines will set vertical space to be left between lines. + + %%%% +! % Dimensions + +! \newdimen\intableparskip +! \newdimen\intableparindent +! \newdimen\spacebetweencols +! \newdimen\spacebetweenlines +! \intableparskip=0pt +! \intableparindent=6pt +! \spacebetweencols=12pt +! \spacebetweenlines=12pt + + %%%% + % Macros used to set up halign preamble: + \let\endsetuptable\relax + \def\xendsetuptable{\endsetuptable} +! \let\percentofhsize\relax +! \def\xpercentofhsize{\percentofhsize} + \newif\ifsetpercent + + \newcount\colcount + \def\setuptable#1{\def\firstarg{#1}% + \ifx\firstarg\xendsetuptable\let\go\relax% + \else +! \ifx\firstarg\xpercentofhsize\global\setpercenttrue% + \else + \ifsetpercent +! \if#1.\else% +! \global\advance\colcount by1 % +! \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% +! \fi + \else + \global\advance\colcount by1 +! \setbox0=\hbox{#1}% + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi% + \fi% +! \let\go\setuptable% + \fi\go} + %%%% + % multitable syntax +! \def\tab{&} + + %%%% +! % @multitable ... @endmultitable definitions: + +! \def\multitable#1\item{\bgroup + \let\item\cr + \tolerance=9500 + \hbadness=9500 +! \parskip=\intableparskip +! \parindent=\intableparindent + \overfullrule=0pt + \global\colcount=0\relax% + \def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}% + % To parse everything between @multitable and @item : +! \def\one{#1}\expandafter\setuptable\one\endsetuptable + % Need to reset this to 0 after \setuptable. +! \global\colcount=0\relax% + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. +! % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup&\global\advance\colcount by 1\relax% +! \vtop{\hsize=\expandafter\csname col\the\colcount\endcsname + % In order to keep entries from bumping into each other +! % we will add a \leftskip of \spacebetweencols to all columns after + % the first one. +! % If a template has been used, we will add \spacebetweencols + % to the width of each template entry. + % If user has set preamble in terms of percent of \hsize + % we will use that dimension as the width of the column, and +--- 1908,2053 ---- + + % To make preamble: + % +! % Either define widths of columns in terms of percent of \hsize: +! % @multitable @columnfractions .25 .3 .45 + % @item ... + % +! % Numbers following @columnfractions are the percent of the total + % current hsize to be used for each column. You may use as many + % columns as desired. + ++ + % Or use a template: + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item ... + % using the widest term desired in each column. ++ % ++ % For those who want to use more than one line's worth of words in ++ % the preamble, break the line within one argument and it ++ % will parse correctly, i.e., ++ % ++ % @multitable {Column 1 template} {Column 2 template} {Column 3 ++ % template} ++ % Not: ++ % @multitable {Column 1 template} {Column 2 template} ++ % {Column 3 template} + +! % Each new table line starts with @item, each subsequent new column + % starts with @tab. Empty columns may be produced by supplying @tab's + % with nothing between them for as many times as empty columns are needed, + % ie, @tab@tab@tab will produce two empty columns. + +! % @item, @tab, @multitable or @end multitable do not need to be on their + % own lines, but it will not hurt if they are. + + % Sample multitable: + + % @multitable {Column 1 template} {Column 2 template} {Column 3 template} + % @item first col stuff @tab second col stuff @tab third col +! % @item +! % first col stuff +! % @tab +! % second col stuff +! % @tab +! % third col +! % @item first col stuff @tab second col stuff + % @tab Many paragraphs of text may be used in any column. +! % + % They will wrap at the width determined by the template. + % @item@tab@tab This will be in third column. +! % @end multitable + + % Default dimensions may be reset by user. +! % @multitableparskip is vertical space between paragraphs in table. +! % @multitableparindent is paragraph indent in table. +! % @multitablecolmargin is horizontal space to be left between columns. +! % @multitablelinespace is space to leave between table items, baseline +! % to baseline. +! % 0pt means it depends on current normal line spacing. + + %%%% +! % Dimensions + +! \newskip\multitableparskip +! \newskip\multitableparindent +! \newdimen\multitablecolspace +! \newskip\multitablelinespace +! \multitableparskip=0pt +! \multitableparindent=6pt +! \multitablecolspace=12pt +! \multitablelinespace=0pt + + %%%% + % Macros used to set up halign preamble: + \let\endsetuptable\relax + \def\xendsetuptable{\endsetuptable} +! \let\columnfractions\relax +! \def\xcolumnfractions{\columnfractions} + \newif\ifsetpercent + ++ %% 2/1/96, to allow fractions to be given with more than one digit. ++ \def\pickupwholefraction#1 {\global\advance\colcount by1 % ++ \expandafter\xdef\csname col\the\colcount\endcsname{.#1\hsize}% ++ \setuptable} ++ + \newcount\colcount + \def\setuptable#1{\def\firstarg{#1}% + \ifx\firstarg\xendsetuptable\let\go\relax% + \else +! \ifx\firstarg\xcolumnfractions\global\setpercenttrue% + \else + \ifsetpercent +! \let\go\pickupwholefraction % In this case arg of setuptable +! % is the decimal point before the +! % number given in percent of hsize. +! % We don't need this so we don't use it. + \else + \global\advance\colcount by1 +! \setbox0=\hbox{#1 }% Add a normal word space as a separator; +! % typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi% + \fi% +! \ifx\go\pickupwholefraction\else\let\go\setuptable\fi% + \fi\go} ++ + %%%% + % multitable syntax +! \def\tab{&\hskip1sp\relax} % 2/2/96 +! % tiny skip here makes sure this column space is +! % maintained, even if it is never used. +! + + %%%% +! % @multitable ... @end multitable definitions: +! +! \def\multitable{\parsearg\dotable} + +! \def\dotable#1{\bgroup + \let\item\cr + \tolerance=9500 + \hbadness=9500 +! \setmultitablespacing +! \parskip=\multitableparskip +! \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0\relax% + \def\Emultitable{\global\setpercentfalse\global\everycr{}\cr\egroup\egroup}% + % To parse everything between @multitable and @item : +! \setuptable#1 \endsetuptable + % Need to reset this to 0 after \setuptable. +! \global\colcount=0\relax% + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. +! % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup&\global\advance\colcount by 1\relax% +! \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname + % In order to keep entries from bumping into each other +! % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. +! % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % If user has set preamble in terms of percent of \hsize + % we will use that dimension as the width of the column, and +*************** +*** 1802,1821 **** + \ifsetpercent + \else + % If user has set preamble in terms of percent of \hsize +! % we will advance \hsize by \spacebetweencols +! \advance\hsize by \spacebetweencols + \fi +! % In either case we will make \leftskip=\spacebetweencols: +! \leftskip=\spacebetweencols + \fi +! \noindent##}\cr% + % \everycr will reset column counter, \colcount, at the end of +! % each line. Every column entry will cause \colcount to advance by one. + % The table preamble + % looks at the current \colcount to find the correct column width. +! \global\everycr{\noalign{\nointerlineskip\vskip\spacebetweenlines +! \filbreak%% keeps underfull box messages off when table breaks over pages. +! \global\colcount=0\relax}}} + + \message{indexing,} + % Index generation facilities +--- 2059,2116 ---- + \ifsetpercent + \else + % If user has set preamble in terms of percent of \hsize +! % we will advance \hsize by \multitablecolspace +! \advance\hsize by \multitablecolspace + \fi +! % In either case we will make \leftskip=\multitablecolspace: +! \leftskip=\multitablecolspace + \fi +! % Ignoring space at the beginning and end avoids an occasional spurious +! % blank line, when TeX decides to break the line at the space before the +! % box from the multistrut, so the strut ends up on a line by itself. +! % For example: +! % @multitable @columnfractions .11 .89 +! % @item @code{#} +! % @tab Legal holiday which is valid in major parts of the whole country. +! % Is automatically provided with highlighting sequences respectively marking +! % characters. +! \noindent\ignorespaces##\unskip\multistrut}\cr + % \everycr will reset column counter, \colcount, at the end of +! % each line. Every column entry will cause \colcount to advance by one. + % The table preamble + % looks at the current \colcount to find the correct column width. +! \global\everycr{\noalign{% +! % \filbreak%% keeps underfull box messages off when table breaks over pages. +! % Maybe so, but it also creates really weird page breaks when the table +! % breaks over pages Wouldn't \vfil be better? Wait until the problem +! % manifests itself, so it can be fixed for real --karl. +! \global\colcount=0\relax}} +! } +! +! \def\setmultitablespacing{% test to see if user has set \multitablelinespace. +! % If so, do nothing. If not, give it an appropriate dimension based on +! % current baselineskip. +! \ifdim\multitablelinespace=0pt +! %% strut to put in table in case some entry doesn't have descenders, +! %% to keep lines equally spaced +! \let\multistrut = \strut +! %% Test to see if parskip is larger than space between lines of +! %% table. If not, do nothing. +! %% If so, set to same dimension as multitablelinespace. +! \else +! \gdef\multistrut{\vrule height\multitablelinespace depth\dp0 +! width0pt\relax} \fi +! \ifdim\multitableparskip>\multitablelinespace +! \global\multitableparskip=\multitablelinespace +! \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller +! %% than skip between lines in the table. +! \fi% +! \ifdim\multitableparskip=0pt +! \global\multitableparskip=\multitablelinespace +! \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller +! %% than skip between lines in the table. +! \fi} +! + + \message{indexing,} + % Index generation facilities +*************** +*** 1829,1842 **** + % It automatically defines \fooindex such that + % \fooindex ...rest of line... puts an entry in the index foo. + % It also defines \fooindfile to be the number of the output channel for +! % the file that accumulates this index. The file's extension is foo. + % The name of an index should be no more than 2 characters long + % for the sake of vms. + + \def\newindex #1{ + \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file +! \openout \csname#1indfile\endcsname \jobname.#1 % Open the file +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\doindex {#1}} + } + +--- 2124,2137 ---- + % It automatically defines \fooindex such that + % \fooindex ...rest of line... puts an entry in the index foo. + % It also defines \fooindfile to be the number of the output channel for +! % the file that accumulates this index. The file's extension is foo. + % The name of an index should be no more than 2 characters long + % for the sake of vms. + + \def\newindex #1{ + \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file +! \openout \csname#1indfile\endcsname \jobname.#1 % Open the file +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\doindex {#1}} + } + +*************** +*** 1848,1855 **** + + \def\newcodeindex #1{ + \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file +! \openout \csname#1indfile\endcsname \jobname.#1 % Open the file +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\docodeindex {#1}} + } + +--- 2143,2150 ---- + + \def\newcodeindex #1{ + \expandafter\newwrite \csname#1indfile\endcsname% Define number for output file +! \openout \csname#1indfile\endcsname \jobname.#1 % Open the file +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\docodeindex {#1}} + } + +*************** +*** 1860,1866 **** + \def\synindex #1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\doindex {#2}}% + } + +--- 2155,2161 ---- + \def\synindex #1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\doindex {#2}}% + } + +*************** +*** 1869,1875 **** + \def\syncodeindex #1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\docodeindex {#2}}% + } + +--- 2164,2170 ---- + \def\syncodeindex #1 #2 {% + \expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname + \expandafter\let\csname#1indfile\endcsname=\synindexfoo +! \expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex + \noexpand\docodeindex {#2}}% + } + +*************** +*** 1917,1943 **** + \def\L{\realbackslash L}% + \def\ss{\realbackslash ss}% + % Take care of texinfo commands likely to appear in an index entry. + \def\_{{\realbackslash _}}% + \def\w{\realbackslash w }% + \def\bf{\realbackslash bf }% +! \def\rm{\realbackslash rm }% + \def\sl{\realbackslash sl }% + \def\sf{\realbackslash sf}% + \def\tt{\realbackslash tt}% + \def\gtr{\realbackslash gtr}% + \def\less{\realbackslash less}% + \def\hat{\realbackslash hat}% +! \def\char{\realbackslash char}% + \def\TeX{\realbackslash TeX}% + \def\dots{\realbackslash dots }% + \def\copyright{\realbackslash copyright }% + \def\tclose##1{\realbackslash tclose {##1}}% + \def\code##1{\realbackslash code {##1}}% + \def\samp##1{\realbackslash samp {##1}}% +! \def\t##1{\realbackslash r {##1}}% + \def\r##1{\realbackslash r {##1}}% + \def\i##1{\realbackslash i {##1}}% + \def\b##1{\realbackslash b {##1}}% + \def\cite##1{\realbackslash cite {##1}}% + \def\key##1{\realbackslash key {##1}}% + \def\file##1{\realbackslash file {##1}}% +--- 2212,2246 ---- + \def\L{\realbackslash L}% + \def\ss{\realbackslash ss}% + % Take care of texinfo commands likely to appear in an index entry. ++ % (Must be a way to avoid doing expansion at all, and thus not have to ++ % laboriously list every single command here.) ++ \def\@{@}% will be @@ when we switch to @ as escape char. ++ %\let\{ = \lbracecmd ++ %\let\} = \rbracecmd + \def\_{{\realbackslash _}}% + \def\w{\realbackslash w }% + \def\bf{\realbackslash bf }% +! %\def\rm{\realbackslash rm }% + \def\sl{\realbackslash sl }% + \def\sf{\realbackslash sf}% + \def\tt{\realbackslash tt}% + \def\gtr{\realbackslash gtr}% + \def\less{\realbackslash less}% + \def\hat{\realbackslash hat}% +! %\def\char{\realbackslash char}% + \def\TeX{\realbackslash TeX}% + \def\dots{\realbackslash dots }% + \def\copyright{\realbackslash copyright }% + \def\tclose##1{\realbackslash tclose {##1}}% + \def\code##1{\realbackslash code {##1}}% ++ \def\dotless##1{\realbackslash dotless {##1}}% + \def\samp##1{\realbackslash samp {##1}}% +! \def\,##1{\realbackslash ,{##1}}% +! \def\t##1{\realbackslash t {##1}}% + \def\r##1{\realbackslash r {##1}}% + \def\i##1{\realbackslash i {##1}}% + \def\b##1{\realbackslash b {##1}}% ++ \def\sc##1{\realbackslash sc {##1}}% + \def\cite##1{\realbackslash cite {##1}}% + \def\key##1{\realbackslash key {##1}}% + \def\file##1{\realbackslash file {##1}}% +*************** +*** 1945,1952 **** +--- 2248,2262 ---- + \def\kbd##1{\realbackslash kbd {##1}}% + \def\dfn##1{\realbackslash dfn {##1}}% + \def\emph##1{\realbackslash emph {##1}}% ++ \unsepspaces + } + ++ % If an index command is used in an @example environment, any spaces ++ % therein should become regular spaces in the raw index file, not the ++ % expansion of \tie (\\leavevmode \penalty \@M \ ). ++ {\obeyspaces ++ \gdef\unsepspaces{\obeyspaces\let =\space}} ++ + % \indexnofonts no-ops all font-change commands. + % This is used when outputting the strings to sort the index by. + \def\indexdummyfont#1{#1} +*************** +*** 1955,1960 **** +--- 2265,2271 ---- + + \def\indexnofonts{% + % Just ignore accents. ++ \let\,=\indexdummyfont + \let\"=\indexdummyfont + \let\`=\indexdummyfont + \let\'=\indexdummyfont +*************** +*** 1967,1972 **** +--- 2278,2284 ---- + \let\u=\indexdummyfont + \let\v=\indexdummyfont + \let\H=\indexdummyfont ++ \let\dotless=\indexdummyfont + % Take care of the plain tex special European modified letters. + \def\oe{oe}% + \def\ae{ae}% +*************** +*** 2000,2005 **** +--- 2312,2318 ---- + \let\var=\indexdummyfont + \let\TeX=\indexdummytex + \let\dots=\indexdummydots ++ \def\@{@}% + } + + % To define \realbackslash, we must make \ not be an escape. +*************** +*** 2011,2036 **** + + \let\indexbackslash=0 %overridden during \printindex. + + \def\doind #1#2{% +! {\count10=\lastpenalty % +! {\indexdummies % Must do this here, since \bf, etc expand at this stage +! \escapechar=`\\% +! {\let\folio=0% Expand all macros now EXCEPT \folio +! \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now +! % so it will be output as is; and it will print as backslash in the indx. +! % +! % Now process the index-string once, with all font commands turned off, +! % to get the string to sort the index by. +! {\indexnofonts +! \xdef\temp1{#2}% +! }% +! % Now produce the complete index entry. We process the index-string again, +! % this time with font commands expanded, to get what to print in the index. +! \edef\temp{% +! \write \csname#1indfile\endcsname{% +! \realbackslash entry {\temp1}{\folio}{#2}}}% +! \temp }% +! }\penalty\count10}} + + \def\dosubind #1#2#3{% + {\count10=\lastpenalty % +--- 2324,2364 ---- + + \let\indexbackslash=0 %overridden during \printindex. + ++ \let\SETmarginindex=\relax %initialize! ++ % workhorse for all \fooindexes ++ % #1 is name of index, #2 is stuff to put there + \def\doind #1#2{% +! % Put the index entry in the margin if desired. +! \ifx\SETmarginindex\relax\else +! \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% +! \fi +! {% +! \count255=\lastpenalty +! {% +! \indexdummies % Must do this here, since \bf, etc expand at this stage +! \escapechar=`\\ +! {% +! \let\folio=0% We will expand all macros now EXCEPT \folio. +! \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now +! % so it will be output as is; and it will print as backslash. +! % +! % First process the index-string with all font commands turned off +! % to get the string to sort by. +! {\indexnofonts \xdef\indexsorttmp{#2}}% +! % +! % Now produce the complete index entry, with both the sort key and the +! % original text, including any font commands. +! \toks0 = {#2}% +! \edef\temp{% +! \write\csname#1indfile\endcsname{% +! \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% +! }% +! \temp +! }% +! }% +! \penalty\count255 +! }% +! } + + \def\dosubind #1#2#3{% + {\count10=\lastpenalty % +*************** +*** 2084,2117 **** + + % Define the macros used in formatting output of the sorted index material. + +! % This is what you call to cause a particular index to get printed. +! % Write +! % @unnumbered Function Index +! % @printindex fn +! + \def\printindex{\parsearg\doprintindex} +! +! \def\doprintindex#1{% +! \tex +! \dobreak \chapheadingskip {10000} +! \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other +! \catcode`\$=\other +! \catcode`\~=\other +! \indexbreaks + % +! % The following don't help, since the chars were translated +! % when the raw index was written, and their fonts were discarded +! % due to \indexnofonts. +! %\catcode`\"=\active +! %\catcode`\^=\active +! %\catcode`\_=\active +! %\catcode`\|=\active +! %\catcode`\<=\active +! %\catcode`\>=\active +! % % +! \def\indexbackslash{\rawbackslashxx} +! \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt +! \begindoublecolumns + % + % See if the index file exists and is nonempty. + \openin 1 \jobname.#1s +--- 2412,2427 ---- + + % Define the macros used in formatting output of the sorted index material. + +! % @printindex causes a particular index (the ??s file) to get printed. +! % It does not print any chapter heading (usually an @unnumbered). +! % + \def\printindex{\parsearg\doprintindex} +! \def\doprintindex#1{\begingroup +! \dobreak \chapheadingskip{10000}% + % +! \indexfonts \rm +! \tolerance = 9500 +! \indexbreaks + % + % See if the index file exists and is nonempty. + \openin 1 \jobname.#1s +*************** +*** 2121,2127 **** + % index. The easiest way to prevent this problem is to make sure + % there is some text. + (Index is nonexistent) +! \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so +--- 2431,2437 ---- + % index. The easiest way to prevent this problem is to make sure + % there is some text. + (Index is nonexistent) +! \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so +*************** +*** 2130,2142 **** + \ifeof 1 + (Index is empty) + \else + \input \jobname.#1s + \fi + \fi + \closein 1 +! \enddoublecolumns +! \Etex +! } + + % These macros are used by the sorted index file itself. + % Change them to control the appearance of the index. +--- 2440,2459 ---- + \ifeof 1 + (Index is empty) + \else ++ % Index files are almost Texinfo source, but we use \ as the escape ++ % character. It would be better to use @, but that's too big a change ++ % to make right now. ++ \def\indexbackslash{\rawbackslashxx}% ++ \catcode`\\ = 0 ++ \catcode`\@ = 11 ++ \escapechar = `\\ ++ \begindoublecolumns + \input \jobname.#1s ++ \enddoublecolumns + \fi + \fi + \closein 1 +! \endgroup} + + % These macros are used by the sorted index file itself. + % Change them to control the appearance of the index. +*************** +*** 2190,2196 **** + % + % Insert the text of the index entry. TeX will do line-breaking on it. + #1% +! % The following is kluged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \def\tempa{{\rm }}% +--- 2507,2513 ---- + % + % Insert the text of the index entry. TeX will do line-breaking on it. + #1% +! % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \def\tempa{{\rm }}% +*************** +*** 2227,2260 **** + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par + }} + +! %% Define two-column mode, which is used in indexes. +! %% Adapted from the TeXbook, page 416. +! \catcode `\@=11 + + \newbox\partialpage +- + \newdimen\doublecolumnhsize + +! \def\begindoublecolumns{\begingroup + % Grab any single-column material above us. +! \output = {\global\setbox\partialpage +! =\vbox{\unvbox255\kern -\topskip \kern \baselineskip}}% + \eject + % +! % Now switch to the double-column output routine. +! \output={\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the +! % execution time, so we may as well do it once. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant +! % below is chosen so that the gutter has the same value (well, +- < +! % 1pt) as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) +--- 2544,2592 ---- + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par + }} + +! % Define two-column mode, which we use to typeset indexes. +! % Adapted from the TeXbook, page 416, which is to say, +! % the manmac.tex format used to print the TeXbook itself. +! \catcode`\@=11 + + \newbox\partialpage + \newdimen\doublecolumnhsize + +! \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. +! \output = {\global\setbox\partialpage = \vbox{% +! % +! % Here is a possibility not foreseen in manmac: if we accumulate a +! % whole lot of material, we might end up calling this \output +! % routine twice in a row (see the doublecol-lose test, which is +! % essentially a couple of indexes with @setchapternewpage off). In +! % that case, we must prevent the second \partialpage from +! % simply overwriting the first, causing us to lose the page. +! % This will preserve it until a real output routine can ship it +! % out. Generally, \partialpage will be empty when this runs and +! % this will be a no-op. +! \unvbox\partialpage +! % +! % Unvbox the main output page. +! \unvbox255 +! \kern-\topskip \kern\baselineskip +! }}% + \eject + % +! % Use the double-column output routine for subsequent pages. +! \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the +! % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant +! % below is chosen so that the gutter has the same value (well, +-<1pt) +! % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) +*************** +*** 2268,2374 **** + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize +- \doublecolumnpagegoal + } +- +- \def\enddoublecolumns{\eject \endgroup \pagegoal=\vsize \unvbox\partialpage} +- +- \def\doublecolumnsplit{\splittopskip=\topskip \splitmaxdepth=\maxdepth +- \global\dimen@=\pageheight \global\advance\dimen@ by-\ht\partialpage +- \global\setbox1=\vsplit255 to\dimen@ \global\setbox0=\vbox{\unvbox1} +- \global\setbox3=\vsplit255 to\dimen@ \global\setbox2=\vbox{\unvbox3} +- \ifdim\ht0>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi +- \ifdim\ht2>\dimen@ \setbox255=\vbox{\unvbox0\unvbox2} \global\setbox255=\copy5 \fi +- } +- \def\doublecolumnpagegoal{% +- \dimen@=\vsize \advance\dimen@ by-2\ht\partialpage \global\pagegoal=\dimen@ +- } +- \def\pagesofar{\unvbox\partialpage % +- \hsize=\doublecolumnhsize % have to restore this since output routine +- \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}} + \def\doublecolumnout{% +! \setbox5=\copy255 +! {\vbadness=10000 \doublecolumnsplit} +! \ifvbox255 +! \setbox0=\vtop to\dimen@{\unvbox0} +! \setbox2=\vtop to\dimen@{\unvbox2} +! \onepageout\pagesofar \unvbox255 \penalty\outputpenalty +! \else +! \setbox0=\vbox{\unvbox5} +! \ifvbox0 +! \dimen@=\ht0 \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip +! \divide\dimen@ by2 \splittopskip=\topskip \splitmaxdepth=\maxdepth +! {\vbadness=10000 +! \loop \global\setbox5=\copy0 +! \setbox1=\vsplit5 to\dimen@ +! \setbox3=\vsplit5 to\dimen@ +! \ifvbox5 \global\advance\dimen@ by1pt \repeat +! \setbox0=\vbox to\dimen@{\unvbox1} +! \setbox2=\vbox to\dimen@{\unvbox3} +! \global\setbox\partialpage=\vbox{\pagesofar} +! \doublecolumnpagegoal +! } +! \fi +! \fi + } + +- \catcode `\@=\other + \message{sectioning,} + % Define chapters, sections, etc. + +! \newcount \chapno +! \newcount \secno \secno=0 +! \newcount \subsecno \subsecno=0 +! \newcount \subsubsecno \subsubsecno=0 + + % This counter is funny since it counts through charcodes of letters A, B, ... +! \newcount \appendixno \appendixno = `\@ + \def\appendixletter{\char\the\appendixno} + +! \newwrite \contentsfile + % This is called from \setfilename. +! \def\opencontents{\openout \contentsfile = \jobname.toc} + + % Each @chapter defines this as the name of the chapter. + % page headings and footings can use it. @section does likewise + + \def\thischapter{} \def\thissection{} +! \def\seccheck#1{\if \pageno<0 % +! \errmessage{@#1 not allowed after generating table of contents}\fi +! % +! } + + \def\chapternofonts{% +! \let\rawbackslash=\relax% +! \let\frenchspacing=\relax% +! \def\result{\realbackslash result} +! \def\equiv{\realbackslash equiv} +! \def\expansion{\realbackslash expansion} +! \def\print{\realbackslash print} +! \def\TeX{\realbackslash TeX} +! \def\dots{\realbackslash dots} +! \def\copyright{\realbackslash copyright} +! \def\tt{\realbackslash tt} +! \def\bf{\realbackslash bf } +! \def\w{\realbackslash w} +! \def\less{\realbackslash less} +! \def\gtr{\realbackslash gtr} +! \def\hat{\realbackslash hat} +! \def\char{\realbackslash char} +! \def\tclose##1{\realbackslash tclose {##1}} +! \def\code##1{\realbackslash code {##1}} +! \def\samp##1{\realbackslash samp {##1}} +! \def\r##1{\realbackslash r {##1}} +! \def\b##1{\realbackslash b {##1}} +! \def\key##1{\realbackslash key {##1}} +! \def\file##1{\realbackslash file {##1}} +! \def\kbd##1{\realbackslash kbd {##1}} +! % These are redefined because @smartitalic wouldn't work inside xdef. +! \def\i##1{\realbackslash i {##1}} +! \def\cite##1{\realbackslash cite {##1}} +! \def\var##1{\realbackslash var {##1}} +! \def\emph##1{\realbackslash emph {##1}} +! \def\dfn##1{\realbackslash dfn {##1}} + } + + \newcount\absseclevel % used to calculate proper heading level +--- 2600,2709 ---- + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize + } + \def\doublecolumnout{% +! \splittopskip=\topskip \splitmaxdepth=\maxdepth +! % Get the available space for the double columns -- the normal +! % (undoubled) page height minus any material left over from the +! % previous page. +! \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage +! % box0 will be the left-hand column, box2 the right. +! \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ +! \onepageout\pagesofar +! \unvbox255 +! \penalty\outputpenalty +! } +! \def\pagesofar{% +! % Re-output the contents of the output page -- any previous material, +! % followed by the two boxes we just split. +! \unvbox\partialpage +! \hsize = \doublecolumnhsize +! \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% + } ++ \def\enddoublecolumns{% ++ \output = {\balancecolumns}\eject % split what we have ++ \endgroup % started in \begindoublecolumns ++ % ++ % Back to normal single-column typesetting, but take account of the ++ % fact that we just accumulated some stuff on the output page. ++ \pagegoal = \vsize ++ } ++ \def\balancecolumns{% ++ % Called at the end of the double column material. ++ \setbox0 = \vbox{\unvbox255}% ++ \dimen@ = \ht0 ++ \advance\dimen@ by \topskip ++ \advance\dimen@ by-\baselineskip ++ \divide\dimen@ by 2 ++ \splittopskip = \topskip ++ % Loop until we get a decent breakpoint. ++ {\vbadness=10000 \loop ++ \global\setbox3=\copy0 ++ \global\setbox1=\vsplit3 to\dimen@ ++ \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt ++ \repeat}% ++ \setbox0=\vbox to\dimen@{\unvbox1}% ++ \setbox2=\vbox to\dimen@{\unvbox3}% ++ \pagesofar ++ } ++ \catcode`\@ = \other ++ + + \message{sectioning,} + % Define chapters, sections, etc. + +! \newcount\chapno +! \newcount\secno \secno=0 +! \newcount\subsecno \subsecno=0 +! \newcount\subsubsecno \subsubsecno=0 + + % This counter is funny since it counts through charcodes of letters A, B, ... +! \newcount\appendixno \appendixno = `\@ + \def\appendixletter{\char\the\appendixno} + +! \newwrite\contentsfile + % This is called from \setfilename. +! \def\opencontents{\openout\contentsfile = \jobname.toc } + + % Each @chapter defines this as the name of the chapter. + % page headings and footings can use it. @section does likewise + + \def\thischapter{} \def\thissection{} +! \def\seccheck#1{\ifnum \pageno<0 +! \errmessage{@#1 not allowed after generating table of contents}% +! \fi} + + \def\chapternofonts{% +! \let\rawbackslash=\relax +! \let\frenchspacing=\relax +! \def\result{\realbackslash result}% +! \def\equiv{\realbackslash equiv}% +! \def\expansion{\realbackslash expansion}% +! \def\print{\realbackslash print}% +! \def\TeX{\realbackslash TeX}% +! \def\dots{\realbackslash dots}% +! \def\copyright{\realbackslash copyright}% +! \def\tt{\realbackslash tt}% +! \def\bf{\realbackslash bf}% +! \def\w{\realbackslash w}% +! \def\less{\realbackslash less}% +! \def\gtr{\realbackslash gtr}% +! \def\hat{\realbackslash hat}% +! \def\char{\realbackslash char}% +! \def\tclose##1{\realbackslash tclose{##1}}% +! \def\code##1{\realbackslash code{##1}}% +! \def\samp##1{\realbackslash samp{##1}}% +! \def\r##1{\realbackslash r{##1}}% +! \def\b##1{\realbackslash b{##1}}% +! \def\key##1{\realbackslash key{##1}}% +! \def\file##1{\realbackslash file{##1}}% +! \def\kbd##1{\realbackslash kbd{##1}}% +! % These are redefined because @smartitalic wouldn't work inside xdef. +! \def\i##1{\realbackslash i{##1}}% +! \def\cite##1{\realbackslash cite{##1}}% +! \def\var##1{\realbackslash var{##1}}% +! \def\emph##1{\realbackslash emph{##1}}% +! \def\dfn##1{\realbackslash dfn{##1}}% + } + + \newcount\absseclevel % used to calculate proper heading level +*************** +*** 2447,2453 **** + \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz + \def\chapterzzz #1{\seccheck{chapter}% + \secno=0 \subsecno=0 \subsubsecno=0 +! \global\advance \chapno by 1 \message{Chapter \the\chapno}% + \chapmacro {#1}{\the\chapno}% + \gdef\thissection{#1}% + \gdef\thischaptername{#1}% +--- 2782,2788 ---- + \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz + \def\chapterzzz #1{\seccheck{chapter}% + \secno=0 \subsecno=0 \subsubsecno=0 +! \global\advance \chapno by 1 \message{\putwordChapter \the\chapno}% + \chapmacro {#1}{\the\chapno}% + \gdef\thissection{#1}% + \gdef\thischaptername{#1}% +*************** +*** 2455,2461 **** + % because we don't want its macros evaluated now. + \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% + {\chapternofonts% +! \edef\temp{{\realbackslash chapentry {#1}{\the\chapno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \donoderef % +--- 2790,2797 ---- + % because we don't want its macros evaluated now. + \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash chapentry{\the\toks0}{\the\chapno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \donoderef % +*************** +*** 2474,2481 **** + \gdef\thischaptername{#1}% + \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% + {\chapternofonts% +! \edef\temp{{\realbackslash chapentry +! {#1}{\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \appendixnoderef % +--- 2810,2818 ---- + \gdef\thischaptername{#1}% + \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash chapentry{\the\toks0}% +! {\putwordAppendix{} \appendixletter}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \appendixnoderef % +*************** +*** 2484,2489 **** +--- 2821,2830 ---- + \global\let\subsubsection = \appendixsubsubsec + }} + ++ % @centerchap is like @unnumbered, but the heading is centered. ++ \outer\def\centerchap{\parsearg\centerchapyyy} ++ \def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} ++ + \outer\def\top{\parsearg\unnumberedyyy} + \outer\def\unnumbered{\parsearg\unnumberedyyy} + \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +*************** +*** 2505,2511 **** + \unnumbchapmacro {#1}% + \gdef\thischapter{#1}\gdef\thissection{#1}% + {\chapternofonts% +! \edef\temp{{\realbackslash unnumbchapentry {#1}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +--- 2846,2853 ---- + \unnumbchapmacro {#1}% + \gdef\thischapter{#1}\gdef\thissection{#1}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash unnumbchapentry{\the\toks0}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +*************** +*** 2520,2542 **** + \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % + \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% + {\chapternofonts% + \edef\temp{{\realbackslash secentry % +! {#1}{\the\chapno}{\the\secno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \donoderef % + \penalty 10000 % + }} + +! \outer\def\appenixsection{\parsearg\appendixsecyyy} + \outer\def\appendixsec{\parsearg\appendixsecyyy} + \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz + \def\appendixsectionzzz #1{\seccheck{appendixsection}% + \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % + \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% + {\chapternofonts% + \edef\temp{{\realbackslash secentry % +! {#1}{\appendixletter}{\the\secno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \appendixnoderef % +--- 2862,2886 ---- + \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % + \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% + {\chapternofonts% ++ \toks0 = {#1}% + \edef\temp{{\realbackslash secentry % +! {\the\toks0}{\the\chapno}{\the\secno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \donoderef % + \penalty 10000 % + }} + +! \outer\def\appendixsection{\parsearg\appendixsecyyy} + \outer\def\appendixsec{\parsearg\appendixsecyyy} + \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz + \def\appendixsectionzzz #1{\seccheck{appendixsection}% + \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % + \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% + {\chapternofonts% ++ \toks0 = {#1}% + \edef\temp{{\realbackslash secentry % +! {\the\toks0}{\appendixletter}{\the\secno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \appendixnoderef % +*************** +*** 2548,2554 **** + \def\unnumberedseczzz #1{\seccheck{unnumberedsec}% + \plainsecheading {#1}\gdef\thissection{#1}% + {\chapternofonts% +! \edef\temp{{\realbackslash unnumbsecentry{#1}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +--- 2892,2899 ---- + \def\unnumberedseczzz #1{\seccheck{unnumberedsec}% + \plainsecheading {#1}\gdef\thissection{#1}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash unnumbsecentry{\the\toks0}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +*************** +*** 2561,2568 **** + \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % + \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% + {\chapternofonts% + \edef\temp{{\realbackslash subsecentry % +! {#1}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \donoderef % +--- 2906,2914 ---- + \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % + \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% + {\chapternofonts% ++ \toks0 = {#1}% + \edef\temp{{\realbackslash subsecentry % +! {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \donoderef % +*************** +*** 2575,2582 **** + \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % + \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% + {\chapternofonts% + \edef\temp{{\realbackslash subsecentry % +! {#1}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \appendixnoderef % +--- 2921,2929 ---- + \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % + \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% + {\chapternofonts% ++ \toks0 = {#1}% + \edef\temp{{\realbackslash subsecentry % +! {\the\toks0}{\appendixletter}{\the\secno}{\the\subsecno}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \appendixnoderef % +*************** +*** 2586,2594 **** + \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} + \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz + \def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% +! \plainsecheading {#1}\gdef\thissection{#1}% + {\chapternofonts% +! \edef\temp{{\realbackslash unnumbsubsecentry{#1}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +--- 2933,2942 ---- + \outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} + \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz + \def\unnumberedsubseczzz #1{\seccheck{unnumberedsubsec}% +! \plainsubsecheading {#1}\gdef\thissection{#1}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash unnumbsubsecentry{\the\toks0}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +*************** +*** 2602,2609 **** + \subsubsecheading {#1} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% + {\chapternofonts% +! \edef\temp{{\realbackslash subsubsecentry % +! {#1} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno} + {\noexpand\folio}}}% + \escapechar=`\\% +--- 2950,2957 ---- + \subsubsecheading {#1} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash subsubsecentry{\the\toks0} + {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno} + {\noexpand\folio}}}% + \escapechar=`\\% +*************** +*** 2619,2625 **** + \subsubsecheading {#1} + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% + {\chapternofonts% +! \edef\temp{{\realbackslash subsubsecentry{#1}% + {\appendixletter} + {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}% + \escapechar=`\\% +--- 2967,2974 ---- + \subsubsecheading {#1} + {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash subsubsecentry{\the\toks0}% + {\appendixletter} + {\the\secno}{\the\subsecno}{\the\subsubsecno}{\noexpand\folio}}}% + \escapechar=`\\% +*************** +*** 2631,2639 **** + \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} + \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz + \def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% +! \plainsecheading {#1}\gdef\thissection{#1}% + {\chapternofonts% +! \edef\temp{{\realbackslash unnumbsubsubsecentry{#1}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +--- 2980,2989 ---- + \outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} + \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz + \def\unnumberedsubsubseczzz #1{\seccheck{unnumberedsubsubsec}% +! \plainsubsubsecheading {#1}\gdef\thissection{#1}% + {\chapternofonts% +! \toks0 = {#1}% +! \edef\temp{{\realbackslash unnumbsubsubsecentry{\the\toks0}{\noexpand\folio}}}% + \escapechar=`\\% + \write \contentsfile \temp % + \unnumbnoderef % +*************** +*** 2669,2678 **** + + % NOTE on use of \vbox for chapter headings, section headings, and + % such: +! % 1) We use \vbox rather than the earlier \line to permit +! % overlong headings to fold. +! % 2) \hyphenpenalty is set to 10000 because hyphenation in a +! % heading is obnoxious; this forbids it. + % 3) Likewise, headings look best if no \parindent is used, and + % if justification is not attempted. Hence \raggedright. + +--- 3019,3028 ---- + + % NOTE on use of \vbox for chapter headings, section headings, and + % such: +! % 1) We use \vbox rather than the earlier \line to permit +! % overlong headings to fold. +! % 2) \hyphenpenalty is set to 10000 because hyphenation in a +! % heading is obnoxious; this forbids it. + % 3) Likewise, headings look best if no \parindent is used, and + % if justification is not attempted. Hence \raggedright. + +*************** +*** 2690,2700 **** + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + +! \def\heading{\parsearg\secheadingi} +! +! \def\subheading{\parsearg\subsecheadingi} +! +! \def\subsubheading{\parsearg\subsubsecheadingi} + + % These macros generate a chapter, section, etc. heading only + % (including whitespace, linebreaking, etc. around it), +--- 3040,3049 ---- + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\penalty 200} + +! % @heading, @subheading, @subsubheading. +! \def\heading{\parsearg\plainsecheading} +! \def\subheading{\parsearg\plainsubsecheading} +! \def\subsubheading{\parsearg\plainsubsubsecheading} + + % These macros generate a chapter, section, etc. heading only + % (including whitespace, linebreaking, etc. around it), +*************** +*** 2708,2714 **** + %%% Define plain chapter starts, and page on/off switching for it + % Parameter controlling skip before chapter headings (if needed) + +! \newskip \chapheadingskip \chapheadingskip = 30pt plus 8pt minus 4pt + + \def\chapbreak{\dobreak \chapheadingskip {-4000}} + \def\chappager{\par\vfill\supereject} +--- 3057,3063 ---- + %%% Define plain chapter starts, and page on/off switching for it + % Parameter controlling skip before chapter headings (if needed) + +! \newskip\chapheadingskip + + \def\chapbreak{\dobreak \chapheadingskip {-4000}} + \def\chappager{\par\vfill\supereject} +*************** +*** 2717,2731 **** +--- 3066,3083 ---- + \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + + \def\CHAPPAGoff{ ++ \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chapbreak + \global\let\pagealignmacro=\chappager} + + \def\CHAPPAGon{ ++ \global\let\contentsalignmacro = \chappager + \global\let\pchapsepmacro=\chappager + \global\let\pagealignmacro=\chappager + \global\def\HEADINGSon{\HEADINGSsingle}} + + \def\CHAPPAGodd{ ++ \global\let\contentsalignmacro = \chapoddpage + \global\let\pchapsepmacro=\chapoddpage + \global\let\pagealignmacro=\chapoddpage + \global\def\HEADINGSon{\HEADINGSdouble}} +*************** +*** 2734,2758 **** + + \def\CHAPFplain{ + \global\let\chapmacro=\chfplain +! \global\let\unnumbchapmacro=\unnchfplain} + +! \def\chfplain #1#2{% + \pchapsepmacro + {% +! \chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 +! \parindent=0pt\raggedright +! \rm #2\enspace #1}% + }% +! \bigskip +! \penalty5000 + } + +! \def\unnchfplain #1{% +! \pchapsepmacro % +! {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 +! \parindent=0pt\raggedright +! \rm #1\hfill}}\bigskip \par\penalty 10000 % +! } + \CHAPFplain % The default + + \def\unnchfopen #1{% +--- 3086,3124 ---- + + \def\CHAPFplain{ + \global\let\chapmacro=\chfplain +! \global\let\unnumbchapmacro=\unnchfplain +! \global\let\centerchapmacro=\centerchfplain} + +! % Plain chapter opening. +! % #1 is the text, #2 the chapter number or empty if unnumbered. +! \def\chfplain#1#2{% + \pchapsepmacro + {% +! \chapfonts \rm +! \def\chapnum{#2}% +! \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% +! \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright +! \hangindent = \wd0 \centerparametersmaybe +! \unhbox0 #1\par}% + }% +! \nobreak\bigskip % no page break after a chapter title +! \nobreak + } + +! % Plain opening for unnumbered. +! \def\unnchfplain#1{\chfplain{#1}{}} +! +! % @centerchap -- centered and unnumbered. +! \let\centerparametersmaybe = \relax +! \def\centerchfplain#1{{% +! \def\centerparametersmaybe{% +! \advance\rightskip by 3\rightskip +! \leftskip = \rightskip +! \parfillskip = 0pt +! }% +! \chfplain{#1}{}% +! }} +! + \CHAPFplain % The default + + \def\unnchfopen #1{% +*************** +*** 2766,2839 **** + \par\penalty 5000 % + } + + \def\CHAPFopen{ + \global\let\chapmacro=\chfopen +! \global\let\unnumbchapmacro=\unnchfopen} + +- % Parameter controlling skip before section headings. +- +- \newskip \subsecheadingskip \subsecheadingskip = 17pt plus 8pt minus 4pt +- \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} + +! \newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt + \def\secheadingbreak{\dobreak \secheadingskip {-1000}} + +! % @paragraphindent is defined for the Info formatting commands only. +! \let\paragraphindent=\comment + +! % Section fonts are the base font at magstep2, which produces +! % a size a bit more than 14 points in the default situation. + +- \def\secheading #1#2#3{\secheadingi {#2.#3\enspace #1}} +- \def\plainsecheading #1{\secheadingi {#1}} +- \def\secheadingi #1{{\advance \secheadingskip by \parskip % +- \secheadingbreak}% +- {\secfonts \vbox{\hyphenpenalty=10000\tolerance=5000 +- \parindent=0pt\raggedright +- \rm #1\hfill}}% +- \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } +- +- +- % Subsection fonts are the base font at magstep1, +- % which produces a size of 12 points. +- +- \def\subsecheading #1#2#3#4{\subsecheadingi {#2.#3.#4\enspace #1}} +- \def\subsecheadingi #1{{\advance \subsecheadingskip by \parskip % +- \subsecheadingbreak}% +- {\subsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000 +- \parindent=0pt\raggedright +- \rm #1\hfill}}% +- \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000 } +- +- \def\subsubsecfonts{\subsecfonts} % Maybe this should change: +- % Perhaps make sssec fonts scaled +- % magstep half +- \def\subsubsecheading #1#2#3#4#5{\subsubsecheadingi {#2.#3.#4.#5\enspace #1}} +- \def\subsubsecheadingi #1{{\advance \subsecheadingskip by \parskip % +- \subsecheadingbreak}% +- {\subsubsecfonts \vbox{\hyphenpenalty=10000\tolerance=5000 +- \parindent=0pt\raggedright +- \rm #1\hfill}}% +- \ifdim \parskip<10pt \kern 10pt\kern -\parskip\fi \penalty 10000} + + +- \message{toc printing,} + + % Finish up the main text and prepare to read what we've written + % to \contentsfile. + + \newskip\contentsrightmargin \contentsrightmargin=1in + \def\startcontents#1{% +! \pagealignmacro + \immediate\closeout \contentsfile + \ifnum \pageno>0 +! \pageno = -1 % Request roman numbered pages. + \fi + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \unnumbchapmacro{#1}\def\thischapter{}% +! \begingroup % Set up to handle contents files properly. + \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + } +--- 3132,3214 ---- + \par\penalty 5000 % + } + ++ \def\centerchfopen #1{% ++ \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 ++ \parindent=0pt ++ \hfill {\rm #1}\hfill}}\bigskip \par\penalty 10000 % ++ } ++ + \def\CHAPFopen{ + \global\let\chapmacro=\chfopen +! \global\let\unnumbchapmacro=\unnchfopen +! \global\let\centerchapmacro=\centerchfopen} + + +! % Section titles. +! \newskip\secheadingskip + \def\secheadingbreak{\dobreak \secheadingskip {-1000}} ++ \def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} ++ \def\plainsecheading#1{\sectionheading{sec}{}{#1}} + +! % Subsection titles. +! \newskip \subsecheadingskip +! \def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} +! \def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} +! \def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} + +! % Subsubsection titles. +! \let\subsubsecheadingskip = \subsecheadingskip +! \let\subsubsecheadingbreak = \subsecheadingbreak +! \def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} +! \def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} + + ++ % Print any size section title. ++ % ++ % #1 is the section type (sec/subsec/subsubsec), #2 is the section ++ % number (maybe empty), #3 the text. ++ \def\sectionheading#1#2#3{% ++ {% ++ \expandafter\advance\csname #1headingskip\endcsname by \parskip ++ \csname #1headingbreak\endcsname ++ }% ++ {% ++ % Switch to the right set of fonts. ++ \csname #1fonts\endcsname \rm ++ % ++ % Only insert the separating space if we have a section number. ++ \def\secnum{#2}% ++ \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% ++ % ++ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright ++ \hangindent = \wd0 % zero if no section number ++ \unhbox0 #3}% ++ }% ++ \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak ++ } + + ++ \message{toc printing,} + % Finish up the main text and prepare to read what we've written + % to \contentsfile. + + \newskip\contentsrightmargin \contentsrightmargin=1in + \def\startcontents#1{% +! % If @setchapternewpage on, and @headings double, the contents should +! % start on an odd page, unlike chapters. Thus, we maintain +! % \contentsalignmacro in parallel with \pagealignmacro. +! % From: Torbjorn Granlund +! \contentsalignmacro + \immediate\closeout \contentsfile + \ifnum \pageno>0 +! \pageno = -1 % Request roman numbered pages. + \fi + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \unnumbchapmacro{#1}\def\thischapter{}% +! \begingroup % Set up to handle contents files properly. + \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 ++ \catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + } +*************** +*** 2857,2862 **** +--- 3232,3238 ---- + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl + \rm ++ \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\secentry ##1##2##3##4{} + \def\unnumbsecentry ##1##2{} +*************** +*** 2900,2906 **** + % This space should be plenty, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % (This space doesn't include the extra space that gets added after +! % the label; that gets put in in \shortchapentry above.) + \advance\dimen0 by 1.1em + \hbox to \dimen0{#1\hfil}% + } +--- 3276,3282 ---- + % This space should be plenty, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % (This space doesn't include the extra space that gets added after +! % the label; that gets put in by \shortchapentry above.) + \advance\dimen0 by 1.1em + \hbox to \dimen0{#1\hfil}% + } +*************** +*** 2921,2942 **** + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} + \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} + +- + % This parameter controls the indentation of the various levels. + \newdimen\tocindent \tocindent = 3pc + + % Now for the actual typesetting. In all these, #1 is the text and #2 is the + % page number. + % +! % If the toc has to be broken over pages, we would want to be at chapters + % if at all possible; hence the \penalty. + \def\dochapentry#1#2{% +! \penalty-300 \vskip\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno{#2}}% + \endgroup +! \nobreak\vskip .25\baselineskip + } + + \def\dosecentry#1#2{\begingroup +--- 3297,3317 ---- + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} + \def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} + + % This parameter controls the indentation of the various levels. + \newdimen\tocindent \tocindent = 3pc + + % Now for the actual typesetting. In all these, #1 is the text and #2 is the + % page number. + % +! % If the toc has to be broken over pages, we want it to be at chapters + % if at all possible; hence the \penalty. + \def\dochapentry#1#2{% +! \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno{#2}}% + \endgroup +! \nobreak\vskip .25\baselineskip plus.1\baselineskip + } + + \def\dosecentry#1#2{\begingroup +*************** +*** 2959,2967 **** + % can't do that in the \entry macro, since index entries might consist + % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) + % + \def\tocentry#1#2{\begingroup +! \hyphenpenalty = 10000 +! \entry{#1}{#2}% + \endgroup} + + % Space between chapter (or whatever) number and the title. +--- 3334,3343 ---- + % can't do that in the \entry macro, since index entries might consist + % of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) + % ++ % \turnoffactive is for the sake of @" used for umlauts. + \def\tocentry#1#2{\begingroup +! \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks +! \entry{\turnoffactive #1}{\turnoffactive #2}% + \endgroup} + + % Space between chapter (or whatever) number and the title. +*************** +*** 2985,2992 **** + \newbox\pushcharbox \newbox\bullbox + \newbox\equivbox \newbox\errorbox + +- \let\ptexequiv = \equiv +- + %{\tentt + %\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} + %\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} +--- 3361,3366 ---- +*************** +*** 2997,3008 **** + % depth .1ex\hfil} + %} + + \def\point{$\star$} +- + \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} + \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} + \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +- + \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} + + % Adapted from the TeXbook's \boxit. +--- 3371,3381 ---- + % depth .1ex\hfil} + %} + ++ % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. + \def\point{$\star$} + \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} + \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} + \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} + \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} + + % Adapted from the TeXbook's \boxit. +*************** +*** 3034,3040 **** + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie + \catcode `\%=14 +! \catcode 43=12 + \catcode`\"=12 + \catcode`\==12 + \catcode`\|=12 +--- 3407,3413 ---- + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie + \catcode `\%=14 +! \catcode 43=12 % plus + \catcode`\"=12 + \catcode`\==12 + \catcode`\|=12 +*************** +*** 3042,3057 **** + \catcode`\>=12 + \escapechar=`\\ + % +! \let\~=\ptextilde + \let\{=\ptexlbrace + \let\}=\ptexrbrace + \let\.=\ptexdot + \let\*=\ptexstar + \let\dots=\ptexdots + \def\@{@}% + \let\bullet=\ptexbullet +! \let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl +! \let\L=\ptexL + % + \let\Etex=\endgroup} + +--- 3415,3431 ---- + \catcode`\>=12 + \escapechar=`\\ + % +! \let\,=\ptexcomma + \let\{=\ptexlbrace + \let\}=\ptexrbrace + \let\.=\ptexdot + \let\*=\ptexstar + \let\dots=\ptexdots ++ \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% ++ \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% + \let\bullet=\ptexbullet +! \let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext + % + \let\Etex=\endgroup} + +*************** +*** 3110,3159 **** + \def\cbl{{\circle\char'012\hskip -6pt}} + \def\cbr{{\hskip 6pt\circle\char'011}} + \def\carttop{\hbox to \cartouter{\hskip\lskip +! \ctl\leaders\hrule height\circthick\hfil\ctr +! \hskip\rskip}} + \def\cartbot{\hbox to \cartouter{\hskip\lskip +! \cbl\leaders\hrule height\circthick\hfil\cbr +! \hskip\rskip}} + % + \newskip\lskip\newskip\rskip + + \long\def\cartouche{% + \begingroup +! \lskip=\leftskip \rskip=\rightskip +! \leftskip=0pt\rightskip=0pt %we want these *outside*. +! \cartinner=\hsize \advance\cartinner by-\lskip +! \advance\cartinner by-\rskip +! \cartouter=\hsize +! \advance\cartouter by 18pt % allow for 3pt kerns on either +! % side, and for 6pt waste from +! % each corner char +! \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip +! % Flag to tell @lisp, etc., not to narrow margin. +! \let\nonarrowing=\comment +! \vbox\bgroup +! \baselineskip=0pt\parskip=0pt\lineskip=0pt +! \carttop +! \hbox\bgroup +! \hskip\lskip +! \vrule\kern3pt +! \vbox\bgroup +! \hsize=\cartinner +! \kern3pt +! \begingroup +! \baselineskip=\normbskip +! \lineskip=\normlskip +! \parskip=\normpskip +! \vskip -\parskip + \def\Ecartouche{% +! \endgroup +! \kern3pt +! \egroup +! \kern3pt\vrule +! \hskip\rskip +! \egroup +! \cartbot +! \egroup + \endgroup + }} + +--- 3484,3533 ---- + \def\cbl{{\circle\char'012\hskip -6pt}} + \def\cbr{{\hskip 6pt\circle\char'011}} + \def\carttop{\hbox to \cartouter{\hskip\lskip +! \ctl\leaders\hrule height\circthick\hfil\ctr +! \hskip\rskip}} + \def\cartbot{\hbox to \cartouter{\hskip\lskip +! \cbl\leaders\hrule height\circthick\hfil\cbr +! \hskip\rskip}} + % + \newskip\lskip\newskip\rskip + + \long\def\cartouche{% + \begingroup +! \lskip=\leftskip \rskip=\rightskip +! \leftskip=0pt\rightskip=0pt %we want these *outside*. +! \cartinner=\hsize \advance\cartinner by-\lskip +! \advance\cartinner by-\rskip +! \cartouter=\hsize +! \advance\cartouter by 18pt % allow for 3pt kerns on either +! % side, and for 6pt waste from +! % each corner char +! \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip +! % Flag to tell @lisp, etc., not to narrow margin. +! \let\nonarrowing=\comment +! \vbox\bgroup +! \baselineskip=0pt\parskip=0pt\lineskip=0pt +! \carttop +! \hbox\bgroup +! \hskip\lskip +! \vrule\kern3pt +! \vbox\bgroup +! \hsize=\cartinner +! \kern3pt +! \begingroup +! \baselineskip=\normbskip +! \lineskip=\normlskip +! \parskip=\normpskip +! \vskip -\parskip + \def\Ecartouche{% +! \endgroup +! \kern3pt +! \egroup +! \kern3pt\vrule +! \hskip\rskip +! \egroup +! \cartbot +! \egroup + \endgroup + }} + +*************** +*** 3216,3223 **** + \let\Esmalllisp = \nonfillfinish + \let\Esmallexample = \nonfillfinish + % +! % Smaller interline space and fonts for small examples. +! \setleading{10pt}% + \indexfonts \tt + \rawbackslash % make \ output the \ character from the current font (tt) + \gobble +--- 3590,3596 ---- + \let\Esmalllisp = \nonfillfinish + \let\Esmallexample = \nonfillfinish + % +! % Smaller fonts for small examples. + \indexfonts \tt + \rawbackslash % make \ output the \ character from the current font (tt) + \gobble +*************** +*** 3306,3324 **** + + \gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + + % Definitions of (, ) and & used in args for functions. + % This is the definition of ( outside of all parentheses. +! \gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested % +! \global\advance\parencount by 1 } + % + % This is the definition of ( when already inside a level of parens. + \gdef\opnested{\char`\(\global\advance\parencount by 1 } + % + \gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. +! % also in that case restore the outer-level definition of (. +! \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi +! \global\advance \parencount by -1 } + % If we encounter &foo, then turn on ()-hacking afterwards + \gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } + % +--- 3679,3701 ---- + + \gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} ++ % This is used to turn on special parens ++ % but make & act ordinary (given that it's active). ++ \gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} + + % Definitions of (, ) and & used in args for functions. + % This is the definition of ( outside of all parentheses. +! \gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested +! \global\advance\parencount by 1 +! } + % + % This is the definition of ( when already inside a level of parens. + \gdef\opnested{\char`\(\global\advance\parencount by 1 } + % + \gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. +! % also in that case restore the outer-level definition of (. +! \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi +! \global\advance \parencount by -1 } + % If we encounter &foo, then turn on ()-hacking afterwards + \gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } + % +*************** +*** 3326,3333 **** + } % End of definition inside \activeparens + %% These parens (in \boldbrax) actually are a little bolder than the + %% contained text. This is especially needed for [ and ] +! \def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\&} +! \def\lbrb{{\bf\char`\[}} \def\rbrb{{\bf\char`\]}} + + % First, defname, which formats the header line itself. + % #1 should be the function name. +--- 3703,3713 ---- + } % End of definition inside \activeparens + %% These parens (in \boldbrax) actually are a little bolder than the + %% contained text. This is especially needed for [ and ] +! \def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } +! \def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } +! \def\ampnr{\&} +! \def\lbrb{{\bf\char`\[}} +! \def\rbrb{{\bf\char`\]}} + + % First, defname, which formats the header line itself. + % #1 should be the function name. +*************** +*** 3420,3426 **** + + % This is used for \def{tp,vr}parsebody. It could probably be used for + % some of the others, too, with some judicious conditionals. +! % + \def\parsebodycommon#1#2#3{% + \begingroup\inENV % + \medbreak % +--- 3800,3806 ---- + + % This is used for \def{tp,vr}parsebody. It could probably be used for + % some of the others, too, with some judicious conditionals. +! % + \def\parsebodycommon#1#2#3{% + \begingroup\inENV % + \medbreak % +*************** +*** 3454,3470 **** + } + + % Fine, but then we have to eventually remove the \empty *and* the +! % braces (if any). That's what this does, putting the result in \tptemp. +! % +! \def\removeemptybraces\empty#1\relax{\def\tptemp{#1}}% + + % After \spacesplit has done its work, this is called -- #1 is the final + % thing to call, #2 the type name (which starts with \empty), and #3 + % (which might be empty) the arguments. +! % + \def\parsetpheaderline#1#2#3{% +! \removeemptybraces#2\relax +! #1{\tptemp}{#3}% + }% + + \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % +--- 3834,3849 ---- + } + + % Fine, but then we have to eventually remove the \empty *and* the +! % braces (if any). That's what this does. +! % +! \def\removeemptybraces\empty#1\relax{#1} + + % After \spacesplit has done its work, this is called -- #1 is the final + % thing to call, #2 the type name (which starts with \empty), and #3 + % (which might be empty) the arguments. +! % + \def\parsetpheaderline#1#2#3{% +! #1{\removeemptybraces#2\relax}{#3}% + }% + + \def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % +*************** +*** 3505,3511 **** + \hyphenchar\tensl=0 + #1% + \hyphenchar\tensl=45 +! \ifnum\parencount=0 \else \errmessage{unbalanced parens in @def arguments}\fi% + \interlinepenalty=10000 + \advance\rightskip by 0pt plus 1fil + \endgraf\penalty 10000\vskip -\parskip\penalty 10000% +--- 3884,3890 ---- + \hyphenchar\tensl=0 + #1% + \hyphenchar\tensl=45 +! \ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% + \interlinepenalty=10000 + \advance\rightskip by 0pt plus 1fil + \endgraf\penalty 10000\vskip -\parskip\penalty 10000% +*************** +*** 3514,3520 **** + \def\deftypefunargs #1{% + % Expand, preventing hyphenation at `-' chars. + % Note that groups don't affect changes in \hyphenchar. +! \functionparens + \tclose{#1}% avoid \code because of side effects on active chars + \interlinepenalty=10000 + \advance\rightskip by 0pt plus 1fil +--- 3893,3900 ---- + \def\deftypefunargs #1{% + % Expand, preventing hyphenation at `-' chars. + % Note that groups don't affect changes in \hyphenchar. +! % Use \boldbraxnoamp, not \functionparens, so that & is not special. +! \boldbraxnoamp + \tclose{#1}% avoid \code because of side effects on active chars + \interlinepenalty=10000 + \advance\rightskip by 0pt plus 1fil +*************** +*** 3551,3557 **** + % #1 is the data type, #2 the name, #3 the args. + \def\deftypefunheaderx #1#2 #3\relax{% + \doind {fn}{\code{#2}}% Make entry in function index +! \begingroup\defname {\code{#1} #2}{Function}% + \deftypefunargs {#3}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } +--- 3931,3937 ---- + % #1 is the data type, #2 the name, #3 the args. + \def\deftypefunheaderx #1#2 #3\relax{% + \doind {fn}{\code{#2}}% Make entry in function index +! \begingroup\defname {\defheaderxcond#1\relax$$$#2}{Function}% + \deftypefunargs {#3}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } +*************** +*** 3560,3565 **** +--- 3940,3949 ---- + + \def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} + ++ % \defheaderxcond#1\relax$$$ ++ % puts #1 in @code, followed by a space, but does nothing if #1 is null. ++ \def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} ++ + % #1 is the classification. #2 is the data type. #3 is the name and args. + \def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} + % #1 is the classification, #2 the data type, #3 the name, #4 the args. +*************** +*** 3568,3574 **** + \begingroup + \normalparens % notably, turn off `&' magic, which prevents + % at least some C++ text from working +! \defname {\code{#2} #3}{#1}% + \deftypefunargs {#4}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } +--- 3952,3958 ---- + \begingroup + \normalparens % notably, turn off `&' magic, which prevents + % at least some C++ text from working +! \defname {\defheaderxcond#2\relax$$$#3}{#1}% + \deftypefunargs {#4}\endgroup % + \catcode 61=\other % Turn off change made in \defparsebody + } +*************** +*** 3601,3606 **** +--- 3985,3991 ---- + \def\defmacx #1 {\errmessage{@defmacx in invalid context}} + \def\defspecx #1 {\errmessage{@defspecx in invalid context}} + \def\deftypefnx #1 {\errmessage{@deftypefnx in invalid context}} ++ \def\deftypemethodx #1 {\errmessage{@deftypemethodx in invalid context}} + \def\deftypeunx #1 {\errmessage{@deftypeunx in invalid context}} + + % @defmethod, and so on +*************** +*** 3616,3621 **** +--- 4001,4016 ---- + \defunargs {#3}\endgroup % + } + ++ % @deftypemethod foo-class return-type foo-method args ++ % ++ \def\deftypemethod{% ++ \defmethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} ++ % ++ % #1 is the class name, #2 the data type, #3 the method name, #4 the args. ++ \def\deftypemethodheader#1#2#3#4{% ++ \deftypefnheaderx{Method on #1}{#2}#3 #4\relax ++ } ++ + % @defmethod == @defop Method + + \def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} +*************** +*** 3693,3712 **** + + \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} + +! % #1 is the data type. #2 is the name. + \def\deftypevarheader #1#2{% +! \doind {vr}{\code{#2}}% Make entry in variables index +! \begingroup\defname {\code{#1} #2}{Variable}% + \interlinepenalty=10000 + \endgraf\penalty 10000\vskip -\parskip\penalty 10000 + \endgroup} + + % @deftypevr {Global Flag} int enable + + \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} + +! \def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}% +! \begingroup\defname {\code{#2} #3}{#1} + \interlinepenalty=10000 + \endgraf\penalty 10000\vskip -\parskip\penalty 10000 + \endgroup} +--- 4088,4109 ---- + + \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} + +! % #1 is the data type. #2 is the name, perhaps followed by text that +! % is actually part of the data type, which should not be put into the index. + \def\deftypevarheader #1#2{% +! \dovarind#2 \relax% Make entry in variables index +! \begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}% + \interlinepenalty=10000 + \endgraf\penalty 10000\vskip -\parskip\penalty 10000 + \endgroup} ++ \def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} + + % @deftypevr {Global Flag} int enable + + \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} + +! \def\deftypevrheader #1#2#3{\dovarind#3 \relax% +! \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} + \interlinepenalty=10000 + \endgraf\penalty 10000\vskip -\parskip\penalty 10000 + \endgroup} +*************** +*** 3737,3742 **** +--- 4134,4140 ---- + + \def\deftpx #1 {\errmessage{@deftpx in invalid context}} + ++ + \message{cross reference,} + % Define cross-reference macros + \newwrite \auxfile +*************** +*** 3744,3749 **** +--- 4142,4152 ---- + \newif\ifhavexrefs % True if xref values are known. + \newif\ifwarnedxrefs % True if we warned once that they aren't known. + ++ % @inforef is simple. ++ \def\inforef #1{\inforefzzz #1,,,,**} ++ \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, ++ node \samp{\ignorespaces#1{}}} ++ + % \setref{foo} defines a cross-reference point named foo. + + \def\setref#1{% +*************** +*** 3777,3783 **** + \setbox0=\hbox{\printednodename}% + \ifdim \wd0 = 0pt + % No printed node name was explicitly given. +! \ifx\SETxref-automatic-section-title\relax % + % Use the actual chapter/section title appear inside + % the square brackets. Use the real section title if we have it. + \ifdim \wd1>0pt% +--- 4180,4189 ---- + \setbox0=\hbox{\printednodename}% + \ifdim \wd0 = 0pt + % No printed node name was explicitly given. +! \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax +! % Use the node name inside the square brackets. +! \def\printednodename{\ignorespaces #1}% +! \else + % Use the actual chapter/section title appear inside + % the square brackets. Use the real section title if we have it. + \ifdim \wd1>0pt% +*************** +*** 3786,3801 **** + \else + \ifhavexrefs + % We know the real title if we have the xref values. +! \def\printednodename{\refx{#1-title}}% + \else + % Otherwise just copy the Info node name. + \def\printednodename{\ignorespaces #1}% + \fi% + \fi +- \def\printednodename{#1-title}% +- \else +- % Use the node name inside the square brackets. +- \def\printednodename{\ignorespaces #1}% + \fi + \fi + % +--- 4192,4203 ---- + \else + \ifhavexrefs + % We know the real title if we have the xref values. +! \def\printednodename{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printednodename{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % +*************** +*** 3823,3829 **** + + % Use \turnoffactive so that punctuation chars such as underscore + % work in node names. +! \def\dosetq #1#2{{\let\folio=0 \turnoffactive% + \edef\next{\write\auxfile{\internalsetq {#1}{#2}}}% + \next}} + +--- 4225,4231 ---- + + % Use \turnoffactive so that punctuation chars such as underscore + % work in node names. +! \def\dosetq #1#2{{\let\folio=0 \turnoffactive + \edef\next{\write\auxfile{\internalsetq {#1}{#2}}}% + \next}} + +*************** +*** 3892,3974 **** + #2% Output the suffix in any case. + } + +- % Read the last existing aux file, if any. No error if none exists. +- + % This is the macro invoked by entries in the aux file. +! \def\xrdef #1#2{ +! {\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {#2}}} + +! \def\readauxfile{% +! \begingroup +! \catcode `\^^@=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\^^C=\other +! \catcode `\^^D=\other +! \catcode `\^^E=\other +! \catcode `\^^F=\other +! \catcode `\^^G=\other +! \catcode `\^^H=\other +! \catcode `\ =\other +! \catcode `\^^L=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode `\=\other +! \catcode 26=\other +! \catcode `\^^[=\other +! \catcode `\^^\=\other +! \catcode `\^^]=\other +! \catcode `\^^^=\other +! \catcode `\^^_=\other +! \catcode `\@=\other +! \catcode `\^=\other +! \catcode `\~=\other +! \catcode `\[=\other +! \catcode `\]=\other +! \catcode`\"=\other +! \catcode`\_=\other +! \catcode`\|=\other +! \catcode`\<=\other +! \catcode`\>=\other +! \catcode `\$=\other +! \catcode `\#=\other +! \catcode `\&=\other +! % `\+ does not work, so use 43. +! \catcode 43=\other +! % Make the characters 128-255 be printing characters +! {% +! \count 1=128 +! \def\loop{% +! \catcode\count 1=\other +! \advance\count 1 by 1 +! \ifnum \count 1<256 \loop \fi + }% +! }% +! % the aux file uses ' as the escape. +! % Turn off \ as an escape so we do not lose on +! % entries which were dumped with control sequences in their names. +! % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ +! % Reference to such entries still does not work the way one would wish, +! % but at least they do not bomb out when the aux file is read in. +! \catcode `\{=1 \catcode `\}=2 +! \catcode `\%=\other +! \catcode `\'=0 +! \catcode `\\=\other +! \openin 1 \jobname.aux +! \ifeof 1 \else \closein 1 \input \jobname.aux \global\havexrefstrue +! \global\warnedobstrue +! \fi +! % Open the new aux file. Tex will close it automatically at exit. +! \openout \auxfile=\jobname.aux + \endgroup} + + +--- 4294,4394 ---- + #2% Output the suffix in any case. + } + + % This is the macro invoked by entries in the aux file. +! \def\xrdef #1#2{{% +! \catcode`\'=\other +! \expandafter\gdef\csname X#1\endcsname{#2}% +! }} + +! % Read the last existing aux file, if any. No error if none exists. +! \def\readauxfile{\begingroup +! \catcode`\^^@=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\^^C=\other +! \catcode`\^^D=\other +! \catcode`\^^E=\other +! \catcode`\^^F=\other +! \catcode`\^^G=\other +! \catcode`\^^H=\other +! \catcode`\ =\other +! \catcode`\^^L=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode`\=\other +! \catcode26=\other +! \catcode`\^^[=\other +! \catcode`\^^\=\other +! \catcode`\^^]=\other +! \catcode`\^^^=\other +! \catcode`\^^_=\other +! \catcode`\@=\other +! \catcode`\^=\other +! % It was suggested to define this as 7, which would allow ^^e4 etc. +! % in xref tags, i.e., node names. But since ^^e4 notation isn't +! % supported in the main text, it doesn't seem desirable. Furthermore, +! % that is not enough: for node names that actually contain a ^ +! % character, we would end up writing a line like this: 'xrdef {'hat +! % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first +! % argument, and \hat is not an expandable control sequence. It could +! % all be worked out, but why? Either we support ^^ or we don't. +! % +! % The other change necessary for this was to define \auxhat: +! % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter +! % and then to call \auxhat in \setq. +! % +! \catcode`\~=\other +! \catcode`\[=\other +! \catcode`\]=\other +! \catcode`\"=\other +! \catcode`\_=\other +! \catcode`\|=\other +! \catcode`\<=\other +! \catcode`\>=\other +! \catcode`\$=\other +! \catcode`\#=\other +! \catcode`\&=\other +! % `\+ does not work, so use 43. +! \catcode43=\other +! % Make the characters 128-255 be printing characters +! {% +! \count 1=128 +! \def\loop{% +! \catcode\count 1=\other +! \advance\count 1 by 1 +! \ifnum \count 1<256 \loop \fi +! }% + }% +! % The aux file uses ' as the escape (for now). +! % Turn off \ as an escape so we do not lose on +! % entries which were dumped with control sequences in their names. +! % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ +! % Reference to such entries still does not work the way one would wish, +! % but at least they do not bomb out when the aux file is read in. +! \catcode`\{=1 +! \catcode`\}=2 +! \catcode`\%=\other +! \catcode`\'=0 +! \catcode`\\=\other +! % +! \openin 1 \jobname.aux +! \ifeof 1 \else +! \closein 1 +! \input \jobname.aux +! \global\havexrefstrue +! \global\warnedobstrue +! \fi +! % Open the new aux file. TeX will close it automatically at exit. +! \openout\auxfile=\jobname.aux + \endgroup} + + +*************** +*** 3979,3985 **** + % The trailing space in the following definition for supereject is + % vital for proper filling; pages come out unaligned when you do a + % pagealignmacro call if that space before the closing brace is +! % removed. + \def\supereject{\par\penalty -20000\footnoteno =0 } + + % @footnotestyle is meaningful for info output only.. +--- 4399,4406 ---- + % The trailing space in the following definition for supereject is + % vital for proper filling; pages come out unaligned when you do a + % pagealignmacro call if that space before the closing brace is +! % removed. (Generally, numeric constants should always be followed by a +! % space to prevent strange expansion errors.) + \def\supereject{\par\penalty -20000\footnoteno =0 } + + % @footnotestyle is meaningful for info output only.. +*************** +*** 4008,4014 **** + % Don't bother with the trickery in plain.tex to not require the + % footnote text as a parameter. Our footnotes don't need to be so general. + % +! \long\gdef\footnotezzz#1{\insert\footins{% + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. +--- 4429,4439 ---- + % Don't bother with the trickery in plain.tex to not require the + % footnote text as a parameter. Our footnotes don't need to be so general. + % +! % Oh yes, they do; otherwise, @ifset and anything else that uses +! % \parseargline fail inside footnotes because the tokens are fixed when +! % the footnote is read. --karl, 16nov96. +! % +! \long\gdef\footnotezzz{\insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. +*************** +*** 4030,4037 **** + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut +! #1\strut}% + } + + }%end \catcode `\@=11 + +--- 4455,4467 ---- + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut +! \futurelet\next\fo@t + } ++ \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t ++ \else\let\next\f@t\fi \next} ++ \def\f@@t{\bgroup\aftergroup\@foot\let\next} ++ \def\f@t#1{#1\@foot} ++ \def\@foot{\strut\egroup} + + }%end \catcode `\@=11 + +*************** +*** 4104,4116 **** + + % Set some numeric style parameters, for 8.5 x 11 format. + +! %\hsize = 6.5in + \newdimen\defaultparindent \defaultparindent = 15pt + \parindent = \defaultparindent +! \parskip 18pt plus 1pt +! \setleading{15pt} + \advance\topskip by 1.2cm + + % Prevent underfull vbox error messages. + \vbadness=10000 + +--- 4534,4551 ---- + + % Set some numeric style parameters, for 8.5 x 11 format. + +! \hsize = 6in +! \hoffset = .25in + \newdimen\defaultparindent \defaultparindent = 15pt + \parindent = \defaultparindent +! \parskip 3pt plus 2pt minus 1pt +! \setleading{13.2pt} + \advance\topskip by 1.2cm + ++ \chapheadingskip = 15pt plus 4pt minus 2pt ++ \secheadingskip = 12pt plus 3pt minus 2pt ++ \subsecheadingskip = 9pt plus 2pt minus 2pt ++ + % Prevent underfull vbox error messages. + \vbadness=10000 + +*************** +*** 4133,4162 **** + + % Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) + \def\smallbook{ +! +! % These values for secheadingskip and subsecheadingskip are +! % experiments. RJC 7 Aug 1992 +! \global\secheadingskip = 17pt plus 6pt minus 3pt +! \global\subsecheadingskip = 14pt plus 6pt minus 3pt +! +! \global\lispnarrowing = 0.3in +! \setleading{12pt} +! \advance\topskip by -1cm +! \global\parskip 3pt plus 1pt +! \global\hsize = 5in +! \global\vsize=7.5in +! \global\tolerance=700 +! \global\hfuzz=1pt +! \global\contentsrightmargin=0pt +! \global\deftypemargin=0pt +! \global\defbodyindent=.5cm +! +! \global\pagewidth=\hsize +! \global\pageheight=\vsize +! +! \global\let\smalllisp=\smalllispx +! \global\let\smallexample=\smalllispx +! \global\def\Esmallexample{\Esmalllisp} + } + + % Use @afourpaper to print on European A4 paper. +--- 4568,4595 ---- + + % Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) + \def\smallbook{ +! \global\chapheadingskip = 15pt plus 4pt minus 2pt +! \global\secheadingskip = 12pt plus 3pt minus 2pt +! \global\subsecheadingskip = 9pt plus 2pt minus 2pt +! % +! \global\lispnarrowing = 0.3in +! \setleading{12pt} +! \advance\topskip by -1cm +! \global\parskip 2pt plus 1pt +! \global\hsize = 5in +! \global\vsize=7.5in +! \global\tolerance=700 +! \global\hfuzz=1pt +! \global\contentsrightmargin=0pt +! \global\deftypemargin=0pt +! \global\defbodyindent=.5cm +! % +! \global\pagewidth=\hsize +! \global\pageheight=\vsize +! % +! \global\let\smalllisp=\smalllispx +! \global\let\smallexample=\smalllispx +! \global\def\Esmallexample{\Esmalllisp} + } + + % Use @afourpaper to print on European A4 paper. +*************** +*** 4179,4190 **** + \global\pageheight=\vsize + } + + % Allow control of the text dimensions. Parameters in order: textheight; +! % textwidth; \voffset; \hoffset (!); binding offset. All require a dimension; + % header is additional; added length extends the bottom of the page. + +! \def\changepagesizes#1#2#3#4#5 +! {\global\vsize= #1 + \advance\vsize by \topskip + \global\voffset= #3 + \global\hsize= #2 +--- 4612,4630 ---- + \global\pageheight=\vsize + } + ++ \bindingoffset=0pt ++ \normaloffset=\hoffset ++ \pagewidth=\hsize ++ \pageheight=\vsize ++ + % Allow control of the text dimensions. Parameters in order: textheight; +! % textwidth; voffset; hoffset; binding offset; topskip. +! % All require a dimension; + % header is additional; added length extends the bottom of the page. + +! \def\changepagesizes#1#2#3#4#5#6{ +! \global\vsize= #1 +! \global\topskip= #6 + \advance\vsize by \topskip + \global\voffset= #3 + \global\hsize= #2 +*************** +*** 4197,4205 **** + \global\normaloffset= #4 + \global\bindingoffset= #5} + +! % This layout is compatible with Latex on A4 paper. +! +! \def\afourlatex{\changepagesizes{22cm}{15cm}{7mm}{4.6mm}{5mm}} + + % Define macros to output various characters with catcode for normal text. + \catcode`\"=\other +--- 4637,4656 ---- + \global\normaloffset= #4 + \global\bindingoffset= #5} + +! % A specific text layout, 24x15cm overall, intended for A4 paper. Top margin +! % 29mm, hence bottom margin 28mm, nominal side margin 3cm. +! \def\afourlatex +! {\global\tolerance=700 +! \global\hfuzz=1pt +! \setleading{12pt} +! \global\parskip 15pt plus 1pt +! \advance\baselineskip by 1.6pt +! \changepagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm} +! } +! +! % Use @afourwide to print on European A4 paper in wide format. +! \def\afourwide{\afourpaper +! \changepagesizes{9.5in}{6.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}} + + % Define macros to output various characters with catcode for normal text. + \catcode`\"=\other +*************** +*** 4247,4260 **** + \catcode`\_=\active + \def_{\ifusingtt\normalunderscore\_} + % Subroutine for the previous macro. +! \def\_{\lvvmode \kern.06em \vbox{\hrule width.3em height.1ex}} +! +! % \lvvmode is equivalent in function to \leavevmode. +! % Using \leavevmode runs into trouble when written out to +! % an index file due to the expansion of \leavevmode into ``\unhbox +! % \voidb@x'' ---which looks to TeX like ``\unhbox \voidb\x'' due to our +! % magic tricks with @. +! \def\lvvmode{\vbox to 0pt{}} + + \catcode`\|=\active + \def|{{\tt \char '174}} +--- 4698,4704 ---- + \catcode`\_=\active + \def_{\ifusingtt\normalunderscore\_} + % Subroutine for the previous macro. +! \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} + + \catcode`\|=\active + \def|{{\tt \char '174}} +*************** +*** 4273,4278 **** +--- 4717,4731 ---- + {\catcode`\==\active + \global\def={{\tt \char 61}}} + ++ \catcode`+=\active ++ \catcode`\_=\active ++ ++ % If a .fmt file is being used, characters that might appear in a file ++ % name cannot be active until we have parsed the command line. ++ % So turn them off again, and have \everyjob (or @setfilename) turn them on. ++ % \otherifyactive is called near the end of this file. ++ \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} ++ + \catcode`\@=0 + + % \rawbackslashxx output one backslash character in current font +*************** +*** 4315,4320 **** +--- 4768,4777 ---- + @let>=@normalgreater + @let+=@normalplus} + ++ % Make _ and + \other characters, temporarily. ++ % This is canceled by @fixbackslash. ++ @otherifyactive ++ + % If a .fmt file is being used, we don't want the `\input texinfo' to show up. + % That is what \eatinput is for; after that, the `\' should revert to printing + % a backslash. +*************** +*** 4325,4332 **** + % On the other hand, perhaps the file did not have a `\input texinfo'. Then + % the first `\{ in the file would cause an error. This macro tries to fix + % that, assuming it is called before the first `\' could plausibly occur. + % +! @gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi} + + %% These look ok in all fonts, so just make them not special. The @rm below + %% makes sure that the current font starts out as the newly loaded cmr10 +--- 4782,4792 ---- + % On the other hand, perhaps the file did not have a `\input texinfo'. Then + % the first `\{ in the file would cause an error. This macro tries to fix + % that, assuming it is called before the first `\' could plausibly occur. ++ % Also back turn on active characters that might appear in the input ++ % file name, in case not using a pre-dumped format. + % +! @gdef@fixbackslash{@ifx\@eatinput @let\ = @normalbackslash @fi +! @catcode`+=@active @catcode`@_=@active} + + %% These look ok in all fonts, so just make them not special. The @rm below + %% makes sure that the current font starts out as the newly loaded cmr10 diff --git a/editors/mule/pkg/COMMENT b/editors/mule/pkg/COMMENT new file mode 100644 index 00000000000..354886a9e24 --- /dev/null +++ b/editors/mule/pkg/COMMENT @@ -0,0 +1 @@ +Multilingual GNU editing macros (editor) diff --git a/editors/mule/pkg/DESCR b/editors/mule/pkg/DESCR new file mode 100644 index 00000000000..fed780d51f5 --- /dev/null +++ b/editors/mule/pkg/DESCR @@ -0,0 +1,15 @@ +From FAQ-Mule: + + Mule is a multi-lingual enhancement of GNU Emacs. Mule Ver.1 was + based on GNU Emacs Ver.18 and Mule Ver.2 is based on GNU Emacs + Ver.19. Mule Ver.1 will not be supported anymore. + + Mule has the following features: + * It can handle not only ASCII characters (7 bit) and ISO Latin-1 + characters (8 bit), but also 16 bit characters like Japanese, + Chinese, and Korean. Furthermore Mule can have a mixture of + languages in a single buffer. + * You can set different coding systems for file input/output, + keyboard input, and inter-process communication. + * When not in the multi-lingual mode, it behaves almost exactly like GNU + Emacs. diff --git a/editors/mule/pkg/PLIST b/editors/mule/pkg/PLIST new file mode 100644 index 00000000000..d2a7ca93ecf --- /dev/null +++ b/editors/mule/pkg/PLIST @@ -0,0 +1,1037 @@ +@comment $NetBSD: PLIST,v 1.1.1.1 2000/11/21 05:21:15 kei Exp $ +bin/any2ps +bin/b2m +bin/coco +bin/ctags +bin/emacsclient +bin/etags +bin/m2ps +bin/mule-19.28 +@exec ln %D/%F %B/mule +@unexec rm %B/mule +bin/rcs-checkin +@comment @unexec install-info --delete %D/info/CCL %D/info/dir +@comment @unexec install-info --delete %D/info/ISO2022 %D/info/dir +@comment @unexec install-info --delete %D/info/R2L %D/info/dir +@comment @unexec install-info --delete %D/info/XFONT %D/info/dir +@unexec install-info --delete %D/info/antenews-jp %D/info/dir +@unexec install-info --delete %D/info/canna-jp %D/info/dir +@unexec install-info --delete %D/info/cl %D/info/dir +@unexec install-info --delete %D/info/dired-x %D/info/dir +@comment @unexec install-info --delete %D/info/egg %D/info/dir +@unexec install-info --delete %D/info/egg-jp %D/info/dir +@unexec install-info --delete %D/info/emacs %D/info/dir +@unexec install-info --delete %D/info/forms %D/info/dir +@unexec install-info --delete %D/info/gnus %D/info/dir +@comment @unexec install-info --delete %D/info/kbd-trans %D/info/dir +@comment @unexec install-info --delete %D/info/languages %D/info/dir +@comment @unexec install-info --delete %D/info/m2ps %D/info/dir +@unexec install-info --delete %D/info/mule %D/info/dir +@unexec install-info --delete %D/info/mule-jp %D/info/dir +@comment @unexec install-info --delete %D/info/quail %D/info/dir +@unexec install-info --delete %D/info/sc %D/info/dir +@comment @unexec install-info --delete %D/info/terminology %D/info/dir +@unexec install-info --delete %D/info/vip %D/info/dir +info/CCL +info/ISO2022 +info/R2L +info/XFONT +info/antenews-jp +info/canna-jp +info/cl +info/cl-1 +info/cl-2 +info/cl-3 +info/cl-4 +info/cl-5 +info/cl-6 +info/dired-x +info/egg +info/egg-jp +info/egg-jp-1 +info/egg-jp-2 +info/emacs +info/emacs-1 +info/emacs-10 +info/emacs-11 +info/emacs-12 +info/emacs-13 +info/emacs-14 +info/emacs-15 +info/emacs-16 +info/emacs-17 +info/emacs-18 +info/emacs-19 +info/emacs-2 +info/emacs-20 +info/emacs-21 +info/emacs-22 +info/emacs-23 +info/emacs-24 +info/emacs-3 +info/emacs-4 +info/emacs-5 +info/emacs-6 +info/emacs-7 +info/emacs-8 +info/emacs-9 +info/forms +info/gnus +info/gnus-1 +info/gnus-2 +info/gnus-3 +info/kbd-trans +info/languages +info/m2ps +info/mule +info/mule-jp +info/mule-jp-1 +info/mule-jp-2 +info/mule-jp-3 +info/quail +info/sc +info/sc-1 +info/sc-2 +info/sc-3 +info/terminology +info/vip +info/vip-1 +info/vip-2 +@comment @exec install-info %D/info/CCL %D/info/dir +@comment @exec install-info %D/info/ISO2022 %D/info/dir +@comment @exec install-info %D/info/R2L %D/info/dir +@comment @exec install-info %D/info/XFONT %D/info/dir +@exec install-info %D/info/antenews-jp %D/info/dir +@exec install-info %D/info/canna-jp %D/info/dir +@exec install-info %D/info/cl %D/info/dir +@exec install-info %D/info/dired-x %D/info/dir +@comment @exec install-info %D/info/egg %D/info/dir +@exec install-info %D/info/egg-jp %D/info/dir +@exec install-info %D/info/emacs %D/info/dir +@exec install-info %D/info/forms %D/info/dir +@exec install-info %D/info/gnus %D/info/dir +@comment @exec install-info %D/info/kbd-trans %D/info/dir +@comment @exec install-info %D/info/languages %D/info/dir +@comment @exec install-info %D/info/m2ps %D/info/dir +@exec install-info %D/info/mule %D/info/dir +@exec install-info %D/info/mule-jp %D/info/dir +@comment @exec install-info %D/info/quail %D/info/dir +@exec install-info %D/info/sc %D/info/dir +@comment @exec install-info %D/info/terminology %D/info/dir +@exec install-info %D/info/vip %D/info/dir +man/man1/coco.1 +man/man1/ctags.1 +man/man1/etags.1 +man/man1/m2ps.1 +man/man1/mule.1 +lib/mule/19.28/etc/3B-MAXMEM +lib/mule/19.28/etc/AIX.DUMP +lib/mule/19.28/etc/APPLE +lib/mule/19.28/etc/BABYL +lib/mule/19.28/etc/CHARSETS +lib/mule/19.28/etc/CODINGS +lib/mule/19.28/etc/COOKIES +lib/mule/19.28/etc/COPYING +lib/mule/19.28/etc/ChangeLog +lib/mule/19.28/etc/DEBUG +lib/mule/19.28/etc/DISTRIB +lib/mule/19.28/etc/DOC +lib/mule/19.28/etc/DOC-19.28.1 +lib/mule/19.28/etc/FAQ +lib/mule/19.28/etc/FAQ-Mule +lib/mule/19.28/etc/FAQ-Mule.cn +lib/mule/19.28/etc/FAQ-Mule.jp +lib/mule/19.28/etc/FAQ-Mule.kr +lib/mule/19.28/etc/FAQ-Mule.th +lib/mule/19.28/etc/FAQ-NEW +lib/mule/19.28/etc/FTP +lib/mule/19.28/etc/GNU +lib/mule/19.28/etc/INTERVIEW +lib/mule/19.28/etc/JOKES +lib/mule/19.28/etc/LEDIT +lib/mule/19.28/etc/LNEWS +lib/mule/19.28/etc/LPF +lib/mule/19.28/etc/MACHINES +lib/mule/19.28/etc/MAILINGLISTS +lib/mule/19.28/etc/MH-E-NEWS +lib/mule/19.28/etc/MORE.STUFF +lib/mule/19.28/etc/MOTIVATION +lib/mule/19.28/etc/MSDOS +lib/mule/19.28/etc/Makefile +lib/mule/19.28/etc/Makefile.in +lib/mule/19.28/etc/NEWS +lib/mule/19.28/etc/ONEWS +lib/mule/19.28/etc/OONEWS +lib/mule/19.28/etc/OOONEWS +lib/mule/19.28/etc/OOOONEWS +lib/mule/19.28/etc/ORDERS +lib/mule/19.28/etc/ORDERS.EUROPE +lib/mule/19.28/etc/ORDERS.JAPAN +lib/mule/19.28/etc/OTHER.EMACSES +lib/mule/19.28/etc/README +lib/mule/19.28/etc/SERVICE +lib/mule/19.28/etc/SUN-SUPPORT +lib/mule/19.28/etc/TERMS +lib/mule/19.28/etc/TUTORIAL +lib/mule/19.28/etc/TUTORIAL.jp +lib/mule/19.28/etc/TUTORIAL.kr +lib/mule/19.28/etc/TUTORIAL.th +lib/mule/19.28/etc/VERSIONS +lib/mule/19.28/etc/Xkeymap.txt +lib/mule/19.28/etc/celibacy.1 +lib/mule/19.28/etc/charset +lib/mule/19.28/etc/coco.1 +lib/mule/19.28/etc/condom.1 +lib/mule/19.28/etc/copying.paper +lib/mule/19.28/etc/ctags.1 +lib/mule/19.28/etc/demo.ps +lib/mule/19.28/etc/echo.msg +lib/mule/19.28/etc/emacs.1 +lib/mule/19.28/etc/emacs.bash +lib/mule/19.28/etc/emacs.csh +lib/mule/19.28/etc/emacs.icon +lib/mule/19.28/etc/emacs.xbm +lib/mule/19.28/etc/emacstool.1 +lib/mule/19.28/etc/etags.1 +lib/mule/19.28/etc/etags.notes +lib/mule/19.28/etc/etags.vms +lib/mule/19.28/etc/ledit.l +lib/mule/19.28/etc/m2ps.1 +lib/mule/19.28/etc/m2ps.ps +lib/mule/19.28/etc/ms-kermit +lib/mule/19.28/etc/ms-kermit-7bit +lib/mule/19.28/etc/mule-refcard.tex +lib/mule/19.28/etc/mule.1 +lib/mule/19.28/etc/mule.xbm +lib/mule/19.28/etc/news.texi +lib/mule/19.28/etc/refcard.ps +lib/mule/19.28/etc/refcard.tex +lib/mule/19.28/etc/sex.6 +lib/mule/19.28/etc/spook.lines +lib/mule/19.28/etc/termcap.dat +lib/mule/19.28/etc/termcap.ucb +lib/mule/19.28/etc/tom.xbm +lib/mule/19.28/etc/ulimit.hack +lib/mule/19.28/etc/vipcard.tex +lib/mule/19.28/etc/yow.lines +lib/mule/19.28/${MACHINE_ARCH}--netbsd/cvtmail +lib/mule/19.28/${MACHINE_ARCH}--netbsd/digest-doc +lib/mule/19.28/${MACHINE_ARCH}--netbsd/emacsserver +lib/mule/19.28/${MACHINE_ARCH}--netbsd/fakemail +lib/mule/19.28/${MACHINE_ARCH}--netbsd/hexl +lib/mule/19.28/${MACHINE_ARCH}--netbsd/make-docfile +lib/mule/19.28/${MACHINE_ARCH}--netbsd/make-path +lib/mule/19.28/${MACHINE_ARCH}--netbsd/movemail +lib/mule/19.28/${MACHINE_ARCH}--netbsd/profile +lib/mule/19.28/${MACHINE_ARCH}--netbsd/rcs2log +lib/mule/19.28/${MACHINE_ARCH}--netbsd/sorted-doc +lib/mule/19.28/${MACHINE_ARCH}--netbsd/test-distrib +lib/mule/19.28/${MACHINE_ARCH}--netbsd/timer +lib/mule/19.28/${MACHINE_ARCH}--netbsd/vcdiff +lib/mule/19.28/${MACHINE_ARCH}--netbsd/wakeup +lib/mule/19.28/${MACHINE_ARCH}--netbsd/yow +lib/mule/19.28/lisp/COPYING +lib/mule/19.28/lisp/ChangeLog +lib/mule/19.28/lisp/ChangeLog.1 +lib/mule/19.28/lisp/ChangeLog.2 +lib/mule/19.28/lisp/ChangeLog.3 +lib/mule/19.28/lisp/Makefile +lib/mule/19.28/lisp/README +lib/mule/19.28/lisp/abbrev.el +lib/mule/19.28/lisp/abbrev.elc +lib/mule/19.28/lisp/abbrevlist.el +lib/mule/19.28/lisp/abbrevlist.elc +lib/mule/19.28/lisp/ada.el +lib/mule/19.28/lisp/ada.elc +lib/mule/19.28/lisp/add-log.el +lib/mule/19.28/lisp/add-log.elc +lib/mule/19.28/lisp/advice.el +lib/mule/19.28/lisp/advice.elc +lib/mule/19.28/lisp/allout.el +lib/mule/19.28/lisp/allout.elc +lib/mule/19.28/lisp/ange-ftp.el +lib/mule/19.28/lisp/ange-ftp.elc +lib/mule/19.28/lisp/appt.el +lib/mule/19.28/lisp/appt.elc +lib/mule/19.28/lisp/apropos.el +lib/mule/19.28/lisp/apropos.elc +lib/mule/19.28/lisp/arabic.el +lib/mule/19.28/lisp/arabic.elc +lib/mule/19.28/lisp/array.el +lib/mule/19.28/lisp/array.elc +lib/mule/19.28/lisp/asm-mode.el +lib/mule/19.28/lisp/asm-mode.elc +lib/mule/19.28/lisp/assoc.el +lib/mule/19.28/lisp/assoc.elc +lib/mule/19.28/lisp/autoinsert.el +lib/mule/19.28/lisp/autoinsert.elc +lib/mule/19.28/lisp/autoload.el +lib/mule/19.28/lisp/autoload.elc +lib/mule/19.28/lisp/avoid.el +lib/mule/19.28/lisp/avoid.elc +lib/mule/19.28/lisp/awk-mode.el +lib/mule/19.28/lisp/awk-mode.elc +lib/mule/19.28/lisp/backquote.el +lib/mule/19.28/lisp/backquote.elc +lib/mule/19.28/lisp/bib-mode.el +lib/mule/19.28/lisp/bib-mode.elc +lib/mule/19.28/lisp/bibtex.el +lib/mule/19.28/lisp/bibtex.elc +lib/mule/19.28/lisp/blackbox.el +lib/mule/19.28/lisp/blackbox.elc +lib/mule/19.28/lisp/blessmail.el +lib/mule/19.28/lisp/bookmark.el +lib/mule/19.28/lisp/bookmark.elc +lib/mule/19.28/lisp/buff-menu.el +lib/mule/19.28/lisp/buff-menu.elc +lib/mule/19.28/lisp/busyu.el +lib/mule/19.28/lisp/byte-opt.el +lib/mule/19.28/lisp/byte-opt.elc +lib/mule/19.28/lisp/byte-run.el +lib/mule/19.28/lisp/byte-run.elc +lib/mule/19.28/lisp/bytecomp.el +lib/mule/19.28/lisp/bytecomp.elc +lib/mule/19.28/lisp/c-mode.el +lib/mule/19.28/lisp/c-mode.elc +lib/mule/19.28/lisp/cal-dst.el +lib/mule/19.28/lisp/cal-dst.elc +lib/mule/19.28/lisp/cal-french.el +lib/mule/19.28/lisp/cal-french.elc +lib/mule/19.28/lisp/cal-mayan.el +lib/mule/19.28/lisp/cal-mayan.elc +lib/mule/19.28/lisp/cal-menu.el +lib/mule/19.28/lisp/cal-menu.elc +lib/mule/19.28/lisp/calendar.el +lib/mule/19.28/lisp/calendar.elc +lib/mule/19.28/lisp/can-n-egg.el +lib/mule/19.28/lisp/canna.el +lib/mule/19.28/lisp/canna.elc +lib/mule/19.28/lisp/case-table.el +lib/mule/19.28/lisp/case-table.elc +lib/mule/19.28/lisp/cc-mode.el +lib/mule/19.28/lisp/cc-mode.elc +lib/mule/19.28/lisp/ccl.el +lib/mule/19.28/lisp/ccl.elc +lib/mule/19.28/lisp/cdl.el +lib/mule/19.28/lisp/cdl.elc +lib/mule/19.28/lisp/chinese.el +lib/mule/19.28/lisp/chinese.elc +lib/mule/19.28/lisp/chistory.el +lib/mule/19.28/lisp/chistory.elc +lib/mule/19.28/lisp/cl-compat.el +lib/mule/19.28/lisp/cl-compat.elc +lib/mule/19.28/lisp/cl-extra.el +lib/mule/19.28/lisp/cl-extra.elc +lib/mule/19.28/lisp/cl-indent.el +lib/mule/19.28/lisp/cl-indent.elc +lib/mule/19.28/lisp/cl-macs.el +lib/mule/19.28/lisp/cl-macs.elc +lib/mule/19.28/lisp/cl-seq.el +lib/mule/19.28/lisp/cl-seq.elc +lib/mule/19.28/lisp/cl-specs.el +lib/mule/19.28/lisp/cl-specs.elc +lib/mule/19.28/lisp/cl.el +lib/mule/19.28/lisp/cl.elc +lib/mule/19.28/lisp/cmacexp.el +lib/mule/19.28/lisp/cmacexp.elc +lib/mule/19.28/lisp/cmuscheme.el +lib/mule/19.28/lisp/cmuscheme.elc +lib/mule/19.28/lisp/comint.el +lib/mule/19.28/lisp/comint.elc +lib/mule/19.28/lisp/compare-w.el +lib/mule/19.28/lisp/compare-w.elc +lib/mule/19.28/lisp/compile.el +lib/mule/19.28/lisp/compile.elc +lib/mule/19.28/lisp/complete.el +lib/mule/19.28/lisp/complete.elc +lib/mule/19.28/lisp/completion.el +lib/mule/19.28/lisp/completion.elc +lib/mule/19.28/lisp/cookie1.el +lib/mule/19.28/lisp/cookie1.elc +lib/mule/19.28/lisp/cplus-md.el +lib/mule/19.28/lisp/cplus-md.elc +lib/mule/19.28/lisp/cust-print.el +lib/mule/19.28/lisp/cust-print.elc +lib/mule/19.28/lisp/cyrillic.el +lib/mule/19.28/lisp/cyrillic.elc +lib/mule/19.28/lisp/dabbrev.el +lib/mule/19.28/lisp/dabbrev.elc +lib/mule/19.28/lisp/debug.el +lib/mule/19.28/lisp/debug.elc +lib/mule/19.28/lisp/delsel.el +lib/mule/19.28/lisp/delsel.elc +lib/mule/19.28/lisp/derived.el +lib/mule/19.28/lisp/derived.elc +lib/mule/19.28/lisp/desktop.el +lib/mule/19.28/lisp/desktop.elc +lib/mule/19.28/lisp/diary-ins.el +lib/mule/19.28/lisp/diary-ins.elc +lib/mule/19.28/lisp/diary-lib.el +lib/mule/19.28/lisp/diary-lib.elc +lib/mule/19.28/lisp/diff.el +lib/mule/19.28/lisp/diff.elc +lib/mule/19.28/lisp/dired-aux.el +lib/mule/19.28/lisp/dired-aux.elc +lib/mule/19.28/lisp/dired-x.el +lib/mule/19.28/lisp/dired-x.elc +lib/mule/19.28/lisp/dired.el +lib/mule/19.28/lisp/dired.elc +lib/mule/19.28/lisp/dired.todo +lib/mule/19.28/lisp/disass.el +lib/mule/19.28/lisp/disass.elc +lib/mule/19.28/lisp/disp-table.el +lib/mule/19.28/lisp/disp-table.elc +lib/mule/19.28/lisp/dissociate.el +lib/mule/19.28/lisp/dissociate.elc +lib/mule/19.28/lisp/doctor.el +lib/mule/19.28/lisp/doctor.elc +lib/mule/19.28/lisp/dos-fns.el +lib/mule/19.28/lisp/dos-fns.elc +lib/mule/19.28/lisp/double.el +lib/mule/19.28/lisp/double.elc +lib/mule/19.28/lisp/dunnet.el +lib/mule/19.28/lisp/dunnet.elc +lib/mule/19.28/lisp/easymenu.el +lib/mule/19.28/lisp/easymenu.elc +lib/mule/19.28/lisp/ebuff-menu.el +lib/mule/19.28/lisp/ebuff-menu.elc +lib/mule/19.28/lisp/echistory.el +lib/mule/19.28/lisp/echistory.elc +lib/mule/19.28/lisp/edebug.el +lib/mule/19.28/lisp/edebug.elc +lib/mule/19.28/lisp/ediff.el +lib/mule/19.28/lisp/ediff.elc +lib/mule/19.28/lisp/edmacro.el +lib/mule/19.28/lisp/edmacro.elc +lib/mule/19.28/lisp/edt.el +lib/mule/19.28/lisp/edt.elc +lib/mule/19.28/lisp/egg-jsymbol.el +lib/mule/19.28/lisp/egg-keymap.el +lib/mule/19.28/lisp/egg.el +lib/mule/19.28/lisp/egg.elc +lib/mule/19.28/lisp/eggrc-sj3 +lib/mule/19.28/lisp/eggrc-wnn +lib/mule/19.28/lisp/eggrc-wnn.orig +lib/mule/19.28/lisp/ehelp.el +lib/mule/19.28/lisp/ehelp.elc +lib/mule/19.28/lisp/electric.el +lib/mule/19.28/lisp/electric.elc +lib/mule/19.28/lisp/emacsbug.el +lib/mule/19.28/lisp/emacsbug.elc +lib/mule/19.28/lisp/emerge.el +lib/mule/19.28/lisp/emerge.elc +lib/mule/19.28/lisp/env.el +lib/mule/19.28/lisp/env.elc +lib/mule/19.28/lisp/etags.el +lib/mule/19.28/lisp/etags.elc +lib/mule/19.28/lisp/ethio.el +lib/mule/19.28/lisp/ethio.elc +lib/mule/19.28/lisp/european.el +lib/mule/19.28/lisp/european.elc +lib/mule/19.28/lisp/eval-reg.el +lib/mule/19.28/lisp/eval-reg.elc +lib/mule/19.28/lisp/faces.el +lib/mule/19.28/lisp/faces.elc +lib/mule/19.28/lisp/files.el +lib/mule/19.28/lisp/files.elc +lib/mule/19.28/lisp/fill.el +lib/mule/19.28/lisp/fill.elc +lib/mule/19.28/lisp/find-dired.el +lib/mule/19.28/lisp/find-dired.elc +lib/mule/19.28/lisp/find-gc.el +lib/mule/19.28/lisp/find-gc.elc +lib/mule/19.28/lisp/finder-inf.el +lib/mule/19.28/lisp/finder-inf.elc +lib/mule/19.28/lisp/finder.el +lib/mule/19.28/lisp/finder.elc +lib/mule/19.28/lisp/float-sup.el +lib/mule/19.28/lisp/float-sup.elc +lib/mule/19.28/lisp/float.el +lib/mule/19.28/lisp/float.elc +lib/mule/19.28/lisp/flow-ctrl.el +lib/mule/19.28/lisp/flow-ctrl.elc +lib/mule/19.28/lisp/foldout.el +lib/mule/19.28/lisp/foldout.elc +lib/mule/19.28/lisp/font-lock.el +lib/mule/19.28/lisp/font-lock.elc +lib/mule/19.28/lisp/forms-d2.dat +lib/mule/19.28/lisp/forms-d2.el +lib/mule/19.28/lisp/forms-pass.el +lib/mule/19.28/lisp/forms.el +lib/mule/19.28/lisp/forms.elc +lib/mule/19.28/lisp/fortran.el +lib/mule/19.28/lisp/fortran.elc +lib/mule/19.28/lisp/frame.el +lib/mule/19.28/lisp/frame.elc +lib/mule/19.28/lisp/gnus-uu.el +lib/mule/19.28/lisp/gnus-uu.elc +lib/mule/19.28/lisp/gnus.el +lib/mule/19.28/lisp/gnus.elc +lib/mule/19.28/lisp/gnusmail.el +lib/mule/19.28/lisp/gnusmail.elc +lib/mule/19.28/lisp/gnusmisc.el +lib/mule/19.28/lisp/gnusmisc.elc +lib/mule/19.28/lisp/gnuspost.el +lib/mule/19.28/lisp/gnuspost.elc +lib/mule/19.28/lisp/gnusutil.el +lib/mule/19.28/lisp/gnusutil.elc +lib/mule/19.28/lisp/gomoku.el +lib/mule/19.28/lisp/gomoku.elc +lib/mule/19.28/lisp/gud.el +lib/mule/19.28/lisp/gud.elc +lib/mule/19.28/lisp/hanoi.el +lib/mule/19.28/lisp/hanoi.elc +lib/mule/19.28/lisp/help-macro.el +lib/mule/19.28/lisp/help-macro.elc +lib/mule/19.28/lisp/help.el +lib/mule/19.28/lisp/help.elc +lib/mule/19.28/lisp/helper.el +lib/mule/19.28/lisp/helper.elc +lib/mule/19.28/lisp/hexl.el +lib/mule/19.28/lisp/hexl.elc +lib/mule/19.28/lisp/hideif.el +lib/mule/19.28/lisp/hideif.elc +lib/mule/19.28/lisp/hilit19.el +lib/mule/19.28/lisp/hilit19.elc +lib/mule/19.28/lisp/hippie-exp.el +lib/mule/19.28/lisp/hippie-exp.elc +lib/mule/19.28/lisp/holidays.el +lib/mule/19.28/lisp/holidays.elc +lib/mule/19.28/lisp/icomplete.el +lib/mule/19.28/lisp/icomplete.elc +lib/mule/19.28/lisp/icon.el +lib/mule/19.28/lisp/icon.elc +lib/mule/19.28/lisp/ielm.el +lib/mule/19.28/lisp/ielm.elc +lib/mule/19.28/lisp/imenu.el +lib/mule/19.28/lisp/imenu.elc +lib/mule/19.28/lisp/indent.el +lib/mule/19.28/lisp/indent.elc +lib/mule/19.28/lisp/inf-lisp.el +lib/mule/19.28/lisp/inf-lisp.elc +lib/mule/19.28/lisp/info.el +lib/mule/19.28/lisp/info.el.orig +lib/mule/19.28/lisp/info.elc +lib/mule/19.28/lisp/informat.el +lib/mule/19.28/lisp/informat.elc +lib/mule/19.28/lisp/isearch-ext.el +lib/mule/19.28/lisp/isearch-ext.elc +lib/mule/19.28/lisp/isearch.el +lib/mule/19.28/lisp/isearch.elc +lib/mule/19.28/lisp/iso-acc.el +lib/mule/19.28/lisp/iso-acc.elc +lib/mule/19.28/lisp/iso-ascii.el +lib/mule/19.28/lisp/iso-ascii.elc +lib/mule/19.28/lisp/iso-cvt.el +lib/mule/19.28/lisp/iso-cvt.elc +lib/mule/19.28/lisp/iso-insert.el +lib/mule/19.28/lisp/iso-insert.elc +lib/mule/19.28/lisp/iso-swed.el +lib/mule/19.28/lisp/iso-swed.elc +lib/mule/19.28/lisp/iso-syntax.el +lib/mule/19.28/lisp/iso-syntax.elc +lib/mule/19.28/lisp/iso-transl.el +lib/mule/19.28/lisp/iso-transl.elc +lib/mule/19.28/lisp/ispell.el +lib/mule/19.28/lisp/ispell.elc +lib/mule/19.28/lisp/ispell4.el +lib/mule/19.28/lisp/ispell4.elc +lib/mule/19.28/lisp/its/han-kata.el +lib/mule/19.28/lisp/its/hangul.el +lib/mule/19.28/lisp/its/hankaku.el +lib/mule/19.28/lisp/its/hira.el +lib/mule/19.28/lisp/its/kanainput.el +lib/mule/19.28/lisp/its/kata.el +lib/mule/19.28/lisp/its/pinyin.el +lib/mule/19.28/lisp/its/zenkaku.el +lib/mule/19.28/lisp/its/zhuyin.el +lib/mule/19.28/lisp/japanese.el +lib/mule/19.28/lisp/japanese.elc +lib/mule/19.28/lisp/jisx0201.el +lib/mule/19.28/lisp/jka-compr.el +lib/mule/19.28/lisp/jka-compr.elc +lib/mule/19.28/lisp/kbd-isearch.el +lib/mule/19.28/lisp/kermit.el +lib/mule/19.28/lisp/kermit.elc +lib/mule/19.28/lisp/keyboard.el +lib/mule/19.28/lisp/keyboard.elc +lib/mule/19.28/lisp/kinsoku.el +lib/mule/19.28/lisp/kinsoku.elc +lib/mule/19.28/lisp/korean.el +lib/mule/19.28/lisp/korean.elc +lib/mule/19.28/lisp/ledit.el +lib/mule/19.28/lisp/ledit.elc +lib/mule/19.28/lisp/levents.el +lib/mule/19.28/lisp/levents.elc +lib/mule/19.28/lisp/life.el +lib/mule/19.28/lisp/life.elc +lib/mule/19.28/lisp/lisp-mnt.el +lib/mule/19.28/lisp/lisp-mnt.elc +lib/mule/19.28/lisp/lisp-mode.el +lib/mule/19.28/lisp/lisp-mode.elc +lib/mule/19.28/lisp/lisp.el +lib/mule/19.28/lisp/lisp.elc +lib/mule/19.28/lisp/lmenu.el +lib/mule/19.28/lisp/lmenu.elc +lib/mule/19.28/lisp/loaddefs.el +lib/mule/19.28/lisp/loaddefs.elc +lib/mule/19.28/lisp/loadhist.el +lib/mule/19.28/lisp/loadhist.elc +lib/mule/19.28/lisp/loadup.el +lib/mule/19.28/lisp/lpr.el +lib/mule/19.28/lisp/lpr.elc +lib/mule/19.28/lisp/ls-lisp.el +lib/mule/19.28/lisp/ls-lisp.elc +lib/mule/19.28/lisp/lselect.el +lib/mule/19.28/lisp/lselect.elc +lib/mule/19.28/lisp/lucid.el +lib/mule/19.28/lisp/lucid.elc +lib/mule/19.28/lisp/lunar.el +lib/mule/19.28/lisp/lunar.elc +lib/mule/19.28/lisp/m2ps-util.el +lib/mule/19.28/lisp/m2ps-util.elc +lib/mule/19.28/lisp/macros.el +lib/mule/19.28/lisp/macros.elc +lib/mule/19.28/lisp/mail-extr.el +lib/mule/19.28/lisp/mail-extr.elc +lib/mule/19.28/lisp/mail-hist.el +lib/mule/19.28/lisp/mail-hist.elc +lib/mule/19.28/lisp/mail-utils.el +lib/mule/19.28/lisp/mail-utils.elc +lib/mule/19.28/lisp/mailabbrev.el +lib/mule/19.28/lisp/mailabbrev.elc +lib/mule/19.28/lisp/mailalias.el +lib/mule/19.28/lisp/mailalias.elc +lib/mule/19.28/lisp/mailpost.el +lib/mule/19.28/lisp/mailpost.elc +lib/mule/19.28/lisp/makefile.el +lib/mule/19.28/lisp/makefile.elc +lib/mule/19.28/lisp/makeinfo.el +lib/mule/19.28/lisp/makeinfo.elc +lib/mule/19.28/lisp/makesum.el +lib/mule/19.28/lisp/makesum.elc +lib/mule/19.28/lisp/man.el +lib/mule/19.28/lisp/man.elc +lib/mule/19.28/lisp/map-ynp.el +lib/mule/19.28/lisp/map-ynp.elc +lib/mule/19.28/lisp/medit.el +lib/mule/19.28/lisp/medit.elc +lib/mule/19.28/lisp/meese.el +lib/mule/19.28/lisp/meese.elc +lib/mule/19.28/lisp/menu-bar.el +lib/mule/19.28/lisp/menu-bar.elc +lib/mule/19.28/lisp/metamail.el +lib/mule/19.28/lisp/metamail.elc +lib/mule/19.28/lisp/mh-comp.el +lib/mule/19.28/lisp/mh-comp.elc +lib/mule/19.28/lisp/mh-e.el +lib/mule/19.28/lisp/mh-e.elc +lib/mule/19.28/lisp/mh-funcs.el +lib/mule/19.28/lisp/mh-funcs.elc +lib/mule/19.28/lisp/mh-mime.el +lib/mule/19.28/lisp/mh-mime.elc +lib/mule/19.28/lisp/mh-pick.el +lib/mule/19.28/lisp/mh-pick.elc +lib/mule/19.28/lisp/mh-seq.el +lib/mule/19.28/lisp/mh-seq.elc +lib/mule/19.28/lisp/mh-utils.el +lib/mule/19.28/lisp/mh-utils.elc +lib/mule/19.28/lisp/mhspool.el +lib/mule/19.28/lisp/mhspool.elc +lib/mule/19.28/lisp/mim-mode.el +lib/mule/19.28/lisp/mim-mode.elc +lib/mule/19.28/lisp/mim-syntax.el +lib/mule/19.28/lisp/mim-syntax.elc +lib/mule/19.28/lisp/misc.el +lib/mule/19.28/lisp/misc.elc +lib/mule/19.28/lisp/mlconvert.el +lib/mule/19.28/lisp/mlconvert.elc +lib/mule/19.28/lisp/mldrag.el +lib/mule/19.28/lisp/mldrag.elc +lib/mule/19.28/lisp/mlsupport.el +lib/mule/19.28/lisp/mlsupport.elc +lib/mule/19.28/lisp/modula2.el +lib/mule/19.28/lisp/modula2.elc +lib/mule/19.28/lisp/mouse-sel.el +lib/mule/19.28/lisp/mouse-sel.elc +lib/mule/19.28/lisp/mouse.el +lib/mule/19.28/lisp/mouse.elc +lib/mule/19.28/lisp/mpuz.el +lib/mule/19.28/lisp/mpuz.elc +lib/mule/19.28/lisp/mule-conf.el +lib/mule/19.28/lisp/mule-diag.el +lib/mule/19.28/lisp/mule-diag.elc +lib/mule/19.28/lisp/mule-init.el +lib/mule/19.28/lisp/mule-init.el.old +lib/mule/19.28/lisp/mule-init.elc +lib/mule/19.28/lisp/mule-inst.el +lib/mule/19.28/lisp/mule-util.el +lib/mule/19.28/lisp/mule-util.elc +lib/mule/19.28/lisp/mule.el +lib/mule/19.28/lisp/mule.elc +lib/mule/19.28/lisp/netunam.el +lib/mule/19.28/lisp/netunam.elc +lib/mule/19.28/lisp/nnspool.el +lib/mule/19.28/lisp/nnspool.elc +lib/mule/19.28/lisp/nntp.el +lib/mule/19.28/lisp/nntp.elc +lib/mule/19.28/lisp/novice.el +lib/mule/19.28/lisp/novice.elc +lib/mule/19.28/lisp/nroff-mode.el +lib/mule/19.28/lisp/nroff-mode.elc +lib/mule/19.28/lisp/options.el +lib/mule/19.28/lisp/options.elc +lib/mule/19.28/lisp/outline.el +lib/mule/19.28/lisp/outline.elc +lib/mule/19.28/lisp/page-ext.el +lib/mule/19.28/lisp/page-ext.elc +lib/mule/19.28/lisp/page.el +lib/mule/19.28/lisp/page.elc +lib/mule/19.28/lisp/paragraphs.el +lib/mule/19.28/lisp/paragraphs.elc +lib/mule/19.28/lisp/paren.el +lib/mule/19.28/lisp/paren.elc +lib/mule/19.28/lisp/pascal.el +lib/mule/19.28/lisp/pascal.elc +lib/mule/19.28/lisp/paths.el +lib/mule/19.28/lisp/perl-mode.el +lib/mule/19.28/lisp/perl-mode.elc +lib/mule/19.28/lisp/picture.el +lib/mule/19.28/lisp/picture.elc +lib/mule/19.28/lisp/pp.el +lib/mule/19.28/lisp/pp.elc +lib/mule/19.28/lisp/profile.el +lib/mule/19.28/lisp/profile.elc +lib/mule/19.28/lisp/prolog.el +lib/mule/19.28/lisp/prolog.elc +lib/mule/19.28/lisp/quail-egg.el +lib/mule/19.28/lisp/quail.el +lib/mule/19.28/lisp/quail.elc +lib/mule/19.28/lisp/quail/4c-CNS.el +lib/mule/19.28/lisp/quail/ccdospy.el +lib/mule/19.28/lisp/quail/ccdospy.elc +lib/mule/19.28/lisp/quail/ctlau.el +lib/mule/19.28/lisp/quail/ctlau.elc +lib/mule/19.28/lisp/quail/ctlaub.el +lib/mule/19.28/lisp/quail/ctlaub.elc +lib/mule/19.28/lisp/quail/cyrillic.el +lib/mule/19.28/lisp/quail/cyrillic.elc +lib/mule/19.28/lisp/quail/ethio.el +lib/mule/19.28/lisp/quail/ethio.elc +lib/mule/19.28/lisp/quail/etzy.el +lib/mule/19.28/lisp/quail/etzy.elc +lib/mule/19.28/lisp/quail/greek.el +lib/mule/19.28/lisp/quail/greek.elc +lib/mule/19.28/lisp/quail/hangul.el +lib/mule/19.28/lisp/quail/hangul.elc +lib/mule/19.28/lisp/quail/hangul3.el +lib/mule/19.28/lisp/quail/hangul3.elc +lib/mule/19.28/lisp/quail/hanja-jis.el +lib/mule/19.28/lisp/quail/hanja-jis.elc +lib/mule/19.28/lisp/quail/hanja-ksc.el +lib/mule/19.28/lisp/quail/hanja-ksc.elc +lib/mule/19.28/lisp/quail/hebrew.el +lib/mule/19.28/lisp/quail/hebrew.elc +lib/mule/19.28/lisp/quail/hsymbol.el +lib/mule/19.28/lisp/quail/hsymbol.elc +lib/mule/19.28/lisp/quail/ipa.el +lib/mule/19.28/lisp/quail/ipa.elc +lib/mule/19.28/lisp/quail/latin.el +lib/mule/19.28/lisp/quail/latin.elc +lib/mule/19.28/lisp/quail/punct-b5.el +lib/mule/19.28/lisp/quail/punct-b5.elc +lib/mule/19.28/lisp/quail/punct.el +lib/mule/19.28/lisp/quail/punct.elc +lib/mule/19.28/lisp/quail/py-CNS.el +lib/mule/19.28/lisp/quail/py-CNS.elc +lib/mule/19.28/lisp/quail/py-b5.el +lib/mule/19.28/lisp/quail/py-b5.elc +lib/mule/19.28/lisp/quail/py.el +lib/mule/19.28/lisp/quail/py.elc +lib/mule/19.28/lisp/quail/qj-b5.el +lib/mule/19.28/lisp/quail/qj-b5.elc +lib/mule/19.28/lisp/quail/qj.el +lib/mule/19.28/lisp/quail/qj.elc +lib/mule/19.28/lisp/quail/sisheng.el +lib/mule/19.28/lisp/quail/sisheng.elc +lib/mule/19.28/lisp/quail/sw.el +lib/mule/19.28/lisp/quail/sw.elc +lib/mule/19.28/lisp/quail/tcode.el +lib/mule/19.28/lisp/quail/tcode.elc +lib/mule/19.28/lisp/quail/thai.el +lib/mule/19.28/lisp/quail/thai.elc +lib/mule/19.28/lisp/quail/tit.el +lib/mule/19.28/lisp/quail/tit.elc +lib/mule/19.28/lisp/quail/tonepy.el +lib/mule/19.28/lisp/quail/tonepy.elc +lib/mule/19.28/lisp/quail/viet.el +lib/mule/19.28/lisp/quail/viet.elc +lib/mule/19.28/lisp/quail/zozy.el +lib/mule/19.28/lisp/quail/zozy.elc +lib/mule/19.28/lisp/rcompile.el +lib/mule/19.28/lisp/rcompile.elc +lib/mule/19.28/lisp/rect.el +lib/mule/19.28/lisp/rect.elc +lib/mule/19.28/lisp/refbib.el +lib/mule/19.28/lisp/refbib.elc +lib/mule/19.28/lisp/refer.el +lib/mule/19.28/lisp/refer.elc +lib/mule/19.28/lisp/regi.el +lib/mule/19.28/lisp/regi.elc +lib/mule/19.28/lisp/register.el +lib/mule/19.28/lisp/register.elc +lib/mule/19.28/lisp/replace.el +lib/mule/19.28/lisp/replace.elc +lib/mule/19.28/lisp/reporter.el +lib/mule/19.28/lisp/reporter.elc +lib/mule/19.28/lisp/reposition.el +lib/mule/19.28/lisp/reposition.elc +lib/mule/19.28/lisp/resume.el +lib/mule/19.28/lisp/resume.elc +lib/mule/19.28/lisp/rfc822.el +lib/mule/19.28/lisp/rfc822.elc +lib/mule/19.28/lisp/ring.el +lib/mule/19.28/lisp/ring.elc +lib/mule/19.28/lisp/rlogin.el +lib/mule/19.28/lisp/rlogin.elc +lib/mule/19.28/lisp/rmail.el +lib/mule/19.28/lisp/rmail.elc +lib/mule/19.28/lisp/rmailedit.el +lib/mule/19.28/lisp/rmailedit.elc +lib/mule/19.28/lisp/rmailkwd.el +lib/mule/19.28/lisp/rmailkwd.elc +lib/mule/19.28/lisp/rmailmsc.el +lib/mule/19.28/lisp/rmailmsc.elc +lib/mule/19.28/lisp/rmailout.el +lib/mule/19.28/lisp/rmailout.elc +lib/mule/19.28/lisp/rmailsort.el +lib/mule/19.28/lisp/rmailsort.elc +lib/mule/19.28/lisp/rmailsum.el +lib/mule/19.28/lisp/rmailsum.elc +lib/mule/19.28/lisp/rnews.el +lib/mule/19.28/lisp/rnews.elc +lib/mule/19.28/lisp/rnewspost.el +lib/mule/19.28/lisp/rnewspost.elc +lib/mule/19.28/lisp/rot13.el +lib/mule/19.28/lisp/rot13.elc +lib/mule/19.28/lisp/rsz-mini.el +lib/mule/19.28/lisp/rsz-mini.elc +lib/mule/19.28/lisp/s-region.el +lib/mule/19.28/lisp/s-region.elc +lib/mule/19.28/lisp/saveplace.el +lib/mule/19.28/lisp/saveplace.elc +lib/mule/19.28/lisp/sc.el +lib/mule/19.28/lisp/scheme.el +lib/mule/19.28/lisp/scheme.elc +lib/mule/19.28/lisp/scribe.el +lib/mule/19.28/lisp/scribe.elc +lib/mule/19.28/lisp/scroll-bar.el +lib/mule/19.28/lisp/scroll-bar.elc +lib/mule/19.28/lisp/select.el +lib/mule/19.28/lisp/select.elc +lib/mule/19.28/lisp/sendmail.el +lib/mule/19.28/lisp/sendmail.elc +lib/mule/19.28/lisp/server.el +lib/mule/19.28/lisp/server.elc +lib/mule/19.28/lisp/sgml-mode.el +lib/mule/19.28/lisp/sgml-mode.elc +lib/mule/19.28/lisp/sh-script.el +lib/mule/19.28/lisp/sh-script.elc +lib/mule/19.28/lisp/shadowfile.el +lib/mule/19.28/lisp/shadowfile.elc +lib/mule/19.28/lisp/shell.el +lib/mule/19.28/lisp/shell.elc +lib/mule/19.28/lisp/simple.el +lib/mule/19.28/lisp/simple.elc +lib/mule/19.28/lisp/simula.el +lib/mule/19.28/lisp/simula.elc +lib/mule/19.28/lisp/sj3-client.el +lib/mule/19.28/lisp/sj3-client.elc +lib/mule/19.28/lisp/sj3-egg.el +lib/mule/19.28/lisp/sj3-egg.elc +lib/mule/19.28/lisp/skeleton.el +lib/mule/19.28/lisp/skeleton.elc +lib/mule/19.28/lisp/solar.el +lib/mule/19.28/lisp/solar.elc +lib/mule/19.28/lisp/sort.el +lib/mule/19.28/lisp/sort.elc +lib/mule/19.28/lisp/soundex.el +lib/mule/19.28/lisp/soundex.elc +lib/mule/19.28/lisp/spell.el +lib/mule/19.28/lisp/spell.elc +lib/mule/19.28/lisp/spook.el +lib/mule/19.28/lisp/spook.elc +lib/mule/19.28/lisp/startup.el +lib/mule/19.28/lisp/startup.el.orig +lib/mule/19.28/lisp/startup.elc +lib/mule/19.28/lisp/studly.el +lib/mule/19.28/lisp/studly.elc +lib/mule/19.28/lisp/subr.el +lib/mule/19.28/lisp/subr.elc +lib/mule/19.28/lisp/sun-curs.el +lib/mule/19.28/lisp/sun-fns.el +lib/mule/19.28/lisp/supercite.el +lib/mule/19.28/lisp/supercite.elc +lib/mule/19.28/lisp/swedish.el +lib/mule/19.28/lisp/swedish.elc +lib/mule/19.28/lisp/tabify.el +lib/mule/19.28/lisp/tabify.elc +lib/mule/19.28/lisp/tar-mode.el +lib/mule/19.28/lisp/tar-mode.elc +lib/mule/19.28/lisp/tcl-mode.el +lib/mule/19.28/lisp/tcl-mode.elc +lib/mule/19.28/lisp/tcp.el +lib/mule/19.28/lisp/tcp.elc +lib/mule/19.28/lisp/telnet.el +lib/mule/19.28/lisp/telnet.elc +lib/mule/19.28/lisp/tempo.el +lib/mule/19.28/lisp/tempo.elc +lib/mule/19.28/lisp/term-nasty.el +lib/mule/19.28/lisp/term/AT386.el +lib/mule/19.28/lisp/term/README +lib/mule/19.28/lisp/term/apollo.el +lib/mule/19.28/lisp/term/apollo.elc +lib/mule/19.28/lisp/term/bg-mouse.el +lib/mule/19.28/lisp/term/bg-mouse.elc +lib/mule/19.28/lisp/term/bobcat.el +lib/mule/19.28/lisp/term/f-term.el +lib/mule/19.28/lisp/term/ibmpc.el +lib/mule/19.28/lisp/term/internal.el +lib/mule/19.28/lisp/term/keyswap.el +lib/mule/19.28/lisp/term/lk201.el +lib/mule/19.28/lisp/term/news.el +lib/mule/19.28/lisp/term/news.elc +lib/mule/19.28/lisp/term/sun-curs.el +lib/mule/19.28/lisp/term/sun-fns.el +lib/mule/19.28/lisp/term/sun-mouse.el +lib/mule/19.28/lisp/term/sun-mouse.elc +lib/mule/19.28/lisp/term/sun.el +lib/mule/19.28/lisp/term/sun.elc +lib/mule/19.28/lisp/term/sup-mouse.el +lib/mule/19.28/lisp/term/sup-mouse.elc +lib/mule/19.28/lisp/term/tvi970.el +lib/mule/19.28/lisp/term/tvi970.elc +lib/mule/19.28/lisp/term/vt100-led.el +lib/mule/19.28/lisp/term/vt100-led.elc +lib/mule/19.28/lisp/term/vt100.el +lib/mule/19.28/lisp/term/vt100.elc +lib/mule/19.28/lisp/term/vt102.el +lib/mule/19.28/lisp/term/vt125.el +lib/mule/19.28/lisp/term/vt200.el +lib/mule/19.28/lisp/term/vt200.elc +lib/mule/19.28/lisp/term/vt201.el +lib/mule/19.28/lisp/term/vt220.el +lib/mule/19.28/lisp/term/vt240.el +lib/mule/19.28/lisp/term/vt300.el +lib/mule/19.28/lisp/term/vt320.el +lib/mule/19.28/lisp/term/vt400.el +lib/mule/19.28/lisp/term/vt420.el +lib/mule/19.28/lisp/term/wyse50.el +lib/mule/19.28/lisp/term/wyse50.elc +lib/mule/19.28/lisp/term/x-win.el +lib/mule/19.28/lisp/term/x-win.elc +lib/mule/19.28/lisp/terminal.el +lib/mule/19.28/lisp/terminal.elc +lib/mule/19.28/lisp/tex-mode.el +lib/mule/19.28/lisp/tex-mode.elc +lib/mule/19.28/lisp/texinfmt.el +lib/mule/19.28/lisp/texinfmt.elc +lib/mule/19.28/lisp/texinfo.el +lib/mule/19.28/lisp/texinfo.elc +lib/mule/19.28/lisp/texnfo-upd.el +lib/mule/19.28/lisp/texnfo-upd.elc +lib/mule/19.28/lisp/text-mode.el +lib/mule/19.28/lisp/text-mode.elc +lib/mule/19.28/lisp/thai.el +lib/mule/19.28/lisp/thai.elc +lib/mule/19.28/lisp/thingatpt.el +lib/mule/19.28/lisp/thingatpt.elc +lib/mule/19.28/lisp/time-stamp.el +lib/mule/19.28/lisp/time-stamp.elc +lib/mule/19.28/lisp/time.el +lib/mule/19.28/lisp/time.elc +lib/mule/19.28/lisp/timer.el +lib/mule/19.28/lisp/timer.elc +lib/mule/19.28/lisp/timezone.el +lib/mule/19.28/lisp/timezone.elc +lib/mule/19.28/lisp/tpu-doc.el +lib/mule/19.28/lisp/tpu-edt.el +lib/mule/19.28/lisp/tpu-edt.elc +lib/mule/19.28/lisp/tpu-extras.el +lib/mule/19.28/lisp/tpu-extras.elc +lib/mule/19.28/lisp/tpu-mapper.el +lib/mule/19.28/lisp/tpu-mapper.elc +lib/mule/19.28/lisp/tq.el +lib/mule/19.28/lisp/tq.elc +lib/mule/19.28/lisp/trace.el +lib/mule/19.28/lisp/trace.elc +lib/mule/19.28/lisp/trex.el +lib/mule/19.28/lisp/trex.elc +lib/mule/19.28/lisp/two-column.el +lib/mule/19.28/lisp/two-column.elc +lib/mule/19.28/lisp/uncompress.el +lib/mule/19.28/lisp/uncompress.elc +lib/mule/19.28/lisp/underline.el +lib/mule/19.28/lisp/underline.elc +lib/mule/19.28/lisp/undigest.el +lib/mule/19.28/lisp/undigest.elc +lib/mule/19.28/lisp/unrmail.el +lib/mule/19.28/lisp/unrmail.elc +lib/mule/19.28/lisp/unused.el +lib/mule/19.28/lisp/unused.elc +lib/mule/19.28/lisp/upd-copyr.el +lib/mule/19.28/lisp/upd-copyr.elc +lib/mule/19.28/lisp/userlock.el +lib/mule/19.28/lisp/userlock.elc +lib/mule/19.28/lisp/vc-hooks.el +lib/mule/19.28/lisp/vc-hooks.elc +lib/mule/19.28/lisp/vc.el +lib/mule/19.28/lisp/vc.elc +lib/mule/19.28/lisp/version.el +lib/mule/19.28/lisp/vi.el +lib/mule/19.28/lisp/vi.elc +lib/mule/19.28/lisp/viet.el +lib/mule/19.28/lisp/viet.elc +lib/mule/19.28/lisp/view.el +lib/mule/19.28/lisp/view.elc +lib/mule/19.28/lisp/vip.el +lib/mule/19.28/lisp/vip.elc +lib/mule/19.28/lisp/visual.el +lib/mule/19.28/lisp/visual.elc +lib/mule/19.28/lisp/vms-patch.el +lib/mule/19.28/lisp/vms-patch.elc +lib/mule/19.28/lisp/vms-pmail.el +lib/mule/19.28/lisp/vms-pmail.elc +lib/mule/19.28/lisp/vmsproc.el +lib/mule/19.28/lisp/vmsproc.elc +lib/mule/19.28/lisp/vmsx.el +lib/mule/19.28/lisp/vmsx.elc +lib/mule/19.28/lisp/vt-control.el +lib/mule/19.28/lisp/vt100-led.el +lib/mule/19.28/lisp/vt100-led.elc +lib/mule/19.28/lisp/window.el +lib/mule/19.28/lisp/window.elc +lib/mule/19.28/lisp/wnn-client.el +lib/mule/19.28/lisp/wnn-egg.el +lib/mule/19.28/lisp/wnn-egg.elc +lib/mule/19.28/lisp/ws-mode.el +lib/mule/19.28/lisp/ws-mode.elc +lib/mule/19.28/lisp/x-menu.el +lib/mule/19.28/lisp/x-menu.elc +lib/mule/19.28/lisp/xscheme.el +lib/mule/19.28/lisp/xscheme.elc +lib/mule/19.28/lisp/yow.el +lib/mule/19.28/lisp/yow.elc +@comment f=%D/lib/mule/lock ; [ ! -d $f ] && mkdir $f && chmod 1777 $f +@exec f=%D/lib/mule/lock ; [ ! -d $f ] && mkdir $f +@unexec f=%D/lib/mule/lock ; [ -d $f ] && rm -rf $f +@exec f=%D/lib/mule/site-lisp ; [ ! -d $f ] && mkdir $f +@unexec f=%D/lib/mule/site-lisp ; [ -d $f ] && rmdir $f +@dirrm lib/mule/19.28/lisp/its +@dirrm lib/mule/19.28/lisp/quail +@dirrm lib/mule/19.28/lisp/term +@dirrm lib/mule/19.28/lisp +@dirrm lib/mule/19.28/etc +@dirrm lib/mule/19.28/${MACHINE_ARCH}--netbsd +@dirrm lib/mule/19.28 +@dirrm lib/mule -- cgit v1.2.3