This commit was generated by cvs2svn to compensate for changes in r7525,
authortomo <tomo>
Thu, 30 Oct 2003 11:29:37 +0000 (11:29 +0000)
committertomo <tomo>
Thu, 30 Oct 2003 11:29:37 +0000 (11:29 +0000)
which included commits to RCS files with non-trunk default branches.

46 files changed:
INSTALL
PROBLEMS
configure.usage
dynodump/_dynodump.h
dynodump/dynodump.c
dynodump/i386/_relocate.c
dynodump/i386/machdep.h
dynodump/ppc/_relocate.c
dynodump/ppc/machdep.h
dynodump/sparc/_relocate.c
dynodump/sparc/machdep.h
dynodump/syms.c
etc/BETA
lib-src/ChangeLog
lib-src/rcs2log
lisp/byte-optimize.el
lisp/info.el
lisp/ldap.el
lisp/simple.el
lisp/text-props.el
lwlib/ChangeLog
lwlib/lwlib-Xm.c
lwlib/xlwmenu.c
man/ChangeLog
man/info.texi
man/lispref/backups.texi
man/texinfo.texi
man/widget.texi
man/xemacs-faq.texi
man/xemacs/frame.texi
man/xemacs/packages.texi
nt/ChangeLog
src/EmacsFrame.c
src/EmacsFrameP.h
src/EmacsManager.c
src/EmacsShell-sub.c
src/dynarr.c
src/emodules.c
src/frame-msw.c
src/process-unix.c
src/s/linux.h
src/sysdll.c
src/unexsol2.c
src/xintrinsicp.h
tests/ChangeLog
version.sh

diff --git a/INSTALL b/INSTALL
index 3cbcd98..9a3581d 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -50,13 +50,18 @@ necessary for building packages, and we may move to it for the core.
 ADD-ON LIBRARIES
 ================
 
-Decide on what other software packages you would like to use with
-XEmacs, but are not yet available on your system.  On some systems,
-Motif and CDE are optional additions.  On Solaris, the SUNWaudmo
-package enables native sound support.  There are also a number of free
-software packages that XEmacs can use.  If these are not yet available
-on your system, obtain, build and install those external packages
-before building XEmacs.  The packages XEmacs can use are:
+Decide which libraries you would like to use with XEmacs, but are not
+yet available on your system.  On some systems, X11, Motif and CDE are
+optional additions.  On MacOS/X systems, you may download X11R6 for
+Mac OS X from http://www.apple.com/macosx/x11/download/.  You need
+both the runtime libraries and the SDK (in a sidebar of that page at
+the time of writing).  There is also a 3rd-party implementation of
+X11R6 for the Mac at http://www.xdarwin.org/.  On Solaris, the
+SUNWaudmo package enables native sound support.  There are also a
+number of free software applications that XEmacs can use.  If these
+are not yet available on your system, obtain, build and install those
+external libraries before building XEmacs.  The libraries XEmacs can
+use are:
 
    Xaw3d, XPM, JPEG, compface, PNG, zlib, GNU DBM, Berkeley DB, socks,
    term, NAS, Canna, Kinput2, SJ3, Wnn.
@@ -70,12 +75,19 @@ libraries are statically linked.
 
 Use the --site-includes and --site-libraries options when building
 XEmacs to allow configure to find the external software packages.
-If you link with dynamic (``.so'') external package libraries, which
-is not recommended, you will also need to add the library directories
-to the --site-runtime-libraries option. For your convenience these can
-be set together by using the --with-site-prefix command. This will set
-these variables as needed assuming your libraries are organised as a
-typical /usr tree.
+Note that for X11 includes, you should put the files in the X11
+subdirectory of the --site-includes directory.  Eg, XEmacs sources
+#include <X11/xpm.h>.  In that case, you should omit the trailing
+"/X11" from --site-includes, or the trailing "/includes/X11" from
+--site-prefixes.  The latter is convenient if your libraries are
+installed under "includes/../lib".  The directories specified with
+--site-includes or --site-libraries take precedence over those
+specified with --site-prefixes, and those take precedence over the
+standard search paths.
+
+If you link with dynamic (``.so'') external package libraries, you
+will also need to add the runtime library directories to the
+--site-runtime-libraries option.
 
 PACKAGE SYSTEM
 ==============
@@ -209,18 +221,39 @@ Motif menubar. (In fact, the Motif menubar is currently broken.)  If
 `no' is specified then support for menubars will not be compiled in.
 
 The `--with-scrollbars=TYPE' option allows you to specify which X
-toolkit you wish to use for the scrollbars.  The valid options are
-`lucid', `motif', `athena', `athena3d', and `no'.  The default is
-`lucid' which is a Motif-lookalike scrollbar.  If `no' is specified
-then support for scrollbars will not be compiled in.
+toolkit you wish to use for the scrollbars.
 
 The `--with-dialogs=TYPE' option allows you to specify which X toolkit
-you wish to use for the dialog boxes.  The valid options are `athena',
-`athena3d', `motif, and `no.  The `lucid' option is accepted and will
-result in the `athena' toolkit being used.  If the Motif toolkit can be
-found the default is `motif'.  Otherwise, the default is `athena'.  If
-`no' is specified then support for dialog boxes will not be compiled
-in.
+you wish to use for the dialog boxes.
+
+The `--with-widgets=TYPE' option allows you to specify which X toolkit
+you wish to use for native widgets.
+
+    The valid options for TYPE in the `--with-scrollbars',
+    `--with-dialogs', and `--with-widgets' options are `lucid',
+    `motif', `athena', `msw', `gtk', and `no'.  The `gtk' and `msw'
+    options are only available on the GTK and MS Windows platforms,
+    respectively.  When available, `gtk' or `msw' and `no' are the
+    only options.  Otherwise, for dialogs and widgets, if the Motif
+    toolkit can be found the default is `motif'.  If not, the default
+    is `athena'.  `lucid' is an alias for `athena'.  If `no' is
+    specified then support for these GUI components will not be
+    compiled in.
+
+    For scrollbars, the default is `lucid' which is a Motif-lookalike
+    scrollbar.  Otherwise, if the Motif toolkit can be found the
+    default is `motif'.  If not, the default is `athena'.  If `no' is
+    specified then support for scrollbars will not be compiled in.
+
+    If `athena' (or `lucid', for dialogs and widgets) is specified for
+    any component (even by default), the type of Athena library must
+    be specified using the following option if more than one is
+    available.  It is not always possible to distinguish them, and
+    mixing and matching Athena libraries will result in crashes.
+
+The `--with-athena=TYPE' option specifies the kind of Athena library
+being used.  Valid values include `xaw', `3d', `xpm', `95', and `next'.
+There is no default.
 
 The `--with-toolbars' option allows you to enable or disable toolbar
 support.  The default is `yes' as long as support for a windowing
@@ -308,10 +341,11 @@ version of malloc.  Debug Malloc is not included with XEmacs, is
 intended for use only by the developers and may be obtained from
 <URL:http://www.letters.com/dmalloc/>.
 
-The `--debug' and `--error-checking' options are intended for use only
-by the developers.  `--debug' adds code to be compiled in for
-performing various tests.  `--error-checking' adds additional tests to
-many of the commonly used macros.
+The `--debug' and `--error-checking' options are primarily useful to the
+developers.  `--debug' incorporates code for performing various tests,
+but does not impose a speed penalty.  `--error-checking' adds additional
+tests to many of the commonly used macros, and imposes a speed penalty.
+Neither is especially useful in most common debugging situations.
 
 The `--verbose' and `--extra-verbose' options are intended for use
 only by the developers.  `--verbose' causes the results of all
@@ -321,10 +355,15 @@ determining configure failures is the file `config.log', which
 contains the results of the compile and link tests used by configure.
 
 The `--with-mule' option enables (MUlti-Lingual Emacs) support, needed
-to support non-Latin-1 (including Asian) languages.  The Mule support
-is not yet as stable or efficient as the `Latin1' support.   Enabling
-Mule support requires the mule-base package installed prior to
-building XEmacs.  The following options require Mule support:
+to support non-Latin-1 (including Asian) languages.  Mule support is
+required for Asian language and Unicode (multibyte and wide character)
+support.  With the advent of the Euro and European Community
+expansion, Mule support is also recommended for Western Europeans.
+Enabling Mule support requires the mule-base package installed prior
+to building XEmacs.  The mule-ucs package is required for Unicode
+support (but may be added at any time).  For Europeans using Latin
+alphabets, and for support for the Euro symbol, the latin-unity
+package is recommended.  The following options require Mule support:
 
 The `--with-xim' option enables use of the X11 XIM mechanism to allow
 an input method to input text into XEmacs.  The input method is shared
@@ -663,6 +702,15 @@ when running make in the subdirectories.
 Using GNU Make allows for simultaneous builds with and without the
 --srcdir option.
 
+STRIPPING BINARIES
+==================
+
+This saves nothing but a small (by modern standards) amount of disk
+space; the symbol table is not loaded into memory at execution time.
+If you do encounter a crash or other serious bug, the first thing the
+developers will do is ask you to build an XEmacs with a full symbol
+table, anyway.  Don't strip the XEmacs binary.
+
 MAIL-LOCKING POST-INSTALLATION
 ==============================
 
index 5ef0d6a..30df425 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -59,6 +59,11 @@ library, you only need the shared library.  To compile objects that
 link with it, you need the headers---and distros don't provide them with
 the libraries.  You need the additional "development" package, too.
 
+If you have installed it yourself in a non-system location, you may also
+need to specify --site-includes, --site-libraries, or --site-prefixes.
+Note that many packages, especially X11, expect to find includes in a
+subdirectory.  Eg, XEmacs #includes <X11/xpm.h>, not <xpm.h>.  See INSTALL.
+
 *** Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
 without also using `-fno-schedule-insns'.
 
index 4dce260..dc9e691 100644 (file)
@@ -15,8 +15,8 @@ Conventions for options:
   useful default.  Denoted `(Enum)'.
 - Set options accept one or more types from a list of implementations of the
   feature.  All specified implementations will be included.  Prefix a type
-  with `no' to disable only that implementation (e.g., `--with-sound=noesd'
-  to disable ESD).  The special values `none' and `all' must be first in the
+  with `no' to disable only that implementation (e.g., `--with-sound=nonas'
+  to disable NAS).  The special values `none' and `all' must be first in the
   list if used.  They change the defaults for all types individually from
   autodetect to `no' or `yes' respectively.  `--with-sound=none,native' and
   `--with-sound=noesd,nonas,native' have the same effect.  Denoted `(Set)'.
index 847c4eb..c09bd7f 100644 (file)
@@ -32,7 +32,7 @@
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: _dynodump.h,v 1.3 1997/05/29 04:22:29 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: _dynodump.h,v 1.5 1996/05/23 18:39:07 georgn Exp $ - SMI"
 
 #ifndef        _DYNODUMP_DOT_H
 #define        _DYNODUMP_DOT_H
index b7090ca..b39f93b 100644 (file)
@@ -73,7 +73,7 @@
  * N.B. The above commentary is not quite correct in the flags have been hardwired
  *      to RTLD_SAVREL.
  */
-#pragma ident  "@(#) $Id: dynodump.c,v 1.8 2001/04/12 18:20:43 michaels Exp $ - SMI"
+#pragma ident  "@(#) $Id: dynodump.c,v 1.6.2.2 2000/09/20 02:39:17 martinb Exp $ - SMI"
 
 #define __EXTENSIONS__ 1
 
index f97dd1b..d3ec59c 100644 (file)
@@ -32,7 +32,7 @@
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: _relocate.c,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: _relocate.c,v 1.4 1995/06/26 20:12:41 georgn Exp $ - SMI"
 
 /* LINTLIBRARY */
 
index 4dc66fe..c90e29c 100644 (file)
@@ -32,7 +32,7 @@
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:02 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: machdep.h,v 1.2 1995/02/16 22:58:43 georgn Exp $ - SMI"
 
 /*
  * Global include file for all sgs Intel machine dependent macros, constants
index 754b417..feb5ca9 100644 (file)
@@ -32,7 +32,7 @@
  * Mountain View, California 94043
  */
 
-#pragma ident "@(#) $Id: _relocate.c,v 1.4 1998/03/31 20:10:55 steve Exp $ - SMI"
+#pragma ident "@(#) $Id: _relocate.c,v 1.3 1995/06/26 20:16:39 georgn Exp $ - SMI"
 
 /* LINTLIBRARY */
 
index a649a9c..2a3d1e6 100644 (file)
@@ -32,7 +32,7 @@
  * Mountain View, California 94043
  */
 
-#pragma ident "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:20 steve Exp $ - SMI"
+#pragma ident "@(#) $Id: machdep.h,v 1.2 1995/02/16 22:58:49 georgn Exp $ - SMI"
 
 /*
  * Global include file for all sgs PowerPC machine dependent macros, constants
index 14466f0..10b0fda 100644 (file)
@@ -35,7 +35,7 @@
 /*
  * Update the value of the `_edata' and `_end' symbols.
  */
-#pragma ident  "@(#) $Id: _relocate.c,v 1.4 1998/03/31 20:10:55 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: _relocate.c,v 1.4 1995/06/26 20:13:26 georgn Exp $ - SMI"
 
 #include       <libelf.h>
 #include       <string.h>
index b4b76d8..972081e 100644 (file)
@@ -32,7 +32,7 @@
  * Mountain View, California 94043
  */
 
-#pragma ident  "@(#) $Id: machdep.h,v 1.3 1997/05/29 04:23:26 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: machdep.h,v 1.2 1995/02/16 22:58:55 georgn Exp $ - SMI"
 
 /*
  * Global include file for all sgs SPARC machine dependent macros, constants
index 0ac5cb8..c060f33 100644 (file)
@@ -35,7 +35,7 @@
 /*
  * Update the value of the `_edata' and `_end' symbols.
  */
-#pragma ident  "@(#) $Id: syms.c,v 1.3 1997/05/29 04:22:30 steve Exp $ - SMI"
+#pragma ident  "@(#) $Id: syms.c,v 1.2 1995/03/06 22:39:22 georgn Exp $ - SMI"
 
 #include       <libelf.h>
 #include       <string.h>
index 3670938..bc85993 100644 (file)
--- a/etc/BETA
+++ b/etc/BETA
@@ -5,7 +5,8 @@
 
 You are running a potentially unstable version of XEmacs.  Please do
 not report problems with Beta XEmacs to comp.emacs.xemacs.  Report
-them to xemacs-beta@xemacs.org.
+them to <xemacs-beta@xemacs.org>, preferably with 
+'M-x report-xemacs-bug RET'. 
 
 ** Mailing Lists
 ================
@@ -44,12 +45,12 @@ or whole modules, or reimplementation of existing functions, to XEmacs.
 In the descriptions below, the word LIST (all uppercase) is a
 variable.  Substitute "beta", "design", or "patches" as appropriate
 (to get "xemacs-beta" as the mailbox for the XEmacs Beta mailing list,
-or http://www.xemacs.org/Lists/#xemacs-beta for its URL).
+or <http://www.xemacs.org/Lists/#xemacs-beta> for its URL).
 
 The XEmacs mailing lists are managed by the Mailman mailing list
 package, and the usual Mailman commands work.  Do not send mailing
-list requests to the main address (xemacs-LIST@xemacs.org), always
-send them to xemacs-LIST-request@xemacs.org.  If you have problems
+list requests to the main address (<xemacs-LIST@xemacs.org>), always
+send them to <xemacs-LIST-request@xemacs.org>.  If you have problems
 with the list itself, they should be brought to the attention of the
 XEmacs Mailing List manager <list-manager@xemacs.org> (the same
 mailbox, "list-manager", for all lists).  All public mailing lists
@@ -65,37 +66,48 @@ Mailman software; it is NOT a synonym for xemacs-LIST-request.
 
 Subscription, unsubscription, and options (such as digests and
 temporarily suspending delivery) can be accomplished via the web
-interface at http://www.xemacs.org/Lists/#xemacs-LIST.
+interface at <http://www.xemacs.org/Lists/#xemacs-LIST>.
 
 *** Subscribing by e-mail
 -------------------------
 
-Send an email message to xemacs-LIST-request@xemacs.org with
+Send an email message to <xemacs-LIST-request@xemacs.org> with
 `subscribe' (without the quotes) as the BODY of the message.
 
 *** Unsubscribing by e-mail
 ---------------------------
 
-Send an email message to xemacs-LIST-request@xemacs.org with
+Send an email message to <xemacs-LIST-request@xemacs.org> with
 `unsubscribe' (without the quotes) as the BODY of the message.
 
 ** Beta Release Schedule
 ========================
 
-Betas are now released rather sporadically.  We would like to achieve
-a weekly release schedule, but personnel availability does not
-permit.  For access to the most recent code, use CVS (see
-http://www.xemacs.org/Develop/cvsaccess.html for more information).
-If you have need for FTP access, please let us know.  It will make it
-more likely that we release betas more often.
+We would like to achieve a weekly or fortnightly release cycle (you
+know the Open Source model: release early, release often), and in a
+perfect world that would indeed be the case.  There are at least three
+things that often get in the way of that goal: 1) The Release Manager
+has a life outside of XEmacs (hard to believe, I know, but true), 
+2) we like to make releases that will build (at least on the Release
+Manager's box), and 3) Murphy likes to throw a spanner in the works
+right when you least expect it (Murphy's Law: Whatever can go wrong,
+will go wrong).
+
+If you'd like to keep right up to date and ride the bleeding edge, use
+CVS (see <http://www.xemacs.org/Develop/cvsaccess.html>).  If you
+can't use CVS for some reason and must use FTP, please let us know.
+it will make it more likely that we release betas more often.
+
 
 ** Reporting Problems
 =====================
 
 The best way to get problems fixed in XEmacs is to submit good problem
-reports.  Since this is beta software, problems are certain to exist.
-Please read through all of part II of the XEmacs FAQ for an overview
-of problem reporting.  Other items which are most important are:
+reports, 'M-x report-xemacs-bug RET' will help you do this (assuming
+you have a usable XEmacs).  Since this is beta software, problems are
+certain to exist.  Please read through all of part II of the XEmacs
+FAQ for an overview of problem reporting.  Other items which are most
+important are:
 
 1.  Do not submit C stack backtraces without line numbers.  Since it
     is possible to compile optimized with debug information with GCC
@@ -106,16 +118,16 @@ of problem reporting.  Other items which are most important are:
     problem is actually occurring.
  
 2.  Attempt to recreate the problem starting with an invocation of
-    XEmacs with `xemacs -q -no-site-file -no-autoloads'.  Quite often,
-    problems are due to package interdependencies, and the like.  An
-    actual bug in XEmacs should be reproducible in a default
-    configuration without loading any special packages (or the one or
-    two specific packages that cause the bug to appear).  If you have
-    trouble getting anything to work at all with the above invocation,
-    use `xemacs -q -no-site-file' instead.  If you need to load your
-    user init file or the site file to get the problem to occur, then
-    it has something to do with them, and you should try to isolate
-    the issue in those files.
+    XEmacs with `xemacs -no-autoloads'.  Quite often, problems are
+    due to package interdependencies, and the like.  An actual bug
+    in XEmacs should be reproducible in a default configuration
+    without loading any special packages (or the one or two specific
+    packages that cause the bug to appear).  If you have trouble
+    getting anything to work at all with the above invocation, use
+    `xemacs -vanilla' instead.  If you need to load your user init
+    file or the site file to get the problem to occur, then it has
+    something to do with them, and you should try to isolate the
+    issue in those files.
 
 3.  A picture can be worth a thousand words.  When reporting an
     unusual display, it is generally best to capture the problem in a
@@ -139,15 +151,15 @@ available via CVS.  Please see
 ** Building an XEmacs from patches
 ==================================
 
-All beta releases of XEmacs are included with patches from the
-previous version in an attempt to keep bandwidth requirements down.
-Patches should be applied with the GNU patch program in something like
-the following.  Let's say you're upgrading XEmacs 20.15-beta10 to
-XEmacs 20.15-beta11 and you have a full unmodified XEmacs 20.15-beta10
-source tree to work with.  Cd to the top level directory and issue the
+All beta releases of XEmacs are included with patches from the previous
+version in an attempt to keep bandwidth requirements down.  Patches
+should be applied with the GNU patch program in something like the
+following.  Let's say you're upgrading XEmacs 21.5-beta9 to XEmacs
+21.5-beta10 and you have a full unmodified XEmacs 21.5-beta9 source
+tree to work with.  Change to the top level directory and issue the
 shell command:
 
-$ gunzip -c /tmp/xemacs-20.15-b10-20.15-b11.patch.gz | patch -p1
+$ gunzip -c /tmp/xemacs-21.5.9-21.5.10.patch.gz | patch -p1
 
 After patching, check to see that no patches were missed by doing
 $ find . -name \*.rej -print
@@ -158,10 +170,11 @@ before building XEmacs.
 After seeing that there were no rejections, issue the commands
 
 $ ./config.status --recheck
-$ make beta
+$ make beta > ./beta.err 2>&1
+$ make check > ./xemacs-make-check.err 2>&1
 
-and go play minesweep for a while on an older XEmacs while the binary
-is rebuilt.
+Redirect the output from make to those files because you'll use them
+later when you send off a build report with 'M-x build-report RET'
 
 ** Building XEmacs from a full distribution
 ===========================================
@@ -169,72 +182,98 @@ is rebuilt.
 Locate a convenient place where you have at least 100MB of free space
 and issue the command
 
-$ gunzip -c /tmp/xemacs-20.15-b11.tar.gz | tar xvf -
+$ gunzip -c /tmp/xemacs-21.5.10.tar.gz | tar xvf -
 
-(or simply `tar zxvf /tmp/xemacs-20.15-b11.tar.gz' if you use GNU tar).
+(or simply `tar zxvf /tmp/xemacs-21.5.10.tar.gz' if you use GNU tar).
 
 cd to the top level directory and issue an appropriate configure
 command.  One maintainer uses the following at the time of this
 writing:
 
 ./configure \
-       --cflags="-mpentium -march=pentium -O6 -g -fno-peep-spills" \
-       --error-checking=all --debug=yes \
-       --with-scrollbars=athena3d --with-dialogs=athena3d \
-       --with-mule --with-xfs --with-xim=xlib
-
-Part of the configure output is a summary that looks something like
-the following.  (In XEmacs 21.1 and later, this summary is also
-available as the file Installation in the top directory of your build
-tree, and via the command M-x describe-installation.)
-
-uname -a: Linux altair.xemacs.org 2.0.32 #2 Sun Nov 16 18:52:14 PST 1997 i586
-
-./configure  '--cflags=-mpentium -march=pentium -O6 -g -fno-peep-spills' '--error-checking=all' '--debug=yes' '--with-scrollbars=athena3d' '--with-dialogs=athena3d' '--with-mule' '--with-xfs' '--with-xim=xlib'
-
-
-XEmacs 21.0-b34 "Oberhasli-pre2" configured for `i586-pc-linux'.
-
-  Where should the build process find the source code?    /home/xemacs/xemacs-20.0
-  What installation prefix should install use?           /usr/local
-  What operating system and machine description files should XEmacs use?
-        `s/linux.h' and `m/intel386.h'
-  What compiler should XEmacs be built with?              gcc -mpentium -march=pentium -O6 -g -fno-peep-spills
-  Should XEmacs use the GNU version of malloc?            yes
-  (Using Doug Lea's new malloc from the GNU C Library.)
-  Should XEmacs use the relocating allocator for buffers? yes
-  What window system should XEmacs use?                   x11
-  Where do we find X Windows header files?                /usr/X11/include
-  Where do we find X Windows libraries?                   /usr/X11/lib
-  Compiling in support for XAUTH.
-  Compiling in support for XPM images.
-  Compiling in support for X-Face message headers.
-  Compiling in support for GIF image conversion.
-  Compiling in support for JPEG image conversion.
-  Compiling in support for PNG image conversion.
-  Compiling in support for TIFF image conversion.
-  Compiling in native sound support.
-  Compiling in support for Berkeley DB.
-  Compiling in support for GNU DBM.
+       --extra-verbose \
+       --site-prefixes=/usr/local/pgsql:/usr/local/BerkeleyDB.4.1 \
+       --dynamic=yes --with-gtk=no --with-gnome=no --with-toolbars \
+       --with-wmcommand --with-athena=next --with-menubars=lucid \
+       --with-scrollbars=athena --with-dialogs=athena --with-widgets=athena \
+       --with-gif --with-sound=native,noesd --with-site-lisp=no \
+       --with-site-modules --pdump --with-mule --with-xfs --debug \
+       --error-checking=all --memory-usage-stats --use-kkcc \
+       --with-clash-detection
+
+Part of the configure output is a summary that looks something
+like the following.  (this summary is also available as the file
+'Installation' in the top directory of your build tree, and via
+the command 'M-x describe-installation RET').
+
+uname -a: Linux eicq 2.4.20 #1 Wed Dec 18 02:14:29 EST 2002 i586 unknown
+
+./configure  '--extra-verbose' '--site-prefixes=/usr/local/pgsql:/usr/local/BerkeleyDB.4.1' '--dynamic=yes' '--with-gtk=no' '--with-gnome=no' '--with-toolbars' '--with-wmcommand' '--with-athena=next' '--with-menubars=lucid' '--with-scrollbars=athena' '--with-dialogs=athena' '--with-widgets=athena' '--with-gif' '--with-sound=native,noesd' '--with-site-lisp=no' '--with-site-modules' '--pdump' '--with-mule' '--with-xfs' '--debug' '--error-checking=all' '--memory-usage-stats' '--use-kkcc' '--with-clash-detection'
+
+
+XEmacs 21.5-b10 "burdock" (+CVS-20030131) configured for `i586-pc-linux'.
+
+
+Compilation / Installation:
+  Source code location:              /usr/local/src/xemacs
+  Installation prefix:               /usr/local
+  Additional prefixes:               /usr/local/pgsql /usr/local/BerkeleyDB.4.1
+  Operating system description file: `s/linux.h'
+  Machine description file:          `m/intel386.h'
+  Compiler:                          gcc -Wall -Wno-switch -Winline -Wmissing-prototypes -Wsign-compare -Wundef -Wstrict-prototypes -Wshadow -Wmissing-declarations -O1 -ggdb3 -Wall -Wchar-subscripts -Wunused -Wundef -Wshadow -Wsign-compare -Wmissing-declarations -march=k6
+  Relocating allocator for buffers:  no
+  GNU version of malloc:             yes
+    - Using Doug Lea's new malloc from the GNU C Library.
+
+Window System:
+  Compiling in support for the X window system:
+    - X Windows headers location:                 /usr/X11/include
+    - X Windows libraries location:               /usr/X11/lib
+    - Handling WM_COMMAND properly.
+  Compiling in support for the Athena widget set:
+    - Athena headers location:                    X11/neXtaw
+    - Athena library to link:                     neXtaw
+  Using Lucid menubars.
+  Using Athena scrollbars.
+  Using Athena dialog boxes.
+  Using Athena native widgets.
+
+TTY:
   Compiling in support for ncurses.
   Compiling in support for GPM (General Purpose Mouse).
-  Compiling in Mule (multi-lingual) support.
-  Compiling in XIM (X11R5+ I18N input method) support.
-    Using raw Xlib to provide XIM support.
-    Using XFontSet to provide bilingual menubar.
-  Compiling in support for Canna on Mule.
-  Compiling in support for the WNN input method on Mule.
-    Using WNN version 6.
-  Compiling in support for OffiX.
-  Compiling in support for proper session-management.
-  Using Lucid menubars.
-  Using Athena-3d scrollbars.
-  Using Athena-3d dialog boxes.
-  Compiling in DLL support.
-  movemail will use "dot-locking" for locking mail spool files.
-  Using Lisp_Objects with minimal tagbits.
-  Compiling in extra code for debugging.
-  Compiling in code for checking XEmacs memory usage.
+
+Images:
+  Compiling in support for GIF  images (builtin).
+  Compiling in support for XPM  images.
+  Compiling in support for PNG  images.
+  Compiling in support for JPEG images.
+  Compiling in support for TIFF images.
+  Compiling in support for X-Face message headers.
+
+Sound:
+  Compiling in support for sound (native).
+
+Databases:
+  Compiling in support for Berkeley database.
+  Compiling in support for PostgreSQL.
+    - Using PostgreSQL header file:  libpq-fe.h
+    - Using PostgreSQL V7 bindings.
+
+Internationalization:
+  Compiling in support for Mule (multi-lingual Emacs).
+  Compiling in support for XIM (X11R5+ I18N input method).
+    - Using raw Xlib to provide XIM support.
+    - Using XFontSet to provide bilingual menubar.
+
+Mail:
+  Compiling in support for "dot-locking" mail spool file locking method.
+
+Other Features:
+  Inhibiting IPv6 canonicalization at startup.
+  Compiling in support for dynamic shared object modules.
+  Using the new GC algorithms.
+  Using the new portable dumper.
+  Compiling in support for extra debugging code.
   WARNING: ---------------------------------------------------------
   WARNING: Compiling in support for runtime error checking.
   WARNING: XEmacs will run noticeably more slowly as a result.
@@ -243,19 +282,24 @@ XEmacs 21.0-b34 "Oberhasli-pre2" configured for `i586-pc-linux'.
 
 
 
-Then type `make' and you should have a working XEmacs.
+Then...
+
+$ make > ./beta.err 2>&1
+$ make check > ./xemacs-make-check.err 2>&1
+
+...and you should have a working XEmacs.
 
 After you have verified that you have a functional editor, fire up
 your favorite mail program and send a build report to
-xemacs-build-reports@xemacs.org.
+<xemacs-buildreports@xemacs.org>.
 
-Preferrably this is done from XEmacs, following these simple steps:
+Preferably this is best done from XEmacs, following these simple steps:
 
 M-x customize-group RET build-report RET
 M-x build-report RET
 
 See also
-http://www.xemacs.org/Releases/Public-21.2/tester.html#reporting
+<http://www.xemacs.org/Releases/Public-21.2/tester.html#reporting>
 
 If you create the report manually by other means, here is what the
 build report should include:
@@ -292,7 +336,7 @@ Manual) and on Packaging (in the Lisp Reference).
 
 When bootstrapping XEmacs, you may need to manually install some
 packages (at least xemacs-base and efs).  These packages are available
-by FTP at ftp://ftp.xemacs.org/pub/xemacs/packages/.
+by FTP at <ftp://ftp.xemacs.org/pub/xemacs/packages/>.
 
 ** Binary package installation
 ==============================
@@ -315,59 +359,60 @@ groups) must be kept in synch.  Assuming one is manipulating a
 directory called `lisp-utils', the command to rebuild the
 auto-autoloads.el file is:
 
-xemacs -vanilla -batch -l autoload -f batch-update-directory lisp-utils
+xemacs -vanilla -batch \
+  -eval \("setq autoload-package-name \"lisp-utils\""\) \
+  -f batch-update-directory lisp-utils
 
 The command to rebuild the custom-load.el file is:
 
-xemacs -vanilla -batch -l cus-dep -f Custom-make-dependencies lisp-utils
+xemacs -vanilla -batch -f Custom-make-dependencies lisp-utils
 
-To bytecompile both of these files the command is:
+To byte-compile both of these files the command is:
 
 xemacs -vanilla -batch -f batch-byte-compile \
        lisp-utils/auto-autoloads.el lisp-utils/custom-load.el
 
+Of course, being a beta tester, you'd be aware that it is much easier
+to manage your XEmacs packages with PUI.
+
 ** Building XEmacs and XEmacs packages from scratch
 ===================================================
 
-To build everything completely from scratch (not a high priority as a
-design goal), the following procedure should work.  (I don't recommend
-building this way).
-
-*** Phase 1 -- Get a minimal XEmacs binary with mule to build the package
-    lisp with.
-
-**** Grab a mule-base tarball and install it into a newly created package
-     directory.
+To build everything completely from scratch isn't hard, just time
+consuming. 
 
-**** Configure XEmacs with mule and a package-path including the
-     directory created above.
+*** Step 1 - grab the sources (core and packages)
 
-**** Do a `make dist' to build an XEmacs binary.
+$ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs login
+ [password: "cvs" (sans quotes)]
 
-*** Phase 2 -- Build and install the package lisp.
+$ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs co -d xemacs-21.5 xemacs
 
-**** Modify XEmacs.rules for local paths and the XEmacs binary created in 
-     Phase 1.
+$ cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs co packages
 
-**** Do a make from the top level package lisp source directory.[1]
+*** Step 2 - build XEmacs
 
-**** Do `make bindist's on all the packages you wish to install and
-     remove the byproduct .tar.gz's.
+$ cd xemacs-21.5
+$ ./configure [options...]
+$ make > ./beta.err 2>&1
+$ make check > ./xemacs-make-check.err 2>&1
 
-*** Phase 3 -- If necessary, redump XEmacs
-    with the packages that require dump-time support and install it.
+And optionally:
 
-**** Reconfigure without Mule if you don't wish a Mule-ish XEmacs, and
-     rebuild XEmacs.
+$ make install > ./xemacs-make-install.err 2>&1
 
-- or -
+*** Step 3 - build and install the packages
 
-**** rm lib-src/DOC src/xemacs; make
+$ cd packages
+$ cp Local.rules.template Local.rules
 
-**** Install or run in-place.
+Then edit Local.rules to suit your needs/environment
+see: (Info-goto-node "(xemacs)Local.rules file") for details about
+this file.
 
-Note that this is in essence what `make all-elc' has always done.
+And then:
 
+$ make install
 
 * Improving XEmacs
 =================
@@ -382,7 +427,7 @@ acknowledged and added to the distribution, or rejected with an
 explanation.  Progress of the patch is tracked on the XEmacs Patches
 mailing list, which is open subscription.  (If a patch is simply
 intended to facilitate discussion, "I mean something that works like
-this but this is really rough", a CC to XEmacs Patches is optional,
+this but this is really rough", a Cc to XEmacs Patches is optional,
 but doesn't hurt.)
 
 Patches to XEmacs Lisp packages should be sent to the maintainer of
@@ -432,12 +477,12 @@ Patches should be as single-minded as possible.  Mammoth patches can
 be very difficult to place into the right slot.  They are much easier
 to deal with when broken down into functional or conceptual chunks.
 The patches submitted by Kyle Jones and Hrvoje Niksic are stellar
-examples of how to Do The Right Thing.
+examples of how to "Do The Right Thing".
 
 Each patch should be accompanied by an update to the appropriate
 ChangeLog file.  Guidelines for writing ChangeLog entries is governed
 by the GNU coding standards.  Please see
-       http://www.gnu.org/prep/standards_toc.html   [Change Logs section]
+<http://www.gnu.org/prep/standards_toc.html>   [Change Logs section]
 for details.
 
 Do not submit context diffs (either -c or -u) of ChangeLogs.  Because
@@ -446,8 +491,8 @@ the top), context diffs will fail to apply more often than they
 succeed.  Simply cutting and pasting the entry from an Emacs buffer to
 the mail buffer (beware of tab expansion!) is probably easiest.  The
 Patcher library also will set up your ChangeLogs for you, and copy
-them to the mail.  Contextless unified diffs (-U 0) are also
-acceptable but perhaps more trouble than they are worth.
+them to the mail.  Context-less unified diffs (-U 0) are also
+acceptable.
 
 *** Patch discussion etiquette
 -------------------------------
@@ -457,7 +502,7 @@ post it to xemacs-patches, even if there are minor points you would
 like to have discussed by others.  Not doing so will resulting in
 patches getting "lost".  If you expect that the patch will not be
 acceptable, but are using it to stimulate discussion, then don't post
-to xemacs-patches.  Intermediate cases are up to your judgement;
+to xemacs-patches.  Intermediate cases are up to your judgment;
 unless you're sure you'll follow up with a "real" patch, better to err
 on the side of posting to xemacs-patches.
 
@@ -536,10 +581,10 @@ rapid acceptance of the package.
 
 For help in creating new packages, see the (rather sparse) discussions
 in the XEmacs User's Guide and the Lisp Reference Manual.  The XEmacs
-Package Release Engineer (Ville Skyttä <ville.skytta@xemacs.org> is
-currently serving with Peter Brown <rendhalver@users.sourceforge.net>
-assisting; Steve Youngs <youngs@xemacs.org> and Stephen Turnbull
-<stephen@xemacs.org> also can help) is the most likely source of advice.
+Package Release Engineer (Ville Skyttä <scop@xemacs.org> is currently
+serving with Norbert Koch <viteno@xemacs.org> assisting; Steve
+Youngs <youngs@xemacs.org> and Stephen Turnbull <stephen@xemacs.org>
+also can help) are the most likely sources of advice.
 
 *** Syncing with GNU Emacs
 --------------------------
index f0cbd83..33320e9 100644 (file)
@@ -1,3 +1,11 @@
+2003-05-25  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.4.13 is released
+
+2003-01-30  Vin Shelton  <acs@xemacs.org>
+
+       * rcs2log: Synch to GNU version [patch from Jens Petersen].
+
 2003-01-15  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.12 "Portable Code" is released.
index 8fa12d9..d5b1d3f 100755 (executable)
@@ -18,6 +18,7 @@ Options:
   -h HOSTNAME  Use HOSTNAME in change log entries (default current host).
   -i INDENT  Indent change log lines by INDENT spaces (default 8).
   -l LENGTH  Try to limit log lines to LENGTH characters (default 79).
+  -L FILE  Use rlog-format FILE for source of logs.
   -R  If no FILEs are given and RCS is used, recurse through working directory.
   -r OPTION  Pass OPTION to subsidiary log command.
   -t TABWIDTH  Tab stops are every TABWIDTH characters (default 8).
@@ -26,11 +27,12 @@ Options:
   --help  Output help.
   --version  Output version number.
 
-Report bugs to <bug-gnu-emacs@prep.ai.mit.edu>.'
+Report bugs to <bug-gnu-emacs@gnu.org>.'
 
-Id='$Id: rcs2log,v 1.2 1997/07/09 04:31:03 steve Exp $'
+Id='$Id: rcs2log,v 1.50 2002/02/03 17:31:31 eggert Exp $'
 
-# Copyright 1992, 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2001, 2002
+#  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
@@ -47,13 +49,29 @@ Id='$Id: rcs2log,v 1.2 1997/07/09 04:31:03 steve Exp $'
 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 02111-1307, USA.
 
-Copyright='Copyright 1997 Free Software Foundation, Inc.
+Copyright='Copyright (C) 2002 Free Software Foundation, Inc.
 This program comes with NO WARRANTY, to the extent permitted by law.
 You may redistribute copies of this program
 under the terms of the GNU General Public License.
 For more information about these matters, see the files named COPYING.
 Author: Paul Eggert <eggert@twinsun.com>'
 
+# Use the traditional C locale.
+LANG=C
+LANGUAGE=C
+LC_ALL=C
+LC_COLLATE=C
+LC_CTYPE=C
+LC_MESSAGES=C
+LC_NUMERIC=C
+LC_TIME=C
+export LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_TIME
+
+# These variables each contain a single ASCII character.
+# Unfortunately, there's no portable way of writing these characters
+# in older Unix implementations, other than putting them directly into
+# this text file.
+SOH='\ 1' # SOH, octal code 001
 tab='  '
 nl='
 '
@@ -61,8 +79,8 @@ nl='
 # Parse options.
 
 # defaults
-: ${AWK=awk}
-: ${TMPDIR=/tmp}
+AWK=${AWK-awk}
+TMPDIR=${TMPDIR-/tmp}
 changelog=ChangeLog # change log file name
 datearg= # rlog date option
 hostname= # name of local host (if empty, will deduce it later)
@@ -74,6 +92,7 @@ logTZ= # time zone for log dates (if empty, use local time)
 recursive= # t if we want recursive rlog
 revision= # t if we want revision numbers
 rlog_options= # options to pass to rlog
+rlogfile= # log file to read from
 tabwidth=8 # width of horizontal tab
 
 while :
@@ -83,14 +102,16 @@ do
        -i)     indent=${2?}; shift;;
        -h)     hostname=${2?}; shift;;
        -l)     length=${2?}; shift;;
+       -L)     rlogfile=${2?}; shift;;
        -[nu])  # -n is obsolescent; it is replaced by -u.
                case $1 in
                -n)     case ${2?}${3?}${4?} in
                        *"$tab"* | *"$nl"*)
                                echo >&2 "$0: -n '$2' '$3' '$4': tabs, newlines not allowed"
-                               exit 1
+                               exit 1;;
                        esac
-                       loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2$tab$3$tab$4
+                       login=$2
+                       lfm=$2$tab$3$tab$4
                        shift; shift; shift;;
                -u)
                        # If $2 is not tab-separated, use colon for separator.
@@ -101,24 +122,41 @@ do
                        *"$tab"*)
                                t=$tab;;
                        *)
-                               t=:
+                               t=':';;
                        esac
                        case $2 in
                        *"$t"*"$t"*"$t"*)
                                echo >&2 "$0: -u '$2': too many fields"
                                exit 1;;
                        *"$t"*"$t"*)
-                               ;;
+                               uf="[^$t]*$t" # An unselected field, followed by a separator.
+                               sf="\\([^$t]*\\)" # The selected field.
+                               login=`expr "X$2" : "X$sf"`
+                               lfm="$login$tab"`
+                                       expr "X$2" : "$uf$sf"
+                                 `"$tab"`
+                                       expr "X$2" : "$uf$uf$sf"
+                               `;;
                        *)
                                echo >&2 "$0: -u '$2': not enough fields"
-                               exit 1
+                               exit 1;;
                        esac
-                       loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$2
-                       shift
+                       shift;;
                esac
-               logins=$logins$nl$login
-               ;;
-       -r)     rlog_options=$rlog_options$nl${2?}; shift;;
+               case $logins in
+               '') logins=$login;;
+               ?*) logins=$logins$nl$login;;
+               esac
+               case $loginFullnameMailaddrs in
+               '') loginFullnameMailaddrs=$lfm;;
+               ?*) loginFullnameMailaddrs=$loginFullnameMailaddrs$nl$lfm;;
+               esac;;
+       -r)
+               case $rlog_options in
+               '') rlog_options=${2?};;
+               ?*) rlog_options=$rlog_options$nl${2?};;
+               esac
+               shift;;
        -R)     recursive=t;;
        -t)     tabwidth=${2?}; shift;;
        -v)     revision=t;;
@@ -130,9 +168,9 @@ do
        -*)     echo >&2 "Usage: $0 [OPTION]... [FILE ...]$nl$Help"
                case $1 in
                --help) exit 0;;
-               *) exit 1
+               *) exit 1;;
                esac;;
-       *)      break
+       *)      break;;
        esac
        shift
 done
@@ -144,148 +182,182 @@ month_data='
        m[9]="Oct"; m[10]="Nov"; m[11]="Dec"
 '
 
+logdir=$TMPDIR/rcs2log$$
+llogout=$logdir/l
+trap exit 1 2 13 15
+trap "rm -fr $logdir 2>/dev/null" 0
+(umask 077 && exec mkdir $logdir) || exit
 
-# Put rlog output into $rlogout.
-
-# If no rlog options are given,
-# log the revisions checked in since the first ChangeLog entry.
-# Since ChangeLog is only by date, some of these revisions may be duplicates of
-# what's already in ChangeLog; it's the user's responsibility to remove them.
-case $rlog_options in
+# If no rlog-format log file is given, generate one into $rlogfile.
+case $rlogfile in
 '')
+       rlogfile=$logdir/r
+
+       # If no rlog options are given,
+       # log the revisions checked in since the first ChangeLog entry.
+       # Since ChangeLog is only by date, some of these revisions may be duplicates of
+       # what's already in ChangeLog; it's the user's responsibility to remove them.
+       case $rlog_options in
+       '')
+               if test -s "$changelog"
+               then
+                       e='
+                               /^[0-9]+-[0-9][0-9]-[0-9][0-9]/{
+                                       # ISO 8601 date
+                                       print $1
+                                       exit
+                               }
+                               /^... ... [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9]+ /{
+                                       # old-fashioned date and time (Emacs 19.31 and earlier)
+                                       '"$month_data"'
+                                       year = $5
+                                       for (i=0; i<=11; i++) if (m[i] == $2) break
+                                       dd = $3
+                                       printf "%d-%02d-%02d\n", year, i+1, dd
+                                       exit
+                               }
+                       '
+                       d=`$AWK "$e" <"$changelog"` || exit
+                       case $d in
+                       ?*) datearg="-d>$d";;
+                       esac
+               fi;;
+       esac
+
+       # Use TZ specified by ChangeLog local variable, if any.
        if test -s "$changelog"
        then
-               e='
-                       /^[0-9]+-[0-9][0-9]-[0-9][0-9]/{
-                               # ISO 8601 date
-                               print $1
-                               exit
+               extractTZ='
+                       /^.*change-log-time-zone-rule['"$tab"' ]*:['"$tab"' ]*"\([^"]*\)".*/{
+                               s//\1/; p; q
                        }
-                       /^... ... [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9]+ /{
-                               # old-fashioned date and time (Emacs 19.31 and earlier)
-                               '"$month_data"'
-                               year = $5
-                               for (i=0; i<=11; i++) if (m[i] == $2) break
-                               dd = $3
-                               printf "%d-%02d-%02d\n", year, i+1, dd
-                               exit
+                       /^.*change-log-time-zone-rule['"$tab"' ]*:['"$tab"' ]*t.*/{
+                               s//UTC0/; p; q
                        }
                '
-               d=`$AWK "$e" <"$changelog"` || exit
-               case $d in
-               ?*) datearg="-d>$d"
+               logTZ=`tail "$changelog" | sed -n "$extractTZ"`
+               case $logTZ in
+               ?*) TZ=$logTZ; export TZ;;
                esac
        fi
-esac
 
-# Use TZ specified by ChangeLog local variable, if any.
-if test -s "$changelog"
-then
-       extractTZ='
-               /^.*change-log-time-zone-rule['"$tab"' ]*:['"$tab"' ]*"\([^"]*\)".*/{
-                       s//\1/; p; q
-               }
-               /^.*change-log-time-zone-rule['"$tab"' ]*:['"$tab"' ]*t.*/{
-                       s//UTC0/; p; q
-               }
-       '
-       logTZ=`tail "$changelog" | sed -n "$extractTZ"`
-       case $logTZ in
-       ?*) TZ=$logTZ; export TZ
-       esac
-fi
-
-# If CVS is in use, examine its repository, not the normal RCS files.
-if test ! -f CVS/Repository
-then
-       rlog=rlog
-       repository=
-else
-       rlog='cvs -q log'
-       repository=`sed 1q <CVS/Repository` || exit
-       test ! -f CVS/Root || CVSROOT=`cat <CVS/Root` || exit
-       case $CVSROOT in
-       *:/*)
-               # remote repository
-               ;;
-       *)
-               # local repository
-               case $repository in
-               /*) ;;
-               *) repository=${CVSROOT?}/$repository
+       # If CVS is in use, examine its repository, not the normal RCS files.
+       if test ! -f CVS/Repository
+       then
+               rlog=rlog
+               repository=
+       else
+               rlog='cvs -q log'
+               repository=`sed 1q <CVS/Repository` || exit
+               test ! -f CVS/Root || CVSROOT=`cat <CVS/Root` || exit
+               case $CVSROOT in
+               *:/*:/*)
+                       echo >&2 "$0: $CVSROOT: CVSROOT has multiple ':/'s"
+                       exit 1;;
+               *:/*)
+                       # remote repository
+                       pository=`expr "X$repository" : '.*:\(/.*\)'`;;
+               *)
+                       # local repository
+                       case $repository in
+                       /*) ;;
+                       *) repository=${CVSROOT?}/$repository;;
+                       esac
+                       if test ! -d "$repository"
+                       then
+                               echo >&2 "$0: $repository: bad repository (see CVS/Repository)"
+                               exit 1
+                       fi
+                       pository=$repository;;
                esac
-               if test ! -d "$repository"
-               then
-                       echo >&2 "$0: $repository: bad repository (see CVS/Repository)"
-                       exit 1
-               fi
-       esac
-fi
 
-# Use $rlog's -zLT option, if $rlog supports it.
-case `$rlog -zLT 2>&1` in
-*' option'*) ;;
-*) rlog_options=-zLT$nl$rlog_options
-esac
+               # Ensure that $pository ends in exactly one slash.
+               while :
+               do
+                       case $pository in
+                       *//) pository=`expr "X$pository" : 'X\(.*\)/'`;;
+                       */) break;;
+                       *) pository=$pository/; break;;
+                       esac
+               done
 
-# With no arguments, examine all files under the RCS directory.
-case $# in
-0)
-       case $repository in
-       '')
-               oldIFS=$IFS
-               IFS=$nl
-               case $recursive in
-               t)
-                       RCSdirs=`find . -name RCS -type d -print`
-                       filesFromRCSfiles='s|,v$||; s|/RCS/|/|; s|^\./||'
-                       files=`
-                               {
-                                       case $RCSdirs in
-                                       ?*) find $RCSdirs \
-                                                       -type f \
-                                                       ! -name '*_' \
-                                                       ! -name ',*,' \
-                                                       ! -name '.*_' \
-                                                       ! -name .rcsfreeze.log \
-                                                       ! -name .rcsfreeze.ver \
-                                                       -print
+       fi
+
+       # Use $rlog's -zLT option, if $rlog supports it.
+       case `$rlog -zLT 2>&1` in
+       *' option'*) ;;
+       *)
+               case $rlog_options in
+               '') rlog_options=-zLT;;
+               ?*) rlog_options=-zLT$nl$rlog_options;;
+               esac;;
+       esac
+
+       # With no arguments, examine all files under the RCS directory.
+       case $# in
+       0)
+               case $repository in
+               '')
+                       oldIFS=$IFS
+                       IFS=$nl
+                       case $recursive in
+                       t)
+                               RCSdirs=`find . -name RCS -type d -print`
+                               filesFromRCSfiles='s|,v$||; s|/RCS/|/|; s|^\./||'
+                               files=`
+                                       {
+                                               case $RCSdirs in
+                                               ?*) find $RCSdirs \
+                                                               -type f \
+                                                               ! -name '*_' \
+                                                               ! -name ',*,' \
+                                                               ! -name '.*_' \
+                                                               ! -name .rcsfreeze.log \
+                                                               ! -name .rcsfreeze.ver \
+                                                               -print;;
+                                               esac
+                                               find . -name '*,v' -print
+                                       } |
+                                       sort -u |
+                                       sed "$filesFromRCSfiles"
+                               `;;
+                       *)
+                               files=
+                               for file in RCS/.* RCS/* .*,v *,v
+                               do
+                                       case $file in
+                                       RCS/. | RCS/.. | RCS/,*, | RCS/*_) continue;;
+                                       RCS/.rcsfreeze.log | RCS/.rcsfreeze.ver) continue;;
+                                       RCS/.\* | RCS/\* | .\*,v | \*,v) test -f "$file" || continue;;
+                                       RCS/*,v | RCS/.*,v) ;;
+                                       RCS/* | RCS/.*) test -f "$file" || continue;;
                                        esac
-                                       find . -name '*,v' -print
-                               } |
-                               sort -u |
-                               sed "$filesFromRCSfiles"
-                       `;;
-               *)
-                       files=
-                       for file in RCS/.* RCS/* .*,v *,v
-                       do
-                               case $file in
-                               RCS/. | RCS/.. | RCS/,*, | RCS/*_) continue;;
-                               RCS/.rcsfreeze.log | RCS/.rcsfreeze.ver) continue;;
-                               RCS/.\* | RCS/\* | .\*,v | \*,v) test -f "$file" || continue
-                               esac
-                               files=$files$nl$file
-                       done
-                       case $files in
-                       '') exit 0
+                                       case $files in
+                                       '') files=$file;;
+                                       ?*) files=$files$nl$file;;
+                                       esac
+                               done
+                               case $files in
+                               '') exit 0;;
+                               esac;;
                        esac
-               esac
-               set x $files
-               shift
-               IFS=$oldIFS
+                       set x $files
+                       shift
+                       IFS=$oldIFS;;
+               esac;;
        esac
+
+       case $datearg in
+       ?*) $rlog $rlog_options "$datearg" ${1+"$@"} >$rlogfile;;
+       '') $rlog $rlog_options ${1+"$@"} >$rlogfile;;
+       esac || exit;;
 esac
 
-llogout=$TMPDIR/rcs2log$$l
-rlogout=$TMPDIR/rcs2log$$r
-trap exit 1 2 13 15
-trap "rm -f $llogout $rlogout; exit 1" 0
 
-case $datearg in
-?*) $rlog $rlog_options "$datearg" ${1+"$@"} >$rlogout;;
-'') $rlog $rlog_options ${1+"$@"} >$rlogout
-esac || exit
+# Prefer the POSIX-style -k options, since POSIX 1003.1-2001 prohibits
+# support for the traditional-style +M -N options.
+SORT_K_OPTIONS='-k 3,4r -k 5 -k 1'
+sort $SORT_K_OPTIONS </dev/null 2>/dev/null || SORT_K_OPTIONS='+2 -4r +4 +0'
 
 
 # Get the full name of each author the logs mention, and set initialize_fullname
@@ -303,17 +375,14 @@ case $loginFullnameMailaddrs in
                sed 's/["\\]/\\&/g' >$llogout <<EOF || exit
 $loginFullnameMailaddrs
 EOF
-               loginFullnameMailaddrs=`cat $llogout`
+               loginFullnameMailaddrs=`cat $llogout`;;
        esac
 
        oldIFS=$IFS
        IFS=$nl
        for loginFullnameMailaddr in $loginFullnameMailaddrs
        do
-               case $loginFullnameMailaddr in
-               *"$tab"*) IFS=$tab;;
-               *) IFS=:
-               esac
+               IFS=$tab
                set x $loginFullnameMailaddr
                login=$2
                fullname=$3
@@ -323,25 +392,26 @@ EOF
                initialize_mailaddr="$initialize_mailaddr
                        mailaddr[\"$login\"] = \"$mailaddr\""
        done
-       IFS=$oldIFS
+       IFS=$oldIFS;;
 esac
 
-case $llogout in
-?*) sort -u -o $llogout <<EOF || exit
+case $logins in
+?*)
+       sort -u -o $llogout <<EOF
 $logins
 EOF
-esac
+       ;;
+'')
+       : ;;
+esac >$llogout || exit
+
 output_authors='/^date: / {
        if ($2 ~ /^[0-9]*[-\/][0-9][0-9][-\/][0-9][0-9]$/ && $3 ~ /^[0-9][0-9]:[0-9][0-9]:[0-9][0-9][-+0-9:]*;$/ && $4 == "author:" && $5 ~ /^[^;]*;$/) {
                print substr($5, 1, length($5)-1)
        }
 }'
 authors=`
-       $AWK "$output_authors" <$rlogout |
-       case $llogout in
-       '') sort -u;;
-       ?*) sort -u | comm -23 - $llogout
-       esac
+       $AWK "$output_authors" <"$rlogfile" | sort -u | comm -23 - $llogout
 `
 case $authors in
 ?*)
@@ -402,21 +472,24 @@ EOF
        '
 
        initialize_fullname=`
-               (
-                       cat /etc/passwd
-                       for author in $authors
-                       do nismatch $author passwd.org_dir
-                       done
-                       ypmatch $authors passwd
-               ) 2>/dev/null |
+               {
+                       (getent passwd $authors) ||
+                       (
+                               cat /etc/passwd
+                               for author in $authors
+                               do NIS_PATH= nismatch $author passwd.org_dir
+                               done
+                               ypmatch $authors passwd
+                       )
+               } 2>/dev/null |
                $AWK -F: "$awkscript"
-       `$initialize_fullname
+       `$initialize_fullname;;
 esac
 
 
 # Function to print a single log line.
 # We don't use awk functions, to stay compatible with old awk versions.
-# `Log' is the log message (with \n replaced by \r).
+# `Log' is the log message.
 # `files' contains the affected files.
 printlogline='{
 
@@ -424,21 +497,27 @@ printlogline='{
        #       * file: (function): comment
        # to
        #       * file (function): comment
-       if (Log ~ /^\([^)]*\): /) {
+       if (Log ~ /^\([^)]*\):[\t\n ]/) {
                i = index(Log, ")")
-               files = files " " substr(Log, 1, i)
+               filefunc = substr(Log, 1, i)
+               while ((j = index(filefunc, "\n"))) {
+                       files = files " " substr(filefunc, 1, j-1)
+                       filefunc = substr(filefunc, j+1)
+               }
+               files = files " " filefunc
                Log = substr(Log, i+3)
        }
 
        # If "label: comment" is too long, break the line after the ":".
        sep = " "
-       if ('"$length"' <= '"$indent"' + 1 + length(files) + index(Log, CR)) sep = "\n" indent_string
+       i = index(Log, "\n")
+       if ('"$length"' <= '"$indent"' + 1 + length(files) + i) sep = "\n" indent_string
 
        # Print the label.
        printf "%s*%s:", indent_string, files
 
-       # Print each line of the log, transliterating \r to \n.
-       while ((i = index(Log, CR)) != 0) {
+       # Print each line of the log.
+       while (i) {
                logline = substr(Log, 1, i-1)
                if (logline ~ /[^'"$tab"' ]/) {
                        printf "%s%s\n", sep, logline
@@ -447,6 +526,7 @@ printlogline='{
                }
                sep = indent_string
                Log = substr(Log, i+1)
+               i = index(Log, "\n")
        }
 }'
 
@@ -467,24 +547,27 @@ case $hostname in
        *)
                domainname=`(domainname) 2>/dev/null` &&
                case $domainname in
-               *.*) hostname=$hostname.$domainname
-               esac
-       esac
+               *.*) hostname=$hostname.$domainname;;
+               esac;;
+       esac;;
 esac
 
 
 # Process the rlog output, generating ChangeLog style entries.
 
 # First, reformat the rlog output so that each line contains one log entry.
-# Transliterate \n to \r so that multiline entries fit on a single line.
+# Transliterate \n to SOH so that multiline entries fit on a single line.
 # Discard irrelevant rlog output.
-$AWK <$rlogout '
-       BEGIN { repository = "'"$repository"'" }
-       /^RCS file:/ {
-               if (repository != "") {
-                       filename = $3
-                       if (substr(filename, 1, length(repository) + 1) == repository "/") {
-                               filename = substr(filename, length(repository) + 2)
+$AWK '
+       BEGIN {
+               pository = "'"$pository"'"
+               SOH="'"$SOH"'"
+       }
+       /^RCS file: / {
+               if (pository != "") {
+                       filename = substr($0, 11)
+                       if (substr(filename, 1, length(pository)) == pository) {
+                               filename = substr(filename, length(pository) + 1)
                        }
                        if (filename ~ /,v$/) {
                                filename = substr(filename, 1, length(filename) - 2)
@@ -497,13 +580,14 @@ $AWK <$rlogout '
                }
                rev = "?"
        }
-       /^Working file:/ { if (repository == "") filename = $3 }
+       /^Working file: / { if (repository == "") filename = substr($0, 15) }
        /'"$rlog_revision_pattern"'/, /^(-----------*|===========*)$/ {
-               if ($0 ~ /'"$rlog_revision_pattern"'/) {
+               line = $0
+               if (line ~ /'"$rlog_revision_pattern"'/) {
                        rev = $2
                        next
                }
-               if ($0 ~ /^date: [0-9][- +\/0-9:]*;/) {
+               if (line ~ /^date: [0-9][- +\/0-9:]*;/) {
                        date = $2
                        if (date ~ /\//) {
                                # This is a traditional RCS format date YYYY/MM/DD.
@@ -517,38 +601,34 @@ $AWK <$rlogout '
                        }
                        time = substr($3, 1, length($3) - 1)
                        author = substr($5, 1, length($5)-1)
-                       printf "%s %s %s %s %s %c", filename, rev, date, time, author, 13
+                       printf "%s%s%s%s%s%s%s%s%s%s", filename, SOH, rev, SOH, date, SOH, time, SOH, author, SOH
                        rev = "?"
                        next
                }
-               if ($0 ~ /^branches: /) { next }
-               if ($0 ~ /^(-----------*|===========*)$/) { print ""; next }
-               if ($0 == "Initial revision" || $0 ~ /^file .+ was initially added on branch .+\.$/) {
-                       $0 = "New file."
-        }
-               printf "%s%c", $0, 13
+               if (line ~ /^branches: /) { next }
+               if (line ~ /^(-----------*|===========*)$/) { print ""; next }
+               if (line == "Initial revision" || line ~ /^file .+ was initially added on branch .+\.$/) {
+                       line = "New file."
+               }
+               printf "%s%s", line, SOH
        }
-' |
+' <"$rlogfile" |
 
 # Now each line is of the form
-# FILENAME REVISION YYYY-MM-DD HH:MM:SS[+-TIMEZONE] AUTHOR \rLOG
-#      where \r stands for a carriage return,
-#      and each line of the log is terminated by \r instead of \n.
+# FILENAME@REVISION@YYYY-MM-DD@HH:MM:SS[+-TIMEZONE]@AUTHOR@LOG
+#      where @ stands for an SOH (octal code 001),
+#      and each line of LOG is terminated by SOH instead of \n.
 # Sort the log entries, first by date+time (in reverse order),
 # then by author, then by log entry, and finally by file name and revision
 # (just in case).
-sort +2 -4r +4 +0 |
+sort -t"$SOH" $SORT_K_OPTIONS |
 
 # Finally, reformat the sorted log entries.
-$AWK '
+$AWK -F"$SOH" '
        BEGIN {
                logTZ = "'"$logTZ"'"
                revision = "'"$revision"'"
 
-               # Some awk variants do not understand "\r" or "\013", so we have to
-               # put a carriage return directly in the file.
-               CR="\r" # <-- There is a single CR between the " chars here.
-
                # Initialize the fullname and mailaddr associative arrays.
                '"$initialize_fullname"'
                '"$initialize_mailaddr"'
@@ -564,7 +644,8 @@ $AWK '
        }
 
        {
-               newlog = substr($0, 1 + index($0, CR))
+               newlog = ""
+               for (i = 6; i < NF; i++) newlog = newlog $i "\n"
 
                # Ignore log entries prefixed by "#".
                if (newlog ~ /^#/) { next }
@@ -588,7 +669,7 @@ $AWK '
                                newclumpname = substr(newlog, 1, i)
                                while (substr(newlog, i+1) ~ /^['"$tab"' ]/) i++
                                newlog = substr(newlog, i+1)
-                               if (clumpname == newclumpname) sep = ""
+                               if (clumpname == newclumpname && date == $3 && author == $5) sep = ""
                        }
                        printf sep
                        clumpname = newclumpname
@@ -643,7 +724,7 @@ $AWK '
 
 # Exit successfully.
 
-exec rm -f $llogout $rlogout
+exec rm -fr $logdir
 
 # Local Variables:
 # tab-width:4
index c84fd23..22e62ce 100644 (file)
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
-;;; Synched up with: FSF 20.7.
+;;; Synched up with: FSF 20.7 except where marked.
+;;; [[ Synched up with: FSF 20.7. ]]
+;;; DO NOT PUT IN AN INVALID SYNC MESSAGE WHEN YOU DO A PARTIAL SYNC. --ben
+
+;; BEGIN SYNC WITH 20.7.
 
 ;;; Commentary:
 
                                (compiled-function-constants fn)
                                (compiled-function-stack-depth fn)))
                    (cdr form)))
-         (if (not (eq (car fn) 'lambda)) (error "%s is not a lambda" name))
-         (cons fn (cdr form)))))))
+         (if (eq (car-safe fn) 'lambda)
+             (cons fn (cdr form))
+           ;; Give up on inlining.
+           form))))))
 
 ;;; ((lambda ...) ...)
 ;;;
                (byte-compile-warn
                 "attempt to open-code %s with too many arguments" name))
            form)
+       (setq body (mapcar 'byte-optimize-form body))
        (let ((newform
               (if bindings
                   (cons 'let (cons (nreverse bindings) body))
                                            byte-compile-macro-environment))))
           (byte-optimize-form form for-effect))
 
+         ;; Support compiler macros as in cl.el.
+         ((and (fboundp 'compiler-macroexpand)
+               (symbolp (car-safe form))
+               (get (car-safe form) 'cl-compiler-macro)
+               (not (eq form
+                        (setq form (compiler-macroexpand form)))))
+          (byte-optimize-form form for-effect))
+
          ((not (symbolp fn))
           (or (eq 'mocklisp (car-safe fn)) ; ha!
               (byte-compile-warn "%s is a malformed function"
        (progn
 ;;       (if (equal form new) (error "bogus optimizer -- %s" opt))
          (byte-compile-log "  %s\t==>\t%s" form new)
-         (byte-optimize-form new for-effect))
+         (setq new (byte-optimize-form new for-effect))
+         new)
       form)))
 
 
                                (list (apply fun (nreverse constants)))))))))
     form))
 
+;; END SYNC WITH 20.7.
+
 ;;; It is not safe to optimize calls to arithmetic ops with one arg
 ;;; away entirely (actually, it would be safe if we know the sole arg
 ;;; is not a marker or if it appears in other arithmetic).
      ;; We don't have to check for divide-by-zero because `/' does.
      (t (byte-optimize-predicate form)))))
 
+;; BEGIN SYNC WITH 20.7.
+
 (defun byte-optimize-logmumble (form)
   (setq form (byte-optimize-delay-constants-math form 1 (car form)))
   (byte-optimize-predicate
        (byte-optimize-predicate form)
       (nth 1 form))))
 
+;; END SYNC WITH 20.7.
+
 ;;; For the byte optimizer, `cond' is just overly sweet syntactic sugar.
 ;;; So we rewrite (cond ...) in terms of `if' and `or',
 ;;; which are easier to optimize.
      (when (cdr clauses) (list (byte-optimize-cond-1 (cdr clauses))))))
    (t (error "malformed cond clause %s" (car clauses)))))
 
+;; BEGIN SYNC WITH 20.7.
+
 (defun byte-optimize-if (form)
   ;; (if <true-constant> <then> <else...>) ==> <then>
   ;; (if <false-constant> <then> <else...>) ==> (progn <else...>)
                                             tags)))))))
            ((cond ((eq op 'byte-constant2) (setq op 'byte-constant) t)
                   ((memq op byte-constref-ops)))
-            (setq tmp (aref constvec offset)
+            (setq tmp (if (>= offset (length constvec))
+                          (list 'out-of-range offset)
+                        (aref constvec offset))
                   offset (if (eq op 'byte-constant)
                              (byte-compile-get-constant tmp)
                            (or (assq tmp byte-compile-variables)
 ;;; variables.
 
 ;(defconst byte-boolean-vars
-;  '(abbrev-all-caps purify-flag find-file-compare-truenames
-;    find-file-use-truenames delete-auto-save-files byte-metering-on
-;    x-seppuku-on-epipe zmacs-regions zmacs-region-active-p
-;    zmacs-region-stays atomic-extent-goto-char-p
-;    suppress-early-error-handler-backtrace noninteractive
-;    inhibit-early-packages inhibit-autoloads debug-paths
-;    inhibit-site-lisp debug-on-quit debug-on-next-call
-;    modifier-keys-are-sticky x-allow-sendevents
-;    mswindows-dynamic-frame-resize focus-follows-mouse
-;    inhibit-input-event-recording enable-multibyte-characters
-;    disable-auto-save-when-buffer-shrinks
-;    allow-deletion-of-last-visible-frame indent-tabs-mode
-;    load-in-progress load-warn-when-source-newer
-;    load-warn-when-source-only load-ignore-elc-files
-;    load-force-doc-strings fail-on-bucky-bit-character-escapes
-;    popup-menu-titles menubar-show-keybindings completion-ignore-case
-;    canna-empty-info canna-through-info canna-underline
-;    canna-inhibit-hankakukana enable-multibyte-characters
-;    re-short-flag x-handle-non-fully-specified-fonts
-;    print-escape-newlines print-readably delete-exited-processes
-;    windowed-process-io visible-bell no-redraw-on-reenter
-;    cursor-in-echo-area inhibit-warning-display
-;    column-number-start-at-one parse-sexp-ignore-comments
-;    words-include-escapes scroll-on-clipped-lines)
-;  "DEFVAR_BOOL variables.  Giving these any non-nil value sets them to t.
-;If this does not enumerate all DEFVAR_BOOL variables, the byte-optimizer
-;may generate incorrect code.")
+;   ...)
 
 (defun byte-optimize-lapcode (lap &optional for-effect)
   "Simple peephole optimizer.  LAP is both modified and returned."
     (while rest
       (setq lap0 (car rest)
            lap1 (nth 1 rest))
-      (case (car lap0)
-       ((byte-varref byte-varset byte-varbind)
-        (incf (gethash (cdr lap0) variable-frequency 0))
-        (unless (memq (cdr lap0) byte-compile-variables)
-          (push (cdr lap0) byte-compile-variables)))
-       ((byte-constant)
-        (unless (memq (cdr lap0) byte-compile-constants)
-          (push (cdr lap0) byte-compile-constants))))
+      (if (memq (car lap0) byte-constref-ops)
+         (if (not (eq (car lap0) 'byte-constant))
+             (progn 
+               (incf (gethash (cdr lap0) variable-frequency 0))
+               (or (memq (cdr lap0) byte-compile-variables)
+                   (setq byte-compile-variables
+                         (cons (cdr lap0) byte-compile-variables))))
+           (or (memq (cdr lap0) byte-compile-constants)
+               (setq byte-compile-constants (cons (cdr lap0)
+                                                  byte-compile-constants)))))
       (cond (;;
             ;; const-C varset-X  const-C  -->  const-C dup varset-X
             ;; const-C varbind-X const-C  -->  const-C dup varbind-X
          byte-optimize-lapcode))))
  nil)
 
+;; END SYNC WITH 20.7.
+
 ;;; byte-optimize.el ends here
index 2bd88a1..8296b9c 100644 (file)
@@ -1033,7 +1033,7 @@ actually get any text from."
        (setq lbuffers (cdr lbuffers)))
       (message "Composing main Info directory...done"))
     (setq Info-dir-contents (buffer-string)))
-  (setq default-directory Info-dir-contents-directory)
+  (setq default-directory (file-name-as-directory Info-dir-contents-directory))
   (setq buffer-file-name (caar Info-dir-file-attributes)))
 
 (defmacro Info-directory-files (dir-file &optional all full nosort files-only)
index 31f082f..8ddc567 100644 (file)
@@ -5,7 +5,7 @@
 ;; Author: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Maintainer: Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
 ;; Created: Jan 1998
-;; Version: $Revision: 1.10 $
+;; Version: $Revision: 1.7.2.11 $
 ;; Keywords: help comm
 
 ;; This file is part of XEmacs
index 763a897..55ae786 100644 (file)
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 1985-7, 1993-5, 1997 Free Software Foundation, Inc.
 ;; Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
-;; Copyright (C) 2000 Ben Wing.
+;; Copyright (C) 2000, 2001, 2002, 2003 Ben Wing.
 
 ;; Maintainer: XEmacs Development Team
 ;; Keywords: lisp, extensions, internal, dumped
@@ -1988,8 +1988,12 @@ nil."
   :group 'editing-basics)
 
 (defcustom motion-keys-for-shifted-motion
-  '(left right up down home end prior next
-        kp-left kp-right kp-up kp-down kp-home kp-end kp-prior kp-next)
+  ;; meta-shift-home/end are NOT shifted motion commands.
+  '(left right up down (home) (control home) (meta control home)
+    (end) (control end) (meta control end) prior next
+    kp-left kp-right kp-up kp-down (kp-home) (control kp-home)
+    (meta control kp-home) (kp-end) (control kp-end) (meta control kp-end)
+    kp-prior kp-next)
   "*List of keys considered motion keys for the purpose of shifted selection.
 When one of these keys is pressed along with the Shift key, and the
 command invoked moves the cursor and preserves the active region (see
@@ -2010,11 +2014,20 @@ alphabetic key without problem, and you can specify the key using
 either a character or a symbol, uppercase or lowercase."
   :type '(repeat (choice (const :tag "normal cursor-pad (\"gray\") keys"
                                :inline t
-                               (left right up down home end prior next))
+                               (left
+                                right up down
+                                (home) (control home) (meta control home)
+                                (end) (control end) (meta control end)
+                                prior next))
                         (const :tag "keypad motion keys"
                                :inline t
-                               (kp-left kp-right kp-up kp-down
-                                        kp-home kp-end kp-prior kp-next))
+                               (kp-left
+                                kp-right kp-up kp-down
+                                (kp-home) (control kp-home)
+                                (meta control kp-home)
+                                (kp-end) (control kp-end)
+                                (meta control kp-end)
+                                kp-prior kp-next))
                         (const :tag "alphabetic motion keys"
                                :inline t
                                ((control b) (control f)
index 0e1baeb..4c30905 100644 (file)
@@ -234,7 +234,7 @@ containing the text and defaults to the current buffer."
     (setq start (next-single-property-change start prop buffer-or-string end)))
   ;; we have to insert a special check for end due to the illogical
   ;; definition of next-single-property-change (blame FSF for this).
-  (if (eq start end) nil start))
+  (if (and start (>= start end)) nil start))
 
 (defun text-property-not-all (start end prop value &optional buffer-or-string)
   "Check text from START to END to see if PROP is ever not `eq' to VALUE.
@@ -248,7 +248,7 @@ containing the text and defaults to the current buffer."
                                               buffer-or-string end)))
       ;; we have to insert a special check for end due to the illogical
       ;; definition of previous-single-property-change (blame FSF for this).
-      (if (eq retval end) nil retval))))
+      (if (and retval (>= retval end)) nil retval))))
 
 ;; Older versions that only work sometimes (when VALUE is non-nil
 ;; for text-property-any, and maybe only when VALUE is nil for
index cc6b7a3..4020bc0 100644 (file)
@@ -1,3 +1,17 @@
+2003-05-25  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.4.13 is released
+
+2003-01-31  Martin Buchholz  <martin@xemacs.org>
+
+       * lwlib-Xm.c (xm_update_progress): 
+       Don't define unless LWLIB_WIDGETS_MOTIF.
+
+2003-02-13  Martin Buchholz  <martin@xemacs.org>
+
+       * xlwmenu.c (xlwMenuClassRec):
+       Use symbolic name `XtExposeCompressMaximal' instead of `TRUE'.
+
 2003-01-15  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.12 "Portable Code" is released.
index 55402d5..254691d 100644 (file)
@@ -344,6 +344,7 @@ xm_update_pushbutton (widget_instance* instance, Widget widget,
   XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
 }
 
+#ifdef LWLIB_WIDGETS_MOTIF
 static void
 xm_update_progress (widget_instance* instance, Widget scale,
                      widget_value* val)
@@ -373,6 +374,7 @@ xm_update_progress (widget_instance* instance, Widget scale,
 
   XtSetValues (scale, al, 1);
 }
+#endif /* LWLIB_WIDGETS_MOTIF */
 
 #ifdef LWLIB_MENUBARS_MOTIF
 
index ef1cc9f..cd013c8 100644 (file)
@@ -197,7 +197,7 @@ XlwMenuClassRec xlwMenuClassRec =
     XtNumber(xlwMenuResources),                /* resource_count         */
     NULLQUARK,                         /* xrm_class              */
     TRUE,                              /* compress_motion        */
-    TRUE,                              /* compress_exposure      */
+    XtExposeCompressMaximal,           /* compress_exposure      */
     TRUE,                              /* compress_enterleave    */
     FALSE,                             /* visible_interest       */
     XlwMenuDestroy,                    /* destroy                */
index 38a58f0..0eb82fa 100644 (file)
@@ -1,3 +1,31 @@
+2003-05-25  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.4.13 is released
+
+2003-03-20  Martin Buchholz  <martin@xemacs.org>
+
+       * xemacs-faq.texi: Fix minor typo.
+
+2003-03-19  Vin Shelton  <acs@xemacs.org>
+
+       * widget.texi: Crib Stephen's updates and Ben's fixes en masse
+       from 21.5.
+
+2003-03-18  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * xemacs/frame.texi (Gutter Basics): Describe common options for
+       buffers tab control.
+
+2003-02-03  Steve Youngs  <youngs@xemacs.org>
+
+       * xemacs/packages.texi (Local.rules File): Update to reflect Ben's
+       recent dabble into the packages.
+
+2003-02-11  Adrian Aichner  <adrian@xemacs.org>
+
+       * lispref/backups.texi (Auto-Saving): Fix auto-save xref to user
+       manual.
+
 2003-01-15  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.12 "Portable Code" is released.
index e4e05f9..8df0772 100644 (file)
@@ -3,7 +3,7 @@
 @setfilename ../info/info.info
 @settitle Info
 @comment %**end of header
-@comment $Id: info.texi,v 1.8 2001/04/12 18:22:00 michaels Exp $
+@comment $Id: info.texi,v 1.4.2.6 2000/11/29 08:27:28 stephent Exp $
 
 @dircategory Texinfo documentation system
 @direntry
index 6dbcb22..7ea6cc4 100644 (file)
@@ -357,8 +357,8 @@ automatically compare a file with its most recent backup.
 called @dfn{auto-saving}.  Auto-saving prevents you from losing more
 than a limited amount of work if the system crashes.  By default,
 auto-saves happen every 300 keystrokes, or after around 30 seconds of
-idle time.  @xref{Auto-Save, Auto-Save, Auto-Saving: Protection Against
-Disasters, xemacs, The XEmacs Lisp Reference Manual}, for information on
+idle time.  @xref{Auto Save, Auto-Save, Auto-Saving: Protection Against
+Disasters, xemacs, The XEmacs User's Manual}, for information on
 auto-save for users.  Here we describe the functions used to implement
 auto-saving and the variables that control them.
 
index b0408bb..8652dee 100644 (file)
@@ -1,5 +1,5 @@
 \input texinfo.tex    @c -*-texinfo-*-
-@c $Id: texinfo.texi,v 1.14.2.1 2002/08/20 11:35:25 stephent Exp $
+@c $Id: texinfo.texi,v 1.14.4.1 2002/07/09 08:36:53 stephent Exp $
 @c %**start of header
 
 @c All text is ignored before the setfilename.
index fe91363..50bbc14 100644 (file)
@@ -33,6 +33,7 @@
 * Widget Minor Mode::           
 * Utilities::                   
 * Widget Wishlist::             
+* Widget Internals::
 @end menu
 
 @node  Introduction, User Interface, Top, Top
@@ -120,7 +121,7 @@ create any widgets, the code has been split in two files:
 @table @file
 @item widget.el
 This will declare the user variables, define the function
-@code{widget-define}, and autoload the function @code{widget-create}. 
+@code{define-widget}, and autoload the function @code{widget-create}. 
 @item wid-edit.el
 Everything else is here, there is no reason to load it explicitly, as
 it will be autoloaded when needed.
@@ -133,7 +134,7 @@ it will be autoloaded when needed.
 A form consists of read only text for documentation and some fields,
 where each of the fields contains two parts, a tag and a value.  The
 tags are used to identify the fields, so the documentation can refer to
-the foo field, meaning the field tagged with @samp{Foo}.  Here is an
+the foo field, meaning the field tagged with @samp{Foo}. Here is an
 example form:
 
 @example
@@ -542,7 +543,9 @@ A function called each time the widget or a nested widget is changed.
 The function is called with two or three arguments.  The first argument
 is the widget itself, the second argument is the widget that was
 changed, and the third argument is the event leading to the change, if
-any. 
+any.  In editable fields, this includes all insertions, deletions,
+@emph{etc}.  To watch only for ``final'' actions, redefine the
+@code{:action} callback.
 
 @item :menu-tag
 Tag used in the menu when the widget is used as an option in a
@@ -1357,7 +1360,7 @@ you to create a shorthand for more complex widgets.  This includes
 specifying component widgets and new default values for the keyword
 arguments.
 
-@defun widget-define name class doc &rest args
+@defun define-widget name class doc &rest args
 Define a new widget type named @var{name} from @code{class}.
 
 @var{name} and class should both be symbols, @code{class} should be one
@@ -1382,32 +1385,49 @@ create identical widgets:
 
 @end defun
 
-Using @code{widget-define} just stores the definition of the widget type
+Using @code{define-widget} just stores the definition of the widget type
 in the @code{widget-type} property of @var{name}, which is what
 @code{widget-create} uses.
 
 If you just want to specify defaults for keywords with no complex
-conversions, you can use @code{identity} as your conversion function.
+conversions, you can use @code{identity} as your @code{:convert-widget}
+function.
 
 The following additional keyword arguments are useful when defining new
 widgets: 
 @table @code
 @item :convert-widget
-Function to convert a widget type before creating a widget of that
-type.  It takes a widget type as an argument, and returns the converted
-widget type.  When a widget is created, this function is called for the
-widget type and all the widget's parent types, most derived first. 
+Method to convert type-specific components of a widget type before
+instantiating a widget of that type.  Not normally called from user
+code, it is invoked by @code{widget-convert}.  Typical operations
+include converting types of child widgets to widget instances and
+converting values from external format (@emph{i.e.}, as expected by the
+calling code) to internal format (which is often different for the
+convenience of widget manipulation).  It takes a widget type as an
+argument, and returns the converted widget type.  When a widget is
+created, the value of this property is called for the widget type, then
+for all the widget's parent types, most derived first.  (The property is
+reevaluated for each parent type.)
 
 The following predefined functions can be used here:
 
 @defun widget-types-convert-widget widget
-Convert @code{:args} as widget types in @var{widget}.
+Convert each member of @code{:args} in @var{widget} from a widget type
+to a widget.
 @end defun
 
 @defun widget-value-convert-widget widget
-Initialize @code{:value} from @code{:args} in @var{widget}.
+Initialize @code{:value} from @code{(car :args)} in @var{widget}, and
+reset @code{:args}.
 @end defun
 
+@item :copy
+A method to implement deep copying of the type.  Any member of the
+widget which might be changed in place (rather than replaced) should be
+copied by this method.  (@code{widget-copy} uses @code{copy-sequence} to
+ensure that the top-level list is a copy.)  This particularly applies to
+child widgets.
+
 @item :value-to-internal
 Function to convert the value to the internal format.  The function
 takes two arguments, a widget and an external value.  It returns the
@@ -1424,8 +1444,14 @@ when the widget is created, and on any value set later with
 
 @item :create
 Function to create a widget from scratch.  The function takes one
-argument, a widget type, and creates a widget of that type, inserts it
-in the buffer, and returns a widget object.
+argument, a widget, and inserts it in the buffer.  Not normally called
+from user code.  Instead, call @code{widget-create} or related
+functions, which take a type argument, (usually) convert it to a widget,
+call the @code{:create} function to insert it in the buffer, and then
+return the (possibly converted) widget.
+
+The default, @code{widget-default-create}, is invariably appropriate.
+(None of the standard widgets specify @code{:create}.)
 
 @item :delete
 Function to delete a widget.  The function takes one argument, a widget,
@@ -1469,7 +1495,9 @@ escape sequences as well as give an error for unknown escapes.
 
 @item :action
 Function to handle user initiated events.  By default, @code{:notify}
-the parent. 
+the parent.  Actions normally do not include mere edits, but refer to
+things like invoking buttons or hitting enter in an editable field.  To
+watch for any change, redefine the @code{:notify} callback.
 
 The following predefined function can be used here:
 
@@ -1498,6 +1526,43 @@ It provides most of the functionality that is referred to as ``by
 default'' in this text. 
 @end deffn
 
+In implementing complex hierarchical widgets (@emph{e.g.}, using the
+@samp{group} widget), the following functions may be useful.
+The syntax for the @var{type} arguments to these functions is described
+in @ref{Basic Types}.
+
+@defun widget-create-child-and-convert parent type &rest args
+As a child of @var{parent}, create a widget with type @var{type} and
+value @var{value}.  @var{type} is copied, and the @code{:widget-contvert}
+method is applied to the optional keyword arguments from @var{args}.
+@end defun
+
+@defun widget-create-child parent type
+As a child of @var{parent}, create a widget with type @var{type}.
+@var{type} is copied, but no conversion method is applied.
+@end defun
+
+@defun widget-create-child-value parent type value
+As a child of @var{parent}, create a widget with type @var{type} and
+value @var{value}.  @var{type} is copied, but no conversion method is
+applied.
+@end defun
+
+@defun widget-convert type &rest args
+Convert @var{type} to a widget without inserting it in the buffer.
+The optional @var{args} are additional keyword arguments.
+
+The widget's @code{:args} property is set from the longest tail of
+@var{args} whose @samp{cdr} is not a keyword, or if that is null, from
+the longest tail of @var{type}'s @code{:args} property whose cdr is not
+a keyword.  Keyword arguments from @var{args} are set, and the
+@code{:value} property (if any) is converted from external to internal
+format.
+@end defun
+
+@code{widget-convert} is typically not called from user code; rather it
+is called implicitly through the @samp{widget-create*} functions.
+
 @node Widget Browser, Widget Minor Mode, Defining New Widgets, Top
 @comment  node-name,  next,  previous,  up
 @section Widget Browser
@@ -1554,7 +1619,7 @@ Get the item @var{widget} is assumed to toggle.@*
 This is only meaningful for radio buttons or checkboxes in a list.
 @end defun
 
-@node  Widget Wishlist,  , Utilities, Top
+@node Widget Wishlist, Widget Internals, Utilities, Top
 @comment  node-name,  next,  previous,  up
 @section Wishlist
 
@@ -1616,7 +1681,7 @@ A mailto widget.
 the field, not the end of the field itself. 
 
 @item
-Use and overlay instead of markers to delimit the widget.  Create
+Use an overlay instead of markers to delimit the widget.  Create
 accessors for the end points.
 
 @item
@@ -1627,5 +1692,35 @@ symbol, it should pop up a menu.
 
 @end itemize
 
+@node Widget Internals, , Widget Wishlist, Top
+@section Internals
+
+This (very brief!) section provides a few notes on the internal
+structure and implementation of Emacs widgets.  Avoid relying on this
+information.  (We intend to improve it, but this will take some time.)
+To the extent that it actually describes APIs, the information will be
+moved to appropriate sections of the manual in due course.
+
+@subsection The @dfn{Widget} and @dfn{Type} Structures
+
+Widgets and types are currently both implemented as lists.
+
+A symbol may be defined as a @dfn{type name} using @code{define-widget}.
+@xref{Defining New Widgets}.  A @dfn{type} is a list whose car is a
+previously defined type name, nil, or (recursively) a type.  The car is
+the @dfn{class} or parent type of the type, and properties which are not
+specified in the new type will be inherited from ancestors.  Probably
+the only type without a class should be the @code{default} type.  The
+cdr of a type is a plist whose keys are widget property keywords.
+
+A type or type name may also be referred to as an @dfn{unconverted
+widget}.
+
+A @dfn{converted widget} or @dfn{widget instance} is a list whose car is
+a type name or a type, and whose cdr is a property list.  Furthermore,
+all children of the converted widget must be converted.  Finally, in the
+process of appropriate parts of the list structure are copied to ensure
+that changes in values of one instance do not affect another's.
+
 @contents
 @bye
index ac40906..524dc3e 100644 (file)
@@ -7,7 +7,7 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2002/12/12 06:21:19 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2002/12/04 14:04:08 $
 @sp 1
 @author Tony Rossini <rossini@@biostat.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
@@ -1092,7 +1092,7 @@ XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html}
 
 Partially, as an external encoding for files, processes, and terminals.
 It does not yet support Unicode fonts @ref{Q1.3.9, Does XEmacs support
-Unicode Fonts?}
+Unicode Fonts?}.
 
 To get Unicode support, you need a Mule-enabled XEmacs.  Install
 Mule-UCS from packages in the usual way.  Put
index c12e49c..e82d418 100644 (file)
@@ -425,6 +425,13 @@ if the list is too long, the least recently used buffers are deleted
 from the list.  By default up to 6 most recently used buffers with the
 same mode are displayed on tabs in the gutter.
 
+This behavior can be altered by customizing
+@code{buffers-tab-filter-functions}.  Setting this variable to
+@code{nil} forces display of all buffers, up to
+@code{buffers-tab-max-size} (also customizable).  More complex behavior
+may be available in 3rd party libraries.  These, and some more
+rarely customized options, are in the @code{buffers-tab} Customize group.
+
 @node Inhibiting, Customizing, Gutter Basics, GUI Components
 @comment  node-name,  next,  previous,  up
 @section Inhibiting Display of GUI Components
index 53db29e..fef6391 100644 (file)
@@ -468,53 +468,63 @@ Remove all created files.
 @cindex local.rules
 @heading The Local.rules File:
 This file is used when building and installing packages from source.  In
-the top level of the CVS module, @file{xemacs-packages}, contains the
+the top level of the CVS module, @file{packages}, contains the
 file, @file{Local.rules.template}.  Simply copy that to
 @file{Local.rules} and edit it to suit your needs.
 
 These are the variables in 'Local.rules' that you will need to
-address. 
+address. Items that have default settings have those defaults shown. 
 
 @table @var
+@item XEMACS = xemacs
+If your XEmacs isn't in your path, change this.  Native MS Windows users
+should double quote this if the path has embedded spaces.
+
+@item BUILD_WITHOUT_MULE =
+Building from CVS defaults to building the Mule
+packages.  Set this to 't' if you don't want/have Mule
+
+@item XEMACS_NATIVE_NT =
+Set this to 't' if you are building on WinNT.  NT users should note that
+you still need the Cygwin environment to build the packages.
+
+@item XEMACS_INSTALLED_PACKAGES_ROOT = /usr/local/lib/xemacs
+This is the directory tree under which the installed packages go.  Under
+this directory there would normally be @file{xemacs-packages/} for
+standard (non-Mule) packages, @file{mule-packages/} for Mule packages
+(if you built XEmacs with Mule), and possibly @file{site-packages/} for
+3rd party packages that aren't distributed by XEmacs.org.
+
 @item symlink = 
 Set this to 't' if you want to do a "run in place".
 Setting this doesn't work well with 'make bindist'
 
-@item XEMACS_PACKAGES =
-This is where you set the normal packages that you
-want to install. eg:
+@item NONMULE_INSTALLED_PACKAGES_ROOT = $@{XEMACS_INSTALLED_PACKAGES_ROOT@}/xemacs-packages
+This is where the non-Mule packages are installed to.  You probably
+don't want to change this.
+
+@item MULE_INSTALLED_PACKAGES_ROOT = $@{XEMACS_INSTALLED_PACKAGES_ROOT@}/mule-packages
+This is where the Mule packages are installed to.  You probably don't
+want to change this.  Please note that @code{make bindist} does
+@emph{not} use this variable.  When doing a @code{make bindist}
+@emph{everything} goes into @var{NONMULE_INSTALLED_PACKAGES_ROOT}.
+
+@item NONMULE_PACKAGES = xemacs-packages
+This is where you set the non-Mule packages that you want to install. eg:
 @example
       XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb
 @end example
 
-@item XEMACS_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Packages
-Set this to where you want normal packages to be
-installed to.
-
-@item PACKAGE_INDEX = package-index
-If you want the package-index file to have a different
-name, change this.
-
-@item BUILD_WITHOUT_MULE =
-Building from CVS defaults to building the Mule
-packages.  Set this to 't' if you don't want/have Mule
-
-@item MULE_PACKAGES =
+@item MULE_PACKAGES = mule-packages
 Same as for 'XEMACS_PACKAGES' except you list the Mule
 packages you want to install here. eg:
 @example
       MULE_PACKAGES = mule-packages/mule-base mule-packages/skk
 @end example
 
-@item MULE_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Mule-Packages
-Set this to where you want Mule packages installed
-to.  Note:  'make bindist' does not use this variable.
-
-@item XEMACS = xemacs
-If your XEmacs isn't in your path, change this.
-
-@item XEMACS_NATIVE_NT =
-Set this to 't' if you are building on WinNT.
+@item PACKAGE_INDEX = package-index
+If you want the package-index file to have a different
+name, change this.
 
 @item INSTALL = install -c
 The path to your BSD compatible install program.
index b711a91..d13f415 100644 (file)
@@ -1,3 +1,7 @@
+2003-05-25  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.4.13 is released
+
 2003-01-15  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.12 "Portable Code" is released.
index 0a14334..8e4909d 100644 (file)
@@ -185,7 +185,7 @@ static XtResource resources[] = {
     offset (bell_volume), XtRImmediate, (XtPointer)0 },
   { XtNuseBackingStore, XtCUseBackingStore,
     XtRBoolean, sizeof (Boolean),
-    offset (use_backing_store), XtRImmediate, (XtPointer)0 },
+    offset (use_backing_store), XtRImmediate, (XtPointer) NotUseful },
   { XtNpreferredWidth, XtCPreferredWidth,
     XtRDimension, sizeof (Dimension),
     offset (preferred_width), XtRImmediate, (XtPointer)0 },
@@ -235,7 +235,7 @@ EmacsFrameClassRec emacsFrameClassRec = {
     /* resource_count          */      XtNumber (resources),
     /* xrm_class               */      NULLQUARK,
     /* compress_motion         */      TRUE,
-    /* compress_exposure       */      TRUE,
+    /* compress_exposure       */      XtExposeCompressMaximal | XtExposeNoRegion,
     /* compress_enterleave     */      TRUE,
     /* visible_interest                */      FALSE,
     /* destroy                 */      NULL,
index 377132e..5d0100b 100644 (file)
@@ -32,6 +32,31 @@ Boston, MA 02111-1307, USA.  */
 #include "EmacsFrame.h"
 
 typedef struct {
+
+#ifdef LWLIB_USES_MOTIF
+#if XmVERSION < 2
+  /* It's easy to erroneously compile with Motif 1 headers, but link
+     with Motif 2 libraries.
+
+     For example, AIX stupidly provides Motif headers in
+     /usr/dt/include, but fails to provide the corresponding libraries
+     in /usr/dt/lib.
+
+     We actually try to survive such a version mismatch, since Motif 2
+     is _almost_ binary compatible with Motif 1.  Motif 2's
+     XmPrimitivePart has some trailing data members which overlay the
+     start of this struct.  We create dummy members to make space for
+     XmPrimitivePart's added members.  These must, of course, be at
+     the beginning of this struct.
+
+     Delete this kludge when no one has Motif1 on their system anymore,
+     perhaps in 2010. */
+  XtCallbackList Motif2_dummy_convert_callback;
+  XtCallbackList Motif2_dummy_popup_handler_callback;
+  long           Motif2_dummy_layout_direction;
+#endif
+#endif
+
   struct frame*        frame;          /* the *emacs* frame object */
 
   /* Resources that can't be done from lisp.
index 800801e..c2f325b 100644 (file)
@@ -87,7 +87,7 @@ EmacsManagerClassRec emacsManagerClassRec = {
     /* num_resources      */    XtNumber(resources),
     /* xrm_class          */    NULLQUARK,
     /* compress_motion   */    TRUE,
-    /* compress_exposure  */   TRUE,
+    /* compress_exposure  */   XtExposeCompressMaximal | XtExposeNoRegion,
     /* compress_enterleave*/   TRUE,
     /* visible_interest   */    FALSE,
     /* destroy            */    NULL,
index 490530b..97be525 100644 (file)
@@ -192,9 +192,9 @@ EMACS_SHELL_CLASS_REC_TYPE EMACS_SHELL_CLASS_REC = {
     /* resources         */    resources,
     /* resource_count    */    XtNumber (resources),
     /* xrm_class         */    NULLQUARK,
-    /* compress_motion   */    FALSE,
-    /* compress_exposure  */   TRUE,
-    /* compress_enterleave*/   FALSE,
+    /* compress_motion   */    TRUE,
+    /* compress_exposure  */   XtExposeCompressMaximal | XtExposeNoRegion,
+    /* compress_enterleave*/   TRUE,
     /* visible_interest          */    TRUE,
     /* destroy           */    NULL,
     /* resize            */    XtInheritResize,
index 9a173a9..5dfc79d 100644 (file)
@@ -116,7 +116,8 @@ Dynarr_realloc (Dynarr *dy, int new_size)
   if (DUMPEDP (dy->base))
     {
       void *new_base = malloc (new_size);
-      memcpy (new_base, dy->base, dy->max > new_size ? new_size : dy->max);
+         int max_bytes = dy->max * dy->elsize;
+         memcpy (new_base, dy->base, max_bytes > new_size ? new_size : max_bytes);
       dy->base = new_base;
     }
   else
index 88c81f0..22eda2b 100644 (file)
@@ -582,7 +582,7 @@ when a dynamic module is loaded.
 */);
 
   /* #### Export this to Lisp */
-  Vmodule_extensions = build_string (":.ell:.so:.dll");
+  Vmodule_extensions = build_string (":.ell:.so:.dll:.dylib");
   staticpro (&Vmodule_extensions);
 
   load_modules_quietly = 0;
index effa87d..36a6983 100644 (file)
@@ -307,10 +307,15 @@ static void
 mswindows_set_frame_size (struct frame *f, int width, int height)
 {
   RECT rect;
+  int columns, rows;
+
   rect.left = rect.top = 0;
   rect.right = width;
   rect.bottom = height;
 
+  pixel_to_char_size (f, rect.right, rect.bottom, &columns, &rows);
+  change_frame_size (f, rows, columns, 0);
+
   AdjustWindowRectEx (&rect,
                      GetWindowLong (FRAME_MSWINDOWS_HANDLE(f), GWL_STYLE),
                      GetMenu (FRAME_MSWINDOWS_HANDLE(f)) != NULL,
index 0d57c95..af75a8e 100644 (file)
@@ -1344,7 +1344,7 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream)
       p->core_dumped = 0;
       p->tick++;
       process_tick++;
-      deactivate_process (vol_proc);
+      deactivate_process (*((Lisp_Object *) (&vol_proc)));
       invalid_operation ("SIGPIPE raised on process; closed it", p->name);
     }
 
index e61fdf3..2de582a 100644 (file)
@@ -140,11 +140,9 @@ Boston, MA 02111-1307, USA.  */
 #ifdef LINUX_ELF
 #define UNEXEC "unexelf.o"
 #define UNEXEC_USE_MAP_PRIVATE
-#if 0
-/* mrb - Ordinary link is simple and effective */
-/* slb - Not any more ... :-( */
+/* Although slb thinks ORDINARY_LINK does not work on linux, ORDINARY_LINK
+   has been enabled in 21.5 for some time with no ill effects. */
 #define ORDINARY_LINK
-#endif /* 0 */
 
 /* I still think ORDINARY_LINK should be the default, but since slb
    insists, ORDINARY_LINK will stay on until we expunge the dump code.
index 537f3d6..bc911c4 100644 (file)
@@ -24,6 +24,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 #endif
 
 #include <stdlib.h>
+#include "lisp.h"
 #include "sysdll.h"
 
 /* This whole file is conditional upon HAVE_SHLIB */
index 06e71e7..d9de182 100644 (file)
@@ -20,7 +20,7 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: Not in FSF. */
 
-/* #pragma ident "@(#) $Id: unexsol2.c,v 1.3 1997/10/13 03:35:33 steve Exp $" */
+/* #pragma ident "@(#) $Id: unexsol2.c,v 1.2 1995/01/25 20:39:16 georgn Exp $" */
 
 #include <stdlib.h>
 #include <stdio.h>
index 86836de..41d75f7 100644 (file)
@@ -26,4 +26,8 @@ Boston, MA 02111-1307, USA.  */
 #include <X11/IntrinsicP.h>
 #include <X11/ObjectP.h>     /* apparently some IntrinsicP.h don't have this */
 
+#ifndef XtExposeNoRegion
+#define XtExposeNoRegion 0
+#endif
+
 #endif /* INCLUDED_xintrinsicp_h_ */
index a3aeca8..d42766f 100644 (file)
@@ -1,3 +1,7 @@
+2003-05-25  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.4.13 is released
+
 2003-01-15  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.12 "Portable Code" is released.
index 5b6ebaf..73fefe3 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=
 emacs_major_version=21
 emacs_minor_version=4
-emacs_beta_version=12
-xemacs_codename="Portable Code"
+emacs_beta_version=13
+xemacs_codename="Rational FORTRAN"
 emacs_kit_version=
 infodock_major_version=4
 infodock_minor_version=0