DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T U

⟦fada67452⟧ TextFile

    Length: 171981 (0x29fcd)
    Types: TextFile
    Notes: Uncompressed file

Derivation

└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
    └─⟦13dc9d304⟧ »./emacs-18.53-18.54.Z« 
        └─⟦this⟧ 

TextFile

Changes for GNU Emacs version 18.54, from 18.53
Changes in .elc files, info files and tag tables have been omitted,
as have been changed in files generated by running Tex.

The file `src/m-news800.h' should be deleted.  These diffs create a
new file `src/m-news.h' which replaces that file.

After installing these diffs, run M-x byte-recompile-directory on the
`lisp' subdirectory before you recompile and rebuild Emacs.
Otherwise, the changes in Lisp files may not take effect.

We recommend that you use M-x texinfo-format-buffer to reformat the
file `man/termcap.texinfo' into the corresponding info file.  That
info file was invalidly formatted in 18.53.

diff -rc2N dist-18.53/INSTALL dist-18.54/INSTALL
*** dist-18.53/INSTALL	Mon Jun 27 22:18:44 1988
--- dist-18.54/INSTALL	Fri Apr  7 20:37:28 1989
***************
*** 158,627 ****
  
  
! LOSSAGES
! Known possible problems building and running GNU Emacs
! 
! * Watch out for .emacs files and EMACSLOADPATH environment vars
! 
! These control the actions of Emacs.
! ~/.emacs is your Emacs init file.
! EMACSLOADPATH overrides which directories the function
! "load" will search.
! 
! If you observe strange problems, check for these and get rid
! of them, then try again.
! 
! * Fatal signal in the command  temacs -l loadup inc dump
! 
! This has been known to happen due to insufficient swapping
! space available on the machine.
! 
! On 68000's, it has also happened because of bugs in the
! subroutine `alloca'.  Verify that `alloca' works right, even
! for large blocks (many pages).
! 
! * test-distrib says that the distribution has been clobbered
! * or, temacs prints "Command key out of range 0-127"
! * or, temacs runs and dumps xemacs, but xemacs totally fails to work.
! * or, temacs gets errors dumping xemacs
! 
! This can be because the .elc files have been garbled.  Do not be
! fooled by the fact that most of a .elc file is text: these are
! binary files and can contain all 256 byte values.
! 
! In particular `shar' cannot be used for transmitting GNU Emacs.
! It typically truncates "lines".  What appear to be "lines" in
! a binary file can of course be of any length.  Even once `shar'
! itself is made to work correctly, `sh' discards null characters
! when unpacking the shell archive.
! 
! I have also seen character \177 changed into \377.  I do not know
! what transfer means caused this problem.  Various network
! file transfer programs are suspected of clobbering the high bit.
! 
! The only verified ways to transfer GNU Emacs are `tar'
! and rcp or internet ftp between two Unix systems, or chaosnet
! cftp using raw mode.
! 
! If you have a copy of Emacs that has been damaged in its
! nonprinting characters, you can fix them:
! 
!  1) Record the names of all the .elc files.
!  2) Delete all the .elc files.
!  3) Recompile alloc.c with a value of PURESIZE twice as large.
!      You might as well save the old alloc.o.
!  4) Remake xemacs.  It should work now.
!  5) Running xemacs, do Meta-x byte-compile-file repeatedly
!   to recreate all the .elc files that used to exist.
!  6) Reinstall the old alloc.o (undoing changes to alloc.c if any)
!   and remake temacs.
!  7) Remake xemacs.  It should work now, with valid .elc files.
! 
! * temacs prints "Pure Lisp storage exhausted"
! 
! This means that the Lisp code loaded from the .elc and .el
! files during  temacs -l loadup inc dump  took up more
! space than was allocated.
! 
! This could be happen if you did any of these things
!  1) adding code to the preloaded Lisp files
!  2) adding more preloaded files in loadup.el
!  3) having a site-init.el or site-load.el which loads files.
!    Note that ANY site-init.el or site-load.el is nonstandard;
!    if you have received Emacs from some other site
!    and it contains such a file, consider deleting it
!    as a fix for this problem.
!  4) getting the wrong .el or .elc files
!    (not from the directory you expected).
!  5) deleting some .elc files that are supposed to exist.
!    This would cause the source files (.el files) to be
!    loaded instead.  They take up more room, so you lose.
!  6) a bug in the Emacs distribution which underestimates
!    the space required.
! 
! If the need for more space is legitimate, change the definition
! of PURESIZE in config.h.
! 
! But in some of the cases listed above, this problem is a consequence
! of something else that is wrong.  Be sure to check and fix the real
! problem.
! 
! * Changes made to .el files do not take effect.
! 
! You may have forgotten to recompile them into .elc files.
! Then the old .elc files will be loaded, and your changes
! will not be seen.  To fix this, do M-x byte-recompile-directory
! and specify the directory that contains the Lisp files.
! 
! * The dumped Emacs (xemacs) crashes when run, trying to write pure data.
! 
! Two causes have been seen for such problems.
! 
! 1) On a system where getpagesize is not a system call, it is defined
! as a macro.  If the definition (in both unexec.c and malloc.c) is wrong,
! it can cause problems like this.  You might be able to find the correct
! value in the man page for a.out (5).
! 
! 2) Some systems allocate variables declared static among the
! initialized variables.  Emacs makes all initialized variables in most
! of its files pure after dumping, but the variables declared static and
! not initialized are not supposed to be pure.  On these systems you
! may need to add "#define static" to the m- or the s- file.
! 
! * rmail gets error getting new mail
! 
! rmail gets new mail from /usr/spool/mail/$USER using a program
! called movemail.  This program interlocks with /bin/mail using
! the protocol defined by /bin/mail, which involves creating a
! lock file.  It must be able to write in /usr/spool/mail
! in order to do this.
! 
! You may have to change config.h to #define MAIL_USE_FLOCK
! if your system is configured to use flock to interlock
! access to mail files.
! 
! * Emacs spontaneously displays "I-search: " at the bottom of the screen.
! 
! This means that Control-S/Control-Q "flow control" is being used.
! C-s/C-q flow control is bad for Emacs editors because it takes away
! C-s and C-q as user commands.  Since editors do not output long streams
! of text without user commands, there is no need for a user-issuable
! "stop output" command in an editor; therefore, a properly designed
! flow control mechanism would transmit all possible input characters
! without interference.  Designing such a mechanism is easy, for a person
! with at least half a brain.
! 
! There are three possible reasons why flow control could be taking place:
! 
!   1) Terminal has not been told to disable flow control
!   2) Insufficient padding for the terminal in use
!   3) Some sort of terminal concentrator or line switch is responsible
! 
! First of all, many terminals have a set-up mode which controls
! whether they generate flow control characters.  This must be
! set to "no flow control" in order for Emacs to work.  Sometimes
! there is an escape sequence that the computer can send to turn
! flow control off and on.  If so, perhaps the termcap `ti' string
! should turn flow control off, and the `te' string should turn it on.
! 
! Once the terminal has been told "no flow control", you may find it
! needs more padding.  The amount of padding Emacs sends is controlled
! by the termcap entry for the terminal in use, and by the output baud
! rate as known by the kernel.  The shell command `stty' will print
! your output baud rate; `stty' with suitable arguments will set it if
! it is wrong.  Setting to a higher speed causes increased padding.  If
! the results are wrong for the correct speed, there is probably a
! problem in the termcap entry.  You must speak to a local Unix wizard
! to fix this.  Perhaps you are just using the wrong terminal type.
! 
! For terminals that lack a "no flow control" mode, sometimes just
! giving lots of padding will prevent actual generation of flow control
! codes.  You might as well try it.
! 
! If you are really unlucky, your terminal is connected to the computer
! through a concentrator which sends flow control to the computer, or it
! insists on sending flow control itself no matter how much padding you
! give it.  You are screwed!  You should replace the terminal or
! concentrator with a properly designed one.  In the mean time,
! some drastic measures can make Emacs semi-work.
! 
! One drastic measure to ignore C-s and C-q, while sending enough
! padding that the terminal will not really lose any output.
! Ignoring C-s and C-q can be done by using keyboard-translate-table
! to map them into an undefined character such as C-^ or C-\.  Sending
! lots of padding is done by changing the termcap entry.
! 
! An even more drastic measure is to make Emacs understand flow control.
! Do (set-input-mode nil t).  Emacs will then interpret C-s and C-q as
! flow control commands.  You will lose the ability to use them for
! Emacs commands.  Also, as a consequence of using CBREAK mode, the
! terminal's Meta-key, if any, will not work, and C-g will be liable to
! cause a loss of output which will produce garbage on the screen.  You
! can use keyboard-translate-table to map two other input characters
! (such as C-^ and C-\) into C-s and C-q, so that you can still search
! and quote.
! 
! I have no intention of ever redisigning the Emacs command set for
! the assumption that terminals use C-s/C-q flow control.  This
! flow control technique is a bad design, and terminals that need
! it are bad merchandise and should not be purchased.  If you can
! get some use out of GNU Emacs on inferior terminals, I am glad,
! but I will not make Emacs worse for properly designed systems
! for the sake of inferior systems.
! 
! * Control-S and Control-Q commands are ignored completely.
! 
! For some reason, your system is using brain-damaged ^S/^Q flow
! control despite Emacs's attempts to turn it off.  Perhaps your
! terminal is connected to the computer through a concentrator
! that wants to use flow control.
! 
! You should first try to tell the concentrator not to use flow control.
! If you succeed in this, try making the terminal work without
! flow control, as described in the preceding section.
! 
! If that line of approach is not successful, map some other characters
! into C-s and C-q using keyboard-translate-table.  I suggest C-^ and
! C-\.
! 
! * Screen is updated wrong, but only on one kind of terminal.
! 
! This could mean that the termcap entry you are using for that
! terminal is wrong, or it could mean that Emacs has a bug handing
! the combination of features specified for that terminal.
! 
! The first step in tracking this down is to record what characters
! Emacs is sending to the terminal.  Execute the Lisp expression
! (open-termscript "./emacs-script") to make Emacs write all
! terminal output into the file ~/emacs-script as well; then do
! what makes the screen update wrong, and look at the file
! and decode the characters using the manual for the terminal.
! There are several possibilities:
! 
! 1) The characters sent are correct, according to the terminal manual.
! 
! In this case, there is no obvious bug in Emacs, and most likely you
! need more padding, or possibly the terminal manual is wrong.
! 
! 2) The characters sent are incorrect, due to an obscure aspect
!  of the terminal behavior not described in an obvious way
!  by termcap.
! 
! This case is hard.  It will be necessary to think of a way for
! Emacs to distinguish between terminals with this kind of behavior
! and other terminals that behave subtly differently but are
! classified the same by termcap; or else find an algorithm for
! Emacs to use that avoids the difference.  Such changes must be
! tested on many kinds of terminals.
! 
! 3) The termcap entry is wrong.
! 
! See the file TERMS in this directory for information on changes
! that are known to be needed in commonly used termcap entries
! for certain terminals.
! 
! 4) The characters sent are incorrect, and clearly cannot be
!  right for any terminal with the termcap entry you were using.
! 
! This is unambiguously an Emacs bug, and can probably be fixed
! in termcap.c, tparam.c, term.c, scroll.c, cm.c or dispnew.c.
! 
! * Output from Control-V is slow.
! 
! On many bit-map terminals, scrolling operations are fairly slow.
! Often the termcap entry for the type of terminal in use fails
! to inform Emacs of this.  The two lines at the bottom of the screen
! before a Control-V command are supposed to appear at the top after
! the Control-V command.  If Emacs thinks scrolling the lines is fast,
! it will scroll them to the top of the screen.
! 
! If scrolling is slow but Emacs thinks it is fast, the usual reason is
! that the termcap entry for the terminal you are using does not
! specify any padding time for the `al' and `dl' strings.  Emacs
! concludes that these operations take only as much time as it takes to
! send the commands at whatever line speed you are using.  You must
! fix the termcap entry to specify, for the `al' and `dl', as much
! time as the operations really take.
! 
! Currently Emacs thinks in terms of serial lines which send characters
! at a fixed rate, so that any operation which takes time for the
! terminal to execute must also be padded.  With bit-map terminals
! operated across networks, often the network provides some sort of
! flow control so that padding is never needed no matter how slow
! an operation is.  You must still specify a padding time if you want
! Emacs to realize that the operation takes a long time.  This will
! cause padding characters to be sent unnecessarily, but they do
! not really cost much.  They will be transmitted while the scrolling
! is happening and then discarded quickly by the terminal.
! 
! Most bit-map terminals provide commands for inserting or deleting
! multiple lines at once.  Define the `AL' and `DL' strings in the
! termcap entry to say how to do these things, and you will have
! fast output without wasted padding characters.  These strings should
! each contain a single %-spec saying how to send the number of lines
! to be scrolled.  These %-specs are like those in the termcap
! `cm' string.
! 
! You should also define the `IC' and `DC' strings if your terminal
! has a command to insert or delete multiple characters.  These
! take the number of positions to insert or delete as an argument.
! 
! A `cs' string to set the scrolling region will reduce the amount
! of motion you see on the screen when part of the screen is scrolled.
! 
! * You type Control-H (Backspace) expecting to delete characters.
! 
! Put `stty dec' in your .login file and your problems will disappear
! after a day or two.
! 
! The choice of Backspace for erasure was based on confusion, caused by
! the fact that backspacing causes erasure (later, when you type another
! character) on most display terminals.  But it is a mistake.  Deletion
! of text is not the same thing as backspacing followed by failure to
! overprint.  I do not wish to propagate this confusion by conforming
! to it.
! 
! For this reason, I believe `stty dec' is the right mode to use,
! and I have designed Emacs to go with that.  If there were a thousand
! other control characters, I would define Control-h to delete as well;
! but there are not very many other control characters, and I think
! that providing the most mnemonic possible Help character is more
! important than adapting to people who don't use `stty dec'.
! 
! If you are obstinate about confusing buggy overprinting with deletion,
! you can redefine Backspace in your .emacs file:
!   (global-set-key "\b" 'delete-backward-char)
! You may then wish to put the function  help-command  on some
! other key.  I leave to you the task of deciding which key.
! 
! * Editing files through RFS gives spurious "file has changed" warnings.
! It is possible that a change in Emacs 18.37 gets around this problem,
! but in case not, here is a description of how to fix the RFS bug that
! causes it.
! 
! Date: Wed, 28 Jan 87 15:18:40 EST
! From: Bill Sommerfeld <wesommer@athena.mit.edu>
! Sender: wesommer@athena.mit.edu
! To: toddb%crl.tek.csnet@relay.cs.net
! Cc: bug-rfs, bug-gnu-emacs@prep.ai.mit.edu
! Subject: Bug in RFS server (fsync())
! 
! There was a serious pair of bugs in the handling of the fsync() system
! call in the RFS server.
! 
! The first is that the fsync() call is handled as another name for the
! close() system call (!!).  It appears that fsync() is not used by very
! many programs; Emacs version 18 does an fsync() before closing files
! to make sure that the bits are on the disk.
! 
! This is fixed by the enclosed patch to the RFS server.
! 
! The second, more serious problem, is that fsync() is treated as a
! non-blocking system call (i.e., it's implemented as a message that
! gets sent to the remote system without waiting for a reply).  Fsync is
! a useful tool for building atomic file transactions.  Implementing it
! as a non-blocking RPC call (when the local call blocks until the sync
! is done) is a bad idea; unfortunately, changing it will break the RFS
! protocol.  Any suggestions?
! 
! 					Bill Sommerfeld
! 					MIT Project Athena
! 
! (as always, your line numbers may vary)
! 
! % rcsdiff -c -r1.2 serversyscall.c
! RCS file: RCS/serversyscall.c,v
! retrieving revision 1.2
! diff -c -r1.2 serversyscall.c
! *** /tmp/,RCSt1003677   Wed Jan 28 15:15:02 1987
! --- serversyscall.c     Wed Jan 28 15:14:48 1987
! ***************
! *** 163,169 ****
!         /*
!          * No return sent for close or fsync!
!          */
! !       if (syscall == RSYS_close || syscall == RSYS_fsync)
!                 proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
!         else
!         {
! --- 166,172 ----
!         /*
!          * No return sent for close or fsync!
!          */
! !       if (syscall == RSYS_close)
!                 proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
!         else
!         {
! 
! * ld complains because `alloca' is not defined on your system.
! 
! Alloca is a library function in 4.2bsd, which is used very heavily by
! GNU Emacs.  Use of malloc instead is very difficult, as you would have
! to arrange for the storage to be freed, and do so even in the case of
! a longjmp happening inside a subroutine.  Many subroutines in Emacs
! can do longjmp.
! 
! If your system does not support alloca, try defining the symbol
! C_ALLOCA in the m-...h file for that machine.  This will enable the use
! in Emacs of a portable simulation for alloca.  But you will find that
! Emacs's performance and memory use improve if you write a true
! alloca in assembler language.
! 
! alloca (N) should return the address of an N-byte block of memory
! added dynamically to the current stack frame.
! 
! * Vax C compiler bugs affecting Emacs.
! 
! You may get one of these problems compiling Emacs:
! 
!    foo.c line nnn: compiler error: no table entry for op STASG
!    foo.c: fatal error in /lib/ccom
! 
! These are due to bugs in the C compiler; the code is valid C.
! Unfortunately, the bugs are unpredictable: the same construct
! may compile properly or trigger one of these bugs, depending
! on what else is in the source file being compiled.  Even changes
! in header files that should not affect the file being compiled
! can affect whether the bug happens.  In addition, sometimes files
! that compile correctly on one machine get this bug on another machine.
! 
! As a result, it is hard for me to make sure this bug will not affect
! you.  I have attempted to find and alter these constructs, but more
! can always appear.  However, I can tell you how to deal with it if it
! should happen.  The bug comes from having an indexed reference to an
! array of Lisp_Objects, as an argument in a function call:
!   Lisp_Object *args;
!   ...
!    ... foo (5, args[i], ...)...
! putting the argument into a temporary variable first, as in
!   Lisp_Object *args;
!   Lisp_Object tem;
!   ...
!    tem = args[i];
!    ... foo (r, tem, ...)...
! causes the problem to go away.
! The `contents' field of a Lisp vector is an array of Lisp_Objects,
! so you may see the problem happening with indexed references to that.
! 
! * 68000 C compiler problems
! 
! Various 68000 compilers have different problems.
! These are some that have been observed.
! 
! ** Using value of assignment expression on union type loses.
! This means that  x = y = z;  or  foo (x = z);  does not work
! if x is of type Lisp_Object.
! 
! ** "cannot reclaim" error.
! 
! This means that an expression is too complicated.  You get the correct
! line number in the error message.  The code must be rewritten with
! simpler expressions.
! 
! ** XCONS, XSTRING, etc macros produce incorrect code.
! 
! If temacs fails to run at all, this may be the cause.
! Compile this test program and look at the assembler code:
! 
! struct foo { char x; unsigned int y : 24; };
! 
! lose (arg)
!      struct foo arg;
! {
!   test ((int *) arg.y);
! }
! 
! If the code is incorrect, your compiler has this problem.
! In the XCONS, etc., macros in lisp.h you must replace (a).u.val with
! ((a).u.val + coercedummy) where coercedummy is declared as int.
! 
! This problem will not happen if the m-...h file for your type
! of machine defines NO_UNION_TYPE.  That is the recommended setting now.
! 
! * C compilers lose on returning unions
! 
! I hear that some C compilers cannot handle returning
! a union type.  Most of the functions in GNU Emacs return
! type Lisp_Object, which is currently defined as a union.
! 
! This problem will not happen if the m-...h file for your type
! of machine defines NO_UNION_TYPE.  That is the recommended setting now.
--- 158,161 ----
  
  
! See the file PROBLEMS in this directory for a list of various
! problems sometimes encountered, and what to do about them.
diff -rc2N dist-18.53/PROBLEMS dist-18.54/PROBLEMS
*** dist-18.53/PROBLEMS	Sun Jul 24 04:48:20 1988
--- dist-18.54/PROBLEMS	Mon Apr 10 23:18:20 1989
***************
*** 73,80 ****
   1) adding code to the preloaded Lisp files
   2) adding more preloaded files in loadup.el
!  3) having a site-init.el which loads files.
!    Note that ANY site-init.el is nonstandard;
     if you have received Emacs from some other site
!    and it contains a site-init.el file, consider
     deleting that file.
   4) getting the wrong .el or .elc files
--- 73,80 ----
   1) adding code to the preloaded Lisp files
   2) adding more preloaded files in loadup.el
!  3) having a site-init.el or site-load.el which loads files.
!    Note that ANY site-init.el or site-load.el is nonstandard;
     if you have received Emacs from some other site
!    and it contains a site-init.el or site-load.el file, consider
     deleting that file.
   4) getting the wrong .el or .elc files
***************
*** 83,87 ****
--- 83,96 ----
     This would cause the source files (.el files) to be
     loaded instead.  They take up more room, so you lose.
+  6) a bug in the Emacs distribution which underestimates
+    the space required.
  
+ If the need for more space is legitimate, change the definition
+ of PURESIZE in config.h.
+ 
+ But in some of the cases listed above, this problem is a consequence
+ of something else that is wrong.  Be sure to check and fix the real
+ problem.
+ 
  * Changes made to .el files do not take effect.
  
***************
*** 128,139 ****
  
  rmail gets new mail from /usr/spool/mail/$USER using a program
! called movemail.  This program interlocks with /bin/mail using
! the protocol defined by /bin/mail, which involves creating a
! lock file.  It must be able to write in /usr/spool/mail
! in order to do this.
  
! You may have to change config.h to #define MAIL_USE_FLOCK
! if your system is configured to use flock to interlock
! access to mail files.
  
  * Emacs spontaneously displays "I-search: " at the bottom of the screen.
--- 137,173 ----
  
  rmail gets new mail from /usr/spool/mail/$USER using a program
! called `movemail'.  This program interlocks with /bin/mail using
! the protocol defined by /bin/mail.
! 
! There are two different protocols in general use.  One of them uses
! the `flock' system call.  The other involves creating a lock file;
! `movemail' must be able to write in /usr/spool/mail in order to do
! this.  You control which one is used by defining, or not defining,
! the macro MAIL_USE_FLOCK in config.h or the m- or s- file it includes.
! IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
! SYSTEM, YOU CAN LOSE MAIL!
! 
! If your system uses the lock file protocol, and fascist restrictions
! prevent ordinary users from writing the lock files in /usr/spool/mail,
! you may need to make `movemail' setgid to a suitable group such as
! `mail'.
! 
! * Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0.
! 
! Some people have found that Emacs was unable to connect to the local
! host by name, as in DISPLAY=prep:0 if you are running on prep, but
! could handle DISPLAY=unix:0.  Here is what tale@rpi.edu said:
! 
!       Seems as
!     though gethostbyname was bombing somewhere along the way.  Well, we
!     had just upgrade from SunOS 3.5 (which X11 was built under) to SunOS
!     4.0.1.  Any new X applications which tried to be built with the pre
!     OS-upgrade libraries had the same problems which Emacs was having.
!     Missing /etc/resolv.conf for a little while (when one of the libraries
!     was built?) also might have had a hand in it.
  
!     The result of all of this (with some speculation) was that we rebuilt
!     X and then rebuilt Emacs with the new libraries.  Works as it should
!     now.  Hoorah.
  
  * Emacs spontaneously displays "I-search: " at the bottom of the screen.
***************
*** 348,351 ****
--- 382,444 ----
  You may then wish to put the function  help-command  on some
  other key.  I leave to you the task of deciding which key.
+ 
+ * Editing files through RFS gives spurious "file has changed" warnings.
+ It is possible that a change in Emacs 18.37 gets around this problem,
+ but in case not, here is a description of how to fix the RFS bug that
+ causes it.
+ 
+     Date: Wed, 28 Jan 87 15:18:40 EST
+     From: Bill Sommerfeld <wesommer@athena.mit.edu>
+     Sender: wesommer@athena.mit.edu
+     To: toddb%crl.tek.csnet@relay.cs.net
+     Cc: bug-rfs, bug-gnu-emacs@prep.ai.mit.edu
+     Subject: Bug in RFS server (fsync())
+ 
+     There was a serious pair of bugs in the handling of the fsync() system
+     call in the RFS server.
+ 
+     The first is that the fsync() call is handled as another name for the
+     close() system call (!!).  It appears that fsync() is not used by very
+     many programs; Emacs version 18 does an fsync() before closing files
+     to make sure that the bits are on the disk.
+ 
+     This is fixed by the enclosed patch to the RFS server.
+ 
+     The second, more serious problem, is that fsync() is treated as a
+     non-blocking system call (i.e., it's implemented as a message that
+     gets sent to the remote system without waiting for a reply).  Fsync is
+     a useful tool for building atomic file transactions.  Implementing it
+     as a non-blocking RPC call (when the local call blocks until the sync
+     is done) is a bad idea; unfortunately, changing it will break the RFS
+     protocol.  Any suggestions?
+ 
+ 					    Bill Sommerfeld
+ 					    MIT Project Athena
+ 
+     (as always, your line numbers may vary)
+ 
+     % rcsdiff -c -r1.2 serversyscall.c
+     RCS file: RCS/serversyscall.c,v
+     retrieving revision 1.2
+     diff -c -r1.2 serversyscall.c
+     *** /tmp/,RCSt1003677   Wed Jan 28 15:15:02 1987
+     --- serversyscall.c     Wed Jan 28 15:14:48 1987
+     ***************
+     *** 163,169 ****
+ 	    /*
+ 	     * No return sent for close or fsync!
+ 	     */
+     !       if (syscall == RSYS_close || syscall == RSYS_fsync)
+ 		    proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
+ 	    else
+ 	    {
+     --- 166,172 ----
+ 	    /*
+ 	     * No return sent for close or fsync!
+ 	     */
+     !       if (syscall == RSYS_close)
+ 		    proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
+ 	    else
+ 	    {
  
  * ld complains because `alloca' is not defined on your system.
diff -rc2N dist-18.53/dir.list dist-18.54/dir.list
*** dist-18.53/dir.list	Fri Feb 24 08:40:41 1989
--- dist-18.54/dir.list	Wed Apr 26 22:41:58 1989
***************
*** 1,7 ****
! total 182
  -rw-rw-rw-  1 rms           481 Aug 30 13:43 ChangeLog
! -rw-rw-rw-  1 rms         26479 Jun 27 22:18 INSTALL
  -rw-rw-rw-  1 rms          3306 Aug 30 13:43 Makefile
! -rw-rw-rw-  1 rms         19264 Jul 24 04:48 PROBLEMS
  -rw-rw-rw-  1 rms          2030 Jul 18  1987 README
  -rw-rw-rw-  1 rms          4896 Jan 26  1988 VMSINSTALL
--- 1,7 ----
! total 152
  -rw-rw-rw-  1 rms           481 Aug 30 13:43 ChangeLog
! -rw-rw-rw-  1 rms          6656 Apr  7 20:37 INSTALL
  -rw-rw-rw-  1 rms          3306 Aug 30 13:43 Makefile
! -rw-rw-rw-  1 rms         23083 Apr 10 23:18 PROBLEMS
  -rw-rw-rw-  1 rms          2030 Jul 18  1987 README
  -rw-rw-rw-  1 rms          4896 Jan 26  1988 VMSINSTALL
***************
*** 9,16 ****
  -rw-rw-rw-  1 rms          1412 Jun 15  1987 allrename.com
  -rw-rw-rw-  1 rms           665 Mar 18  1988 build-install
! -rw-rw-rw-  1 rms             0 Feb 24 08:40 dir.list
  -rw-rw-rw-  1 rms           962 Jun 10  1987 emacs.com
! -rw-rw-rw-  1 rms          2489 May  6 13:55 kepteditor.com
! -rw-rw-rw-  1 rms          2176 May 16 21:31 vmsdist.com
  
  ./cpp:
--- 9,16 ----
  -rw-rw-rw-  1 rms          1412 Jun 15  1987 allrename.com
  -rw-rw-rw-  1 rms           665 Mar 18  1988 build-install
! -rw-rw-rw-  1 rms             0 Apr 26 22:41 dir.list
  -rw-rw-rw-  1 rms           962 Jun 10  1987 emacs.com
! -rw-rw-rw-  1 rms          2489 May  6  1988 kepteditor.com
! -rw-rw-rw-  1 rms          2176 May 16  1988 vmsdist.com
  
  ./cpp:
***************
*** 21,25 ****
  
  ./etc:
! total 1866
  -rw-rw-rw-  1 rms          1913 Mar 18  1988 3B-MAXMEM
  -rw-rw-rw-  1 rms          1836 Jul 16  1986 APOLLO
--- 21,25 ----
  
  ./etc:
! total 1882
  -rw-rw-rw-  1 rms          1913 Mar 18  1988 3B-MAXMEM
  -rw-rw-rw-  1 rms          1836 Jul 16  1986 APOLLO
***************
*** 28,35 ****
  -rw-rw-rw-  1 rms          4975 Nov 10  1986 COOKIES
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
! -rw-rw-rw-  1 rms          3973 Feb 21 12:59 ChangeLog
  -rw-rw-rw-  1 rms          4286 Sep 29  1986 DEBUG
  -rw-rw-rw-  1 rms         30529 Aug 17 10:05 DIFF
! -rw-rw-rw-  1 rms          7854 Aug 17 10:07 DISTRIB
  -rw-rw-rw-  1 rms          8350 Sep  7 07:48 FTP
  -rw-rw-rw-  1 rms         23947 Feb 22  1987 GNU
--- 28,35 ----
  -rw-rw-rw-  1 rms          4975 Nov 10  1986 COOKIES
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
! -rw-rw-rw-  1 rms          4366 Apr 18 21:32 ChangeLog
  -rw-rw-rw-  1 rms          4286 Sep 29  1986 DEBUG
  -rw-rw-rw-  1 rms         30529 Aug 17 10:05 DIFF
! -rw-rw-rw-  1 rms          8763 Feb 24 10:06 DISTRIB
  -rw-rw-rw-  1 rms          8350 Sep  7 07:48 FTP
  -rw-rw-rw-  1 rms         23947 Feb 22  1987 GNU
***************
*** 37,44 ****
  -rw-rw-rw-  1 rms         24529 Sep 16  1987 INTERVIEW
  -rw-rw-rw-  1 rms          3048 Apr 17  1985 LEDIT
! -rw-rw-rw-  1 rms         18016 Feb 24 06:43 MACHINES
! -rw-rw-rw-  1 rms         10252 Aug 16 20:13 MAILINGLISTS
  -rw-rw-rw-  1 rms          8791 Jun 28  1987 MOTIVATION
! -rw-rw-rw-  1 rms          2028 Jun 16 08:00 Makefile
  -rw-rw-rw-  1 rms         63433 Aug 22 13:38 NEWS
  -rw-rw-rw-  1 rms         51193 May  6  1986 ONEWS
--- 37,44 ----
  -rw-rw-rw-  1 rms         24529 Sep 16  1987 INTERVIEW
  -rw-rw-rw-  1 rms          3048 Apr 17  1985 LEDIT
! -rw-rw-rw-  1 rms         18736 Apr 25 22:06 MACHINES
! -rw-rw-rw-  1 rms         13817 Feb 24 10:07 MAILINGLISTS
  -rw-rw-rw-  1 rms          8791 Jun 28  1987 MOTIVATION
! -rw-rw-rw-  1 rms          2084 Apr 17 19:34 Makefile
  -rw-rw-rw-  1 rms         63433 Aug 22 13:38 NEWS
  -rw-rw-rw-  1 rms         51193 May  6  1986 ONEWS
***************
*** 47,55 ****
  -rw-rw-rw-  1 rms           272 Sep 14  1986 README
  -rw-rw-rw-  1 rms         16033 Sep  3 11:18 SERVICE
! -rw-rw-rw-  1 rms          8191 May 25  1987 SUN-SUPPORT
  -rw-rw-rw-  1 rms          1900 Aug 31 18:39 SUNBUG
  -rw-rw-rw-  1 rms          6359 Apr 13  1988 TERMS
! -rw-rw-rw-  1 rms           976 May  6 14:41 TO-DO
! -rw-rw-rw-  1 rms         33852 May 19 13:16 TUTORIAL
  -rw-rw-rw-  1 rms         17843 Oct 10  1986 XDOC
  -rw-rw-rw-  1 rms          7042 Aug  5 17:48 XENIX
--- 47,55 ----
  -rw-rw-rw-  1 rms           272 Sep 14  1986 README
  -rw-rw-rw-  1 rms         16033 Sep  3 11:18 SERVICE
! -rw-rw-rw-  1 rms          8155 Mar 15 23:45 SUN-SUPPORT
  -rw-rw-rw-  1 rms          1900 Aug 31 18:39 SUNBUG
  -rw-rw-rw-  1 rms          6359 Apr 13  1988 TERMS
! -rw-rw-rw-  1 rms           976 May  6  1988 TO-DO
! -rw-rw-rw-  1 rms         33852 May 19  1988 TUTORIAL
  -rw-rw-rw-  1 rms         17843 Oct 10  1986 XDOC
  -rw-rw-rw-  1 rms          7042 Aug  5 17:48 XENIX
***************
*** 61,77 ****
  -rw-rw-rw-  1 rms          3392 Nov 10  1986 echo.msg
  -rw-rw-rw-  1 rms         13944 Sep 17  1987 emacs.1
! -rw-rw-rw-  1 rms          1933 Mar 13  1987 emacs.icon
  -rw-rw-rw-  1 rms          6901 Mar  7  1986 emacs.names
  -rw-rw-rw-  1 rms          4867 Dec 28 23:16 emacsclient.c
! -rw-rw-rw-  1 rms          4349 Mar 19  1987 emacstool.1
! -rw-rw-rw-  1 rms          9900 May 17  1987 emacstool.c
  -rw-rw-rw-  1 rms         11999 Feb 11  1988 env.c
! -rw-rw-rw-  1 rms          5687 Jun 14 04:25 etags-vmslib.c
! -rw-rw-rw-  1 rms         36944 Jun 23 08:45 etags.c
! -rw-rw-rw-  1 rms           599 Jun 14 22:23 etags.vms
  -rw-rw-rw-  1 rms         13370 Apr 28  1988 fakemail.c
  -rw-rw-rw-  1 rms          4842 Apr 17  1985 ledit.l
  -rw-rw-rw-  1 rms           427 Apr 17  1985 leditcfns.c
! -rw-rw-rw-  1 rms          7474 Jun  8 08:19 loadst.c
  -rw-rw-rw-  1 rms         11485 Aug 14  1987 make-docfile.c
  -rw-rw-rw-  1 rms          1998 Mar 15  1987 makedoc.com
--- 61,77 ----
  -rw-rw-rw-  1 rms          3392 Nov 10  1986 echo.msg
  -rw-rw-rw-  1 rms         13944 Sep 17  1987 emacs.1
! -rw-rw-rw-  1 rms          1933 Mar 16 17:46 emacs.icon
  -rw-rw-rw-  1 rms          6901 Mar  7  1986 emacs.names
  -rw-rw-rw-  1 rms          4867 Dec 28 23:16 emacsclient.c
! -rw-rw-rw-  1 rms          4944 Mar 15 23:43 emacstool.1
! -rw-rw-rw-  1 rms         10807 Mar 15 23:34 emacstool.c
  -rw-rw-rw-  1 rms         11999 Feb 11  1988 env.c
! -rw-rw-rw-  1 rms          5687 Jun 14  1988 etags-vmslib.c
! -rw-rw-rw-  1 rms         36944 Jun 23  1988 etags.c
! -rw-rw-rw-  1 rms           599 Jun 14  1988 etags.vms
  -rw-rw-rw-  1 rms         13370 Apr 28  1988 fakemail.c
  -rw-rw-rw-  1 rms          4842 Apr 17  1985 ledit.l
  -rw-rw-rw-  1 rms           427 Apr 17  1985 leditcfns.c
! -rw-rw-rw-  1 rms          7669 Apr 18 21:24 loadst.c
  -rw-rw-rw-  1 rms         11485 Aug 14  1987 make-docfile.c
  -rw-rw-rw-  1 rms          1998 Mar 15  1987 makedoc.com
***************
*** 81,87 ****
  -rw-rw-rw-  1 rms          7362 Jul 12 22:07 server.c
  -rw-rw-rw-  1 rms          2290 Nov 18  1987 sex.6
! -rw-rw-rw-  1 rms          4930 Jun  4 00:22 sorted-doc.c
  -rw-rw-rw-  1 rms           733 Mar 25  1988 spook.lines
! -rw-rw-rw-  1 rms         56891 Jun 18 09:15 termcap.dat
  -rw-rw-rw-  1 rms        130198 Feb 21 05:51 termcap.ucb
  -rw-rw-rw-  1 rms          1427 May 22  1987 test-distrib.c
--- 81,87 ----
  -rw-rw-rw-  1 rms          7362 Jul 12 22:07 server.c
  -rw-rw-rw-  1 rms          2290 Nov 18  1987 sex.6
! -rw-rw-rw-  1 rms          4930 Jun  4  1988 sorted-doc.c
  -rw-rw-rw-  1 rms           733 Mar 25  1988 spook.lines
! -rw-rw-rw-  1 rms         56891 Jun 18  1988 termcap.dat
  -rw-rw-rw-  1 rms        130198 Feb 21 05:51 termcap.ucb
  -rw-rw-rw-  1 rms          1427 May 22  1987 test-distrib.c
***************
*** 100,106 ****
  -rw-rw-rw-  1 rms          4698 Sep  3 12:06 Makefile
  -rw-rw-rw-  1 rms          1168 Jul  8 23:54 README
! -rw-rw-rw-  1 rms         30273 May  6 10:37 TAGS
  -rw-rw-rw-  1 rms          8285 Mar 25  1988 blockframe.c
! -rw-rw-rw-  1 rms         28258 Jun  9 05:43 breakpoint.c
  -rw-rw-rw-  1 rms         46897 Jul 13 00:12 coffread.c
  -rw-rw-rw-  1 rms         14515 Mar 25  1988 command.c
--- 100,106 ----
  -rw-rw-rw-  1 rms          4698 Sep  3 12:06 Makefile
  -rw-rw-rw-  1 rms          1168 Jul  8 23:54 README
! -rw-rw-rw-  1 rms         30273 May  6  1988 TAGS
  -rw-rw-rw-  1 rms          8285 Mar 25  1988 blockframe.c
! -rw-rw-rw-  1 rms         28258 Jun  9  1988 breakpoint.c
  -rw-rw-rw-  1 rms         46897 Jul 13 00:12 coffread.c
  -rw-rw-rw-  1 rms         14515 Mar 25  1988 command.c
***************
*** 107,120 ****
  -rw-rw-rw-  1 rms          7397 Feb 11  1988 command.h
  -rwxrwxrwx  1 rms          2273 Sep  1 13:21 config.gdb
! -rw-rw-rw-  1 rms         19678 May  3 11:20 core.c
  -rw-rw-rw-  1 rms         69156 Jul  7 02:02 dbxread.c
! -rw-rw-rw-  1 rms          2499 May 22 14:22 defs.h
  -rw-rw-rw-  1 rms          8436 Feb 11  1988 environ.c
  -rw-rw-rw-  1 rms           615 Jul 15  1986 environ.h
  -rw-rw-rw-  1 rms         16501 Feb  3  1988 eval.c
! -rw-rw-rw-  1 rms          9484 May 30 22:57 expprint.c
! -rw-rw-rw-  1 rms         27745 Apr 30 10:18 expread.y
  -rw-rw-rw-  1 rms          6455 Nov 22  1986 expression.h
! -rw-rw-rw-  1 rms         10805 Jun 27 23:23 findvar.c
  -rw-rw-rw-  1 rms          7052 Feb 11  1988 firstfile.c
  -rw-rw-rw-  1 rms          2287 Sep 30  1986 frame.h
--- 107,120 ----
  -rw-rw-rw-  1 rms          7397 Feb 11  1988 command.h
  -rwxrwxrwx  1 rms          2273 Sep  1 13:21 config.gdb
! -rw-rw-rw-  1 rms         19678 May  3  1988 core.c
  -rw-rw-rw-  1 rms         69156 Jul  7 02:02 dbxread.c
! -rw-rw-rw-  1 rms          2499 May 22  1988 defs.h
  -rw-rw-rw-  1 rms          8436 Feb 11  1988 environ.c
  -rw-rw-rw-  1 rms           615 Jul 15  1986 environ.h
  -rw-rw-rw-  1 rms         16501 Feb  3  1988 eval.c
! -rw-rw-rw-  1 rms          9484 May 30  1988 expprint.c
! -rw-rw-rw-  1 rms         27745 Apr 30  1988 expread.y
  -rw-rw-rw-  1 rms          6455 Nov 22  1986 expression.h
! -rw-rw-rw-  1 rms         10805 Jun 27  1988 findvar.c
  -rw-rw-rw-  1 rms          7052 Feb 11  1988 firstfile.c
  -rw-rw-rw-  1 rms          2287 Sep 30  1986 frame.h
***************
*** 121,130 ****
  -rw-rw-rw-  1 rms          4006 Apr 13  1987 gdb.1
  -rw-rw-rw-  1 rms         41892 Sep  2 13:12 gdb.ideas
! -rw-rw-rw-  1 rms          6759 Jun 21 23:14 gld-pinsn.c
! -rw-rw-rw-  1 rms         23615 Jun 27 23:26 infcmd.c
  -rw-rw-rw-  1 rms          2820 Feb  3  1988 inferior.h
  -rw-rw-rw-  1 rms         23111 Sep  3 11:40 inflow.c
! -rw-rw-rw-  1 rms         29393 Jun 25 04:23 infrun.c
! -rw-rw-rw-  1 rms          6545 Jun 21 23:09 initialize.h
  -rw-rw-rw-  1 rms           409 Jul 15  1986 kdb-start.c
  -rw-rw-rw-  1 rms           172 Jul 15  1986 lastfile.c
--- 121,130 ----
  -rw-rw-rw-  1 rms          4006 Apr 13  1987 gdb.1
  -rw-rw-rw-  1 rms         41892 Sep  2 13:12 gdb.ideas
! -rw-rw-rw-  1 rms          6759 Jun 21  1988 gld-pinsn.c
! -rw-rw-rw-  1 rms         23615 Jun 27  1988 infcmd.c
  -rw-rw-rw-  1 rms          2820 Feb  3  1988 inferior.h
  -rw-rw-rw-  1 rms         23111 Sep  3 11:40 inflow.c
! -rw-rw-rw-  1 rms         29393 Jun 25  1988 infrun.c
! -rw-rw-rw-  1 rms          6545 Jun 21  1988 initialize.h
  -rw-rw-rw-  1 rms           409 Jul 15  1986 kdb-start.c
  -rw-rw-rw-  1 rms           172 Jul 15  1986 lastfile.c
***************
*** 137,144 ****
  -rw-rw-rw-  1 rms         19335 Aug 30 17:54 m-news.h
  -rw-rw-rw-  1 rms           146 Jan 15  1988 m-newsinit.h
! -rw-rw-rw-  1 rms         18267 Jun 17 21:31 m-npl.h
! -rw-rw-rw-  1 rms           189 Jun 16 03:27 m-nplinit.h
! -rw-rw-rw-  1 rms         17503 Jun 17 21:42 m-pn.h
! -rw-rw-rw-  1 rms           191 Jun 16 03:27 m-pninit.h
  -rw-rw-rw-  1 rms         15507 Apr  7  1988 m-sun2.h
  -rw-rw-rw-  1 rms           130 Jul 15  1986 m-sun2init.h
--- 137,144 ----
  -rw-rw-rw-  1 rms         19335 Aug 30 17:54 m-news.h
  -rw-rw-rw-  1 rms           146 Jan 15  1988 m-newsinit.h
! -rw-rw-rw-  1 rms         18267 Jun 17  1988 m-npl.h
! -rw-rw-rw-  1 rms           189 Jun 16  1988 m-nplinit.h
! -rw-rw-rw-  1 rms         17503 Jun 17  1988 m-pn.h
! -rw-rw-rw-  1 rms           191 Jun 16  1988 m-pninit.h
  -rw-rw-rw-  1 rms         15507 Apr  7  1988 m-sun2.h
  -rw-rw-rw-  1 rms           130 Jul 15  1986 m-sun2init.h
***************
*** 145,149 ****
  -rw-rw-rw-  2 rms         18051 Apr  7  1988 m-sun3.h
  -rw-rw-rw-  2 rms           141 Feb  7  1988 m-sun3init.h
! -rw-rw-rw-  1 rms         14711 Jun 17 23:20 m-umax.h
  -rw-rw-rw-  1 rms           147 Apr  9  1988 m-umaxinit.h
  -rw-rw-rw-  1 rms         13590 Mar 25  1988 m-vax.h
--- 145,149 ----
  -rw-rw-rw-  2 rms         18051 Apr  7  1988 m-sun3.h
  -rw-rw-rw-  2 rms           141 Feb  7  1988 m-sun3init.h
! -rw-rw-rw-  1 rms         14711 Jun 17  1988 m-umax.h
  -rw-rw-rw-  1 rms           147 Apr  9  1988 m-umaxinit.h
  -rw-rw-rw-  1 rms         13590 Mar 25  1988 m-vax.h
***************
*** 150,169 ****
  -rw-rw-rw-  1 rms           141 Sep 24  1986 m-vaxinit.h
  -rw-rw-rw-  2 rms         68314 Apr  8  1988 m68k-opcode.h
! -rw-rw-rw-  2 rms         17695 Jun 21 23:14 m68k-pinsn.c
  -rw-rw-rw-  1 rms         34227 Jul 20 15:21 main.c
! -rw-rw-rw-  1 rms         18362 Jun 16 03:27 npl-opcode.h
  -rw-rw-rw-  1 rms         10621 Nov 25  1987 ns32k-opcode.h
! -rw-rw-rw-  1 rms         10662 Jun 21 23:15 ns32k-pinsn.c
! -rw-rw-rw-  1 rms         12230 Jun 17 11:43 obstack.c
  -rw-rw-rw-  1 rms         18478 Jul 25 02:22 obstack.h
  -rw-rw-rw-  2 rms         68314 Apr  8  1988 opcode.h
  -rw-rw-rw-  2 rms         18051 Apr  7  1988 param.h
! -rw-rw-rw-  2 rms         17695 Jun 21 23:14 pinsn.c
! -rw-rw-rw-  1 rms         12573 Jun 16 03:27 pn-opcode.h
  -rw-rw-rw-  1 rms         31150 Jul 22 23:43 printcmd.c
  -rw-rw-rw-  1 rms         13024 Apr  7  1988 remote.c
! -rw-rw-rw-  1 rms         22485 May 23 14:54 source.c
! -rw-rw-rw-  1 rms         16743 May 23 14:54 stack.c
! -rw-rw-rw-  1 rms         12067 May  3 10:51 standalone.c
  -rw-rw-rw-  1 rms          5366 Sep 30  1986 stuff.c
  -rw-rw-rw-  1 rms         15537 Jul 26 03:03 symmisc.c
--- 150,169 ----
  -rw-rw-rw-  1 rms           141 Sep 24  1986 m-vaxinit.h
  -rw-rw-rw-  2 rms         68314 Apr  8  1988 m68k-opcode.h
! -rw-rw-rw-  2 rms         17695 Jun 21  1988 m68k-pinsn.c
  -rw-rw-rw-  1 rms         34227 Jul 20 15:21 main.c
! -rw-rw-rw-  1 rms         18362 Jun 16  1988 npl-opcode.h
  -rw-rw-rw-  1 rms         10621 Nov 25  1987 ns32k-opcode.h
! -rw-rw-rw-  1 rms         10662 Jun 21  1988 ns32k-pinsn.c
! -rw-rw-rw-  1 rms         12230 Jun 17  1988 obstack.c
  -rw-rw-rw-  1 rms         18478 Jul 25 02:22 obstack.h
  -rw-rw-rw-  2 rms         68314 Apr  8  1988 opcode.h
  -rw-rw-rw-  2 rms         18051 Apr  7  1988 param.h
! -rw-rw-rw-  2 rms         17695 Jun 21  1988 pinsn.c
! -rw-rw-rw-  1 rms         12573 Jun 16  1988 pn-opcode.h
  -rw-rw-rw-  1 rms         31150 Jul 22 23:43 printcmd.c
  -rw-rw-rw-  1 rms         13024 Apr  7  1988 remote.c
! -rw-rw-rw-  1 rms         22485 May 23  1988 source.c
! -rw-rw-rw-  1 rms         16743 May 23  1988 stack.c
! -rw-rw-rw-  1 rms         12067 May  3  1988 standalone.c
  -rw-rw-rw-  1 rms          5366 Sep 30  1986 stuff.c
  -rw-rw-rw-  1 rms         15537 Jul 26 03:03 symmisc.c
***************
*** 177,181 ****
  -rw-rw-rw-  1 rms           365 Jul 15  1986 testreg.c
  -rw-rw-rw-  1 rms           387 Dec  3  1987 testregs.c
! -rw-rw-rw-  1 rms          9872 May 30 22:57 utils.c
  -rw-rw-rw-  1 rms          8374 Dec 17  1987 valarith.c
  -rw-rw-rw-  1 rms         16436 Jan  7  1988 valops.c
--- 177,181 ----
  -rw-rw-rw-  1 rms           365 Jul 15  1986 testreg.c
  -rw-rw-rw-  1 rms           387 Dec  3  1987 testregs.c
! -rw-rw-rw-  1 rms          9872 May 30  1988 utils.c
  -rw-rw-rw-  1 rms          8374 Dec 17  1987 valarith.c
  -rw-rw-rw-  1 rms         16436 Jan  7  1988 valops.c
***************
*** 182,194 ****
  -rw-rw-rw-  1 rms         17003 Sep  3 12:04 valprint.c
  -rw-rw-rw-  1 rms          3799 Feb  6  1988 value.h
! -rw-rw-rw-  1 rms         19062 May 20 15:02 values.c
  -rw-rw-rw-  1 rms         12750 Jul 15  1986 vax-opcode.h
! -rw-rw-rw-  1 rms          5681 Jun 21 23:16 vax-pinsn.c
  -rw-rw-rw-  1 rms            73 Sep  8 19:09 version.c
! -rw-rw-rw-  1 rms           961 May  1 12:12 wait.h
  -rw-rw-rw-  1 rms         19446 Jul 20 18:15 xgdb.c
  
  ./info:
! total 2400
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
  -rw-rw-rw-  1 rms          1094 Apr 29  1988 dir
--- 182,194 ----
  -rw-rw-rw-  1 rms         17003 Sep  3 12:04 valprint.c
  -rw-rw-rw-  1 rms          3799 Feb  6  1988 value.h
! -rw-rw-rw-  1 rms         19062 May 20  1988 values.c
  -rw-rw-rw-  1 rms         12750 Jul 15  1986 vax-opcode.h
! -rw-rw-rw-  1 rms          5681 Jun 21  1988 vax-pinsn.c
  -rw-rw-rw-  1 rms            73 Sep  8 19:09 version.c
! -rw-rw-rw-  1 rms           961 May  1  1988 wait.h
  -rw-rw-rw-  1 rms         19446 Jul 20 18:15 xgdb.c
  
  ./info:
! total 2390
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
  -rw-rw-rw-  1 rms          1094 Apr 29  1988 dir
***************
*** 212,219 ****
  -rw-rw-rw-  1 rms          4451 Feb 12  1988 gdb-3
  -rw-rw-rw-  1 rms         27227 Apr  9  1988 info
! -rw-rw-rw-  1 rms          1996 Jul 21 17:29 termcap
! -rw-rw-rw-  1 rms         48787 Jul 21 17:29 termcap-1
! -rw-rw-rw-  1 rms         44052 Jul 21 17:29 termcap-2
! -rw-rw-rw-  1 rms         43548 Jul 21 17:29 termcap-3
  -rw-rw-rw-  1 rms          4027 Dec 29 01:20 texinfo
  -rw-rw-rw-  1 rms         48677 Dec 29 01:20 texinfo-1
--- 212,219 ----
  -rw-rw-rw-  1 rms          4451 Feb 12  1988 gdb-3
  -rw-rw-rw-  1 rms         27227 Apr  9  1988 info
! -rw-rw-rw-  1 randy        2001 Mar 10 14:20 termcap
! -rw-rw-rw-  1 rms         51296 Mar 10 14:20 termcap-1
! -rw-rw-rw-  1 rms         52436 Mar 10 14:20 termcap-2
! -rw-rw-rw-  1 rms         26958 Mar 10 14:20 termcap-3
  -rw-rw-rw-  1 rms          4027 Dec 29 01:20 texinfo
  -rw-rw-rw-  1 rms         48677 Dec 29 01:20 texinfo-1
***************
*** 224,230 ****
  
  ./lisp:
! total 6718
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
! -rw-rw-rw-  1 rms        132759 Feb 24 08:36 ChangeLog
  -rw-rw-rw-  1 rms          9549 Aug  4 15:26 abbrev.el
  -rw-rw-rw-  1 rms          7437 Aug 10 20:43 abbrev.elc
--- 224,230 ----
  
  ./lisp:
! total 6740
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
! -rw-rw-rw-  1 rms        134089 Apr 26 16:17 ChangeLog
  -rw-rw-rw-  1 rms          9549 Aug  4 15:26 abbrev.el
  -rw-rw-rw-  1 rms          7437 Aug 10 20:43 abbrev.elc
***************
*** 238,243 ****
  -rw-rw-rw-  1 rms         11876 Mar 19  1988 backquote.el
  -rw-rw-rw-  1 rms          3718 Apr 11  1988 backquote.elc
! -rw-rw-rw-  1 rms         14328 May 16 21:20 bibtex.el
! -rw-rw-rw-  1 rms         11087 May 22 18:12 bibtex.elc
  -rw-rw-rw-  1 rms          5820 Jun 30  1987 blackbox.el
  -rw-rw-rw-  1 rms          4404 Jun 30  1987 blackbox.elc
--- 238,244 ----
  -rw-rw-rw-  1 rms         11876 Mar 19  1988 backquote.el
  -rw-rw-rw-  1 rms          3718 Apr 11  1988 backquote.elc
! -rw-rw-rw-  1 rms         11073 Apr  1 00:59 bg-mouse.el
! -rw-rw-rw-  1 rms         14328 May 16  1988 bibtex.el
! -rw-rw-rw-  1 rms         11087 May 22  1988 bibtex.elc
  -rw-rw-rw-  1 rms          5820 Jun 30  1987 blackbox.el
  -rw-rw-rw-  1 rms          4404 Jun 30  1987 blackbox.elc
***************
*** 248,253 ****
  -rw-rw-rw-  1 rms          8836 Jul 18 00:36 c-fill.el
  -rw-rw-rw-  1 rms          3309 Jul 19 16:53 c-fill.elc
! -rw-rw-rw-  1 rms         24177 May 27 21:28 c-mode.el
! -rw-rw-rw-  1 rms         12457 Jun  1 05:24 c-mode.elc
  -rw-rw-rw-  1 rms         10097 Apr 20  1988 cal.el
  -rw-rw-rw-  1 rms          5944 Mar 18  1988 chistory.el
--- 249,254 ----
  -rw-rw-rw-  1 rms          8836 Jul 18 00:36 c-fill.el
  -rw-rw-rw-  1 rms          3309 Jul 19 16:53 c-fill.elc
! -rw-rw-rw-  1 rms         24177 May 27  1988 c-mode.el
! -rw-rw-rw-  1 rms         12457 Jun  1  1988 c-mode.elc
  -rw-rw-rw-  1 rms         10097 Apr 20  1988 cal.el
  -rw-rw-rw-  1 rms          5944 Mar 18  1988 chistory.el
***************
*** 301,318 ****
  -rw-rw-rw-  1 rms         13318 Jul 19 02:21 ftp.el
  -rw-rw-rw-  1 rms          8658 Jul 19 16:32 ftp.elc
! -rw-rw-rw-  1 rms         14177 May 22 18:10 gdb.el
! -rw-rw-rw-  1 rms          7626 May 22 18:12 gdb.elc
  -rw-rw-rw-  1 rms          3693 Dec  7  1986 gosmacs.el
  -rw-rw-rw-  1 rms          1303 Sep 30  1986 grow-vers.el
! -rw-rw-rw-  1 rms          5453 May 30 17:40 hanoi.el
! -rw-rw-rw-  1 rms          2236 Jun  1 05:24 hanoi.elc
! -rw-rw-rw-  1 rms         10253 May 28 19:18 help.el
! -rw-rw-rw-  1 rms          8438 Jun  1 05:25 help.elc
! -rw-rw-rw-  1 rms          5093 May 30 17:41 helper.el
! -rw-rw-rw-  1 rms          3044 Jun  1 05:25 helper.elc
  -rw-rw-rw-  1 rms         32352 Mar 19  1988 hideif.el
! -rw-rw-rw-  1 rms         17888 May  6 14:38 hideif.elc
! -rw-rw-rw-  1 rms         19740 May  3 08:29 icon.el
! -rw-rw-rw-  1 rms         10882 May  3 08:32 icon.elc
  -rw-rw-rw-  1 rms          1641 Sep 30  1986 inc-vers.el
  -rw-rw-rw-  1 rms          7491 Nov 19  1986 indent.el
--- 302,319 ----
  -rw-rw-rw-  1 rms         13318 Jul 19 02:21 ftp.el
  -rw-rw-rw-  1 rms          8658 Jul 19 16:32 ftp.elc
! -rw-rw-rw-  1 rms         14177 May 22  1988 gdb.el
! -rw-rw-rw-  1 rms          7626 May 22  1988 gdb.elc
  -rw-rw-rw-  1 rms          3693 Dec  7  1986 gosmacs.el
  -rw-rw-rw-  1 rms          1303 Sep 30  1986 grow-vers.el
! -rw-rw-rw-  1 rms          5453 May 30  1988 hanoi.el
! -rw-rw-rw-  1 rms          2236 Jun  1  1988 hanoi.elc
! -rw-rw-rw-  1 rms         10253 May 28  1988 help.el
! -rw-rw-rw-  1 rms          8438 Jun  1  1988 help.elc
! -rw-rw-rw-  1 rms          5093 May 30  1988 helper.el
! -rw-rw-rw-  1 rms          3044 Jun  1  1988 helper.elc
  -rw-rw-rw-  1 rms         32352 Mar 19  1988 hideif.el
! -rw-rw-rw-  1 rms         17888 May  6  1988 hideif.elc
! -rw-rw-rw-  1 rms         19740 May  3  1988 icon.el
! -rw-rw-rw-  1 rms         10882 May  3  1988 icon.elc
  -rw-rw-rw-  1 rms          1641 Sep 30  1986 inc-vers.el
  -rw-rw-rw-  1 rms          7491 Nov 19  1986 indent.el
***************
*** 325,330 ****
  -rw-rw-rw-  1 rms          4713 Dec 23  1987 isearch.elc
  -rw-rw-rw-  1 rms          8593 Apr 22  1988 kermit.el
! -rw-rw-rw-  1 rms          5912 Jun 12 11:04 keypad.el
! -rw-rw-rw-  1 rms          2451 Jun 21 13:07 keypad.elc
  -rw-rw-rw-  1 rms          4773 Sep 30  1986 ledit.el
  -rw-rw-rw-  1 rms         10281 Aug 23 16:56 life.el
--- 326,331 ----
  -rw-rw-rw-  1 rms          4713 Dec 23  1987 isearch.elc
  -rw-rw-rw-  1 rms          8593 Apr 22  1988 kermit.el
! -rw-rw-rw-  1 rms          5912 Jun 12  1988 keypad.el
! -rw-rw-rw-  1 rms          2451 Jun 21  1988 keypad.elc
  -rw-rw-rw-  1 rms          4773 Sep 30  1986 ledit.el
  -rw-rw-rw-  1 rms         10281 Aug 23 16:56 life.el
***************
*** 336,341 ****
  -rw-rw-rw-  1 rms         72380 Aug 15 19:50 loaddefs.el
  -rw-rw-rw-  1 rms          4523 Jul  5 14:00 loadup.el
! -rw-rw-rw-  1 rms          2737 Dec 28 23:42 lpr.el
! -rw-rw-rw-  1 rms          1515 Dec 29 01:15 lpr.elc
  -rw-rw-rw-  1 rms          3991 Jan 21  1987 macros.el
  -rw-rw-rw-  1 rms          2356 Jan 21  1987 macros.elc
--- 337,342 ----
  -rw-rw-rw-  1 rms         72380 Aug 15 19:50 loaddefs.el
  -rw-rw-rw-  1 rms          4523 Jul  5 14:00 loadup.el
! -rw-rw-rw-  1 rms          2747 Apr 11 01:05 lpr.el
! -rw-rw-rw-  1 rms          1517 Apr 13 17:43 lpr.elc
  -rw-rw-rw-  1 rms          3991 Jan 21  1987 macros.el
  -rw-rw-rw-  1 rms          2356 Jan 21  1987 macros.elc
***************
*** 347,355 ****
  -rw-rw-rw-  1 rms          3602 Sep 30  1986 makesum.el
  -rw-rw-rw-  1 rms          1285 Sep 30  1986 makesum.elc
! -rw-rw-rw-  1 rms          5310 May  8 15:23 man.el
! -rw-rw-rw-  1 rms          2099 May 22 18:12 man.elc
  -rw-rw-rw-  1 rms          4035 Sep 30  1986 medit.el
  -rw-rw-rw-  1 rms          2763 Sep 30  1986 medit.elc
! -rw-rw-rw-  1 rms           599 May 20 17:55 meese.el
  -rw-rw-rw-  1 rms         87833 Sep  1 14:21 mh-e.el
  -rw-rw-rw-  1 rms         63007 Sep  1 14:25 mh-e.elc
--- 348,356 ----
  -rw-rw-rw-  1 rms          3602 Sep 30  1986 makesum.el
  -rw-rw-rw-  1 rms          1285 Sep 30  1986 makesum.elc
! -rw-rw-rw-  1 rms          5310 May  8  1988 man.el
! -rw-rw-rw-  1 rms          2099 May 22  1988 man.elc
  -rw-rw-rw-  1 rms          4035 Sep 30  1986 medit.el
  -rw-rw-rw-  1 rms          2763 Sep 30  1986 medit.elc
! -rw-rw-rw-  1 rms           599 May 20  1988 meese.el
  -rw-rw-rw-  1 rms         87833 Sep  1 14:21 mh-e.el
  -rw-rw-rw-  1 rms         63007 Sep  1 14:25 mh-e.elc
***************
*** 358,369 ****
  -rw-rw-rw-  1 rms          3196 Sep 30  1986 mim-syntax.el
  -rw-rw-rw-  1 rms          1276 Sep 30  1986 mim-syntax.elc
! -rw-rw-rw-  1 rms         10005 May 30 17:44 mlconvert.el
! -rw-rw-rw-  1 rms          9065 Jun  1 05:25 mlconvert.elc
  -rw-rw-rw-  1 rms         11601 Sep 30  1986 mlsupport.el
  -rw-rw-rw-  1 rms         10191 Sep 30  1986 mlsupport.elc
! -rw-rw-rw-  1 rms         11820 May 30 17:45 modula2.el
! -rw-rw-rw-  1 rms          9910 Jun  1 05:25 modula2.elc
  -rw-rw-rw-  1 rms          4097 Jan 21  1987 novice.el
! -rw-rw-rw-  1 rms          7000 Jun 22 10:33 nroff-mode.el
  -rw-rw-rw-  1 rms          4621 Jul 19 16:33 nroff-mode.elc
  -rw-rw-rw-  1 rms          4102 Dec  4  1987 options.el
--- 359,370 ----
  -rw-rw-rw-  1 rms          3196 Sep 30  1986 mim-syntax.el
  -rw-rw-rw-  1 rms          1276 Sep 30  1986 mim-syntax.elc
! -rw-rw-rw-  1 rms         10005 May 30  1988 mlconvert.el
! -rw-rw-rw-  1 rms          9065 Jun  1  1988 mlconvert.elc
  -rw-rw-rw-  1 rms         11601 Sep 30  1986 mlsupport.el
  -rw-rw-rw-  1 rms         10191 Sep 30  1986 mlsupport.elc
! -rw-rw-rw-  1 rms         11820 May 30  1988 modula2.el
! -rw-rw-rw-  1 rms          9910 Jun  1  1988 modula2.elc
  -rw-rw-rw-  1 rms          4097 Jan 21  1987 novice.el
! -rw-rw-rw-  1 rms          7000 Jun 22  1988 nroff-mode.el
  -rw-rw-rw-  1 rms          4621 Jul 19 16:33 nroff-mode.elc
  -rw-rw-rw-  1 rms          4102 Dec  4  1987 options.el
***************
*** 375,381 ****
  -rw-rw-rw-  1 rms          6926 Apr 15  1988 paragraphs.el
  -rw-rw-rw-  1 rms          4405 Apr 19  1988 paragraphs.elc
! -rw-rw-rw-  1 rms          5142 Jul 12 21:58 paths.el
! -rw-rw-rw-  1 rms         22635 Dec  9  1987 picture.el
! -rw-rw-rw-  1 rms         19554 Dec 23  1987 picture.elc
  -rw-rw-rw-  1 rms          9333 Apr  9  1988 prolog.el
  -rw-rw-rw-  1 rms          6261 Apr 11  1988 prolog.elc
--- 376,382 ----
  -rw-rw-rw-  1 rms          6926 Apr 15  1988 paragraphs.el
  -rw-rw-rw-  1 rms          4405 Apr 19  1988 paragraphs.elc
! -rw-rw-rw-  1 rms          5174 Apr  2 00:25 paths.el
! -rw-rw-rw-  1 rms         22636 Apr 12 10:45 picture.el
! -rw-rw-rw-  1 rms         19548 Apr 13 17:43 picture.elc
  -rw-rw-rw-  1 rms          9333 Apr  9  1988 prolog.el
  -rw-rw-rw-  1 rms          6261 Apr 11  1988 prolog.elc
***************
*** 384,393 ****
  -rw-rw-rw-  1 rms          6512 Sep 30  1986 register.el
  -rw-rw-rw-  1 rms          4144 Sep 30  1986 register.elc
! -rw-rw-rw-  1 rms         10422 May  2 17:50 replace.el
! -rw-rw-rw-  1 rms          5995 May  3 08:31 replace.elc
  -rw-rw-rw-  1 rms          9851 Sep  2  1987 rfc822.el
  -rw-rw-rw-  1 rms          4213 Sep  2  1987 rfc822.elc
! -rw-rw-rw-  1 rms         48141 Dec 28 23:07 rmail.el
! -rw-rw-rw-  1 rms         29271 Dec 28 23:24 rmail.elc
  -rw-rw-rw-  1 rms          3948 Feb 28  1987 rmailedit.el
  -rw-rw-rw-  1 rms          2258 Feb 28  1987 rmailedit.elc
--- 385,394 ----
  -rw-rw-rw-  1 rms          6512 Sep 30  1986 register.el
  -rw-rw-rw-  1 rms          4144 Sep 30  1986 register.elc
! -rw-rw-rw-  1 rms         10422 May  2  1988 replace.el
! -rw-rw-rw-  1 rms          5995 May  3  1988 replace.elc
  -rw-rw-rw-  1 rms          9851 Sep  2  1987 rfc822.el
  -rw-rw-rw-  1 rms          4213 Sep  2  1987 rfc822.elc
! -rw-rw-rw-  1 rms         48196 Apr  6 19:26 rmail.el
! -rw-rw-rw-  1 rms         29281 Apr  7 21:57 rmail.elc
  -rw-rw-rw-  1 rms          3948 Feb 28  1987 rmailedit.el
  -rw-rw-rw-  1 rms          2258 Feb 28  1987 rmailedit.elc
***************
*** 400,407 ****
  -rw-rw-rw-  1 rms         14633 Jul 31 06:46 rmailsum.el
  -rw-rw-rw-  1 rms          9446 Aug 10 20:44 rmailsum.elc
! -rw-rw-rw-  1 rms         35567 May 22 18:13 rnews.el
! -rw-rw-rw-  1 rms         23720 May 22 18:15 rnews.elc
! -rw-rw-rw-  1 rms         15115 Jun 15 10:16 rnewspost.el
! -rw-rw-rw-  1 rms          8920 Jun 21 13:07 rnewspost.elc
  -rw-rw-rw-  1 rms          8684 Aug 15 17:02 saveconf.el
  -rw-rw-rw-  1 rms         18886 Jul 15 16:19 scheme.el
--- 401,408 ----
  -rw-rw-rw-  1 rms         14633 Jul 31 06:46 rmailsum.el
  -rw-rw-rw-  1 rms          9446 Aug 10 20:44 rmailsum.elc
! -rw-rw-rw-  1 rms         35567 May 22  1988 rnews.el
! -rw-rw-rw-  1 rms         23720 May 22  1988 rnews.elc
! -rw-rw-rw-  1 rms         15115 Jun 15  1988 rnewspost.el
! -rw-rw-rw-  1 rms          8920 Jun 21  1988 rnewspost.elc
  -rw-rw-rw-  1 rms          8684 Aug 15 17:02 saveconf.el
  -rw-rw-rw-  1 rms         18886 Jul 15 16:19 scheme.el
***************
*** 409,414 ****
  -rw-rw-rw-  1 rms         10735 Jan 22  1987 scribe.el
  -rw-rw-rw-  1 rms          7839 Jan 27  1987 scribe.elc
! -rw-rw-rw-  1 rms         15726 Jun  2 06:37 sendmail.el
! -rw-rw-rw-  1 rms          9619 Jun 21 13:07 sendmail.elc
  -rw-rw-rw-  1 rms         10435 Aug  4 19:38 server.el
  -rw-rw-rw-  1 rms          5251 Aug 10 20:44 server.elc
--- 410,415 ----
  -rw-rw-rw-  1 rms         10735 Jan 22  1987 scribe.el
  -rw-rw-rw-  1 rms          7839 Jan 27  1987 scribe.elc
! -rw-rw-rw-  1 rms         15726 Jun  2  1988 sendmail.el
! -rw-rw-rw-  1 rms          9619 Jun 21  1988 sendmail.elc
  -rw-rw-rw-  1 rms         10435 Aug  4 19:38 server.el
  -rw-rw-rw-  1 rms          5251 Aug 10 20:44 server.elc
***************
*** 420,430 ****
  -rw-rw-rw-  1 rms         29268 Aug 15 19:17 simula.el
  -rw-rw-rw-  1 rms         17293 Aug 15 19:20 simula.elc
! -rw-rw-rw-  1 rms         13035 May 30 17:53 sort.el
! -rw-rw-rw-  1 rms          8815 Jun  1 05:26 sort.elc
  -rw-rw-rw-  1 rms          4699 Dec 28 23:22 spell.el
  -rw-rw-rw-  1 rms          2605 Dec 28 23:24 spell.elc
  -rw-rw-rw-  1 rms          3741 Apr  9  1988 spook.el
! -rw-rw-rw-  1 rms          8570 Jul 10 14:43 startup.el
! -rw-rw-rw-  1 rms          4097 Jul 19 16:34 startup.elc
  -rw-rw-rw-  1 rms          1320 Sep 12  1986 studly.el
  -rw-rw-rw-  1 rms           774 Sep 12  1986 studly.elc
--- 421,431 ----
  -rw-rw-rw-  1 rms         29268 Aug 15 19:17 simula.el
  -rw-rw-rw-  1 rms         17293 Aug 15 19:20 simula.elc
! -rw-rw-rw-  1 rms         13035 May 30  1988 sort.el
! -rw-rw-rw-  1 rms          8815 Jun  1  1988 sort.elc
  -rw-rw-rw-  1 rms          4699 Dec 28 23:22 spell.el
  -rw-rw-rw-  1 rms          2605 Dec 28 23:24 spell.elc
  -rw-rw-rw-  1 rms          3741 Apr  9  1988 spook.el
! -rw-rw-rw-  1 rms          8755 Apr  7 22:03 startup.el
! -rw-rw-rw-  1 rms          4183 Apr  7 22:03 startup.elc
  -rw-rw-rw-  1 rms          1320 Sep 12  1986 studly.el
  -rw-rw-rw-  1 rms           774 Sep 12  1986 studly.elc
***************
*** 447,452 ****
  -rw-rw-rw-  1 rms         39305 Apr 15  1988 terminal.el
  -rw-rw-rw-  1 rms         23792 Apr 19  1988 terminal.elc
! -rw-rw-rw-  1 rms         16770 Feb 24 08:34 tex-mode.el
! -rw-rw-rw-  1 rms         12134 Feb 24 08:34 tex-mode.elc
  -rw-rw-rw-  1 rms           467 Aug 11  1986 tex-start.el
  -rw-rw-rw-  1 rms         42439 Dec 28 23:11 texinfmt.el
--- 448,453 ----
  -rw-rw-rw-  1 rms         39305 Apr 15  1988 terminal.el
  -rw-rw-rw-  1 rms         23792 Apr 19  1988 terminal.elc
! -rw-rw-rw-  1 randy       16771 Mar 13 16:55 tex-mode.el
! -rw-rw-rw-  1 rms         12135 Mar 13 16:56 tex-mode.elc
  -rw-rw-rw-  1 rms           467 Aug 11  1986 tex-start.el
  -rw-rw-rw-  1 rms         42439 Dec 28 23:11 texinfmt.el
***************
*** 459,464 ****
  -rw-rw-rw-  1 rms          1412 Jan 21  1987 time.elc
  -rw-rw-rw-  1 rms          1154 Jul 20 14:23 uncompress.el
! -rw-rw-rw-  1 rms          1838 May 30 17:59 underline.el
! -rw-rw-rw-  1 rms           739 Jun  1 05:27 underline.elc
  -rw-rw-rw-  1 rms          3829 Aug  4 10:50 undigest.el
  -rw-rw-rw-  1 rms          1380 Aug 10 20:45 undigest.elc
--- 460,465 ----
  -rw-rw-rw-  1 rms          1412 Jan 21  1987 time.elc
  -rw-rw-rw-  1 rms          1154 Jul 20 14:23 uncompress.el
! -rw-rw-rw-  1 rms          1838 May 30  1988 underline.el
! -rw-rw-rw-  1 rms           739 Jun  1  1988 underline.elc
  -rw-rw-rw-  1 rms          3829 Aug  4 10:50 undigest.el
  -rw-rw-rw-  1 rms          1380 Aug 10 20:45 undigest.elc
***************
*** 466,470 ****
  -rw-rw-rw-  1 rms          4690 May 26  1987 userlock.el
  -rw-rw-rw-  1 rms          3234 May 27  1987 userlock.elc
! -rw-rw-rw-  1 rms          1743 Feb 24 08:28 version.el
  -rw-rw-rw-  1 rms         57531 Jan  7  1987 vi.el
  -rw-rw-rw-  1 rms         48538 Jan  8  1987 vi.elc
--- 467,471 ----
  -rw-rw-rw-  1 rms          4690 May 26  1987 userlock.el
  -rw-rw-rw-  1 rms          3234 May 27  1987 userlock.elc
! -rw-rw-rw-  1 rms          1743 Apr 15 23:55 version.el
  -rw-rw-rw-  1 rms         57531 Jan  7  1987 vi.el
  -rw-rw-rw-  1 rms         48538 Jan  8  1987 vi.elc
***************
*** 473,478 ****
  -rw-rw-rw-  1 rms         97412 Feb 11  1988 vip.el
  -rw-rw-rw-  1 rms         69110 Feb 12  1988 vip.elc
! -rw-rw-rw-  1 rms          3396 May  6 18:19 vms-patch.el
! -rw-rw-rw-  1 rms          1946 May  6 22:01 vms-patch.elc
  -rw-rw-rw-  1 rms          4131 Sep 29  1986 vmsproc.el
  -rw-rw-rw-  1 rms          2255 Mar 22  1987 vmsproc.elc
--- 474,479 ----
  -rw-rw-rw-  1 rms         97412 Feb 11  1988 vip.el
  -rw-rw-rw-  1 rms         69110 Feb 12  1988 vip.elc
! -rw-rw-rw-  1 rms          3396 May  6  1988 vms-patch.el
! -rw-rw-rw-  1 rms          1946 May  6  1988 vms-patch.elc
  -rw-rw-rw-  1 rms          4131 Sep 29  1986 vmsproc.el
  -rw-rw-rw-  1 rms          2255 Mar 22  1987 vmsproc.elc
***************
*** 489,498 ****
  
  ./lisp/term:
! total 100
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
  -rw-rw-rw-  1 rms            20 Apr 18  1988 apollo.el
  -rw-rw-rw-  1 rms           321 Jan 31  1986 bobcat.el
  -rw-rw-rw-  1 rms          4996 Jul 18  1987 s4.el
! -rw-rw-rw-  1 rms          9471 Aug 14  1987 sun.el
  -rw-rw-rw-  1 rms          2852 Jan 21  1987 supdup.el
  -rw-rw-rw-  1 rms          5497 Aug 30  1987 unixpc.el
--- 490,503 ----
  
  ./lisp/term:
! total 114
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
  -rw-rw-rw-  1 rms            20 Apr 18  1988 apollo.el
+ -rw-rw-rw-  1 rms            44 Apr  6 23:27 bbn.el
+ -rw-rw-rw-  1 rms           237 Apr  6 23:25 bg.el
+ -rw-rw-rw-  1 rms            44 Apr  6 23:27 bgnv.el
+ -rw-rw-rw-  1 rms            44 Apr  6 23:27 bgrv.el
  -rw-rw-rw-  1 rms           321 Jan 31  1986 bobcat.el
  -rw-rw-rw-  1 rms          4996 Jul 18  1987 s4.el
! -rw-rw-rw-  1 rms         11494 Mar 15 23:33 sun.el
  -rw-rw-rw-  1 rms          2852 Jan 21  1987 supdup.el
  -rw-rw-rw-  1 rms          5497 Aug 30  1987 unixpc.el
***************
*** 503,506 ****
--- 508,512 ----
  -rw-rw-rw-  1 rms            47 Jan 31  1988 vt240.el
  -rw-rw-rw-  1 rms          7675 Aug 11 22:19 x-win.el
+ -rw-rw-rw-  1 rms            89 Apr 26 21:52 xterm.el
  
  ./man:
***************
*** 509,520 ****
  -rw-rw-rw-  1 rms           639 Oct 16  1986 README
  -rw-rw-rw-  1 rms         31712 Aug 16 13:07 cl.texinfo
! -rw-rw-rw-  1 rms         17310 Jun 15 13:07 emacs.aux
! -rw-rw-rw-  1 rms          6643 Jun 15 13:02 emacs.cps
! -rw-rw-rw-  1 rms         14795 Jun 15 13:02 emacs.fns
! -rw-rw-rw-  1 rms          8961 Jun 15 13:02 emacs.kys
! -rw-rw-rw-  1 rms             0 Jun 15 13:02 emacs.pgs
  -rw-rw-rw-  1 rms        652958 Aug 16 17:37 emacs.tex
! -rw-rw-rw-  1 rms             0 Jun 15 13:02 emacs.tps
! -rw-rw-rw-  1 rms          5389 Jun 15 13:02 emacs.vrs
  -rw-rw-rw-  1 rms          3991 Feb 12  1988 gdb.aux
  -rw-rw-rw-  1 rms          1618 Feb  9  1988 gdb.cps
--- 515,526 ----
  -rw-rw-rw-  1 rms           639 Oct 16  1986 README
  -rw-rw-rw-  1 rms         31712 Aug 16 13:07 cl.texinfo
! -rw-rw-rw-  1 rms         17310 Jun 15  1988 emacs.aux
! -rw-rw-rw-  1 rms          6643 Jun 15  1988 emacs.cps
! -rw-rw-rw-  1 rms         14795 Jun 15  1988 emacs.fns
! -rw-rw-rw-  1 rms          8961 Jun 15  1988 emacs.kys
! -rw-rw-rw-  1 rms             0 Jun 15  1988 emacs.pgs
  -rw-rw-rw-  1 rms        652958 Aug 16 17:37 emacs.tex
! -rw-rw-rw-  1 rms             0 Jun 15  1988 emacs.tps
! -rw-rw-rw-  1 rms          5389 Jun 15  1988 emacs.vrs
  -rw-rw-rw-  1 rms          3991 Feb 12  1988 gdb.aux
  -rw-rw-rw-  1 rms          1618 Feb  9  1988 gdb.cps
***************
*** 522,526 ****
  -rw-rw-rw-  1 rms          2016 Feb  9  1988 gdb.kys
  -rw-rw-rw-  1 rms             0 Feb  9  1988 gdb.pgs
! -rw-rw-rw-  1 rms        105859 May 17 12:09 gdb.texinfo
  -rw-rw-rw-  1 rms             0 Feb  9  1988 gdb.tps
  -rw-rw-rw-  1 rms             0 Feb  9  1988 gdb.vrs
--- 528,532 ----
  -rw-rw-rw-  1 rms          2016 Feb  9  1988 gdb.kys
  -rw-rw-rw-  1 rms             0 Feb  9  1988 gdb.pgs
! -rw-rw-rw-  1 rms        105859 May 17  1988 gdb.texinfo
  -rw-rw-rw-  1 rms             0 Feb  9  1988 gdb.tps
  -rw-rw-rw-  1 rms             0 Feb  9  1988 gdb.vrs
***************
*** 531,547 ****
  -rw-rw-rw-  1 rms          2440 Apr 11  1988 termcap.kys
  -rw-rw-rw-  1 rms             0 Apr 11  1988 termcap.pgs
! -rw-rw-rw-  1 rms        133148 May 11 11:21 termcap.texinfo
  -rw-rw-rw-  1 rms             0 Apr 11  1988 termcap.tps
  -rw-rw-rw-  1 rms             0 Apr 11  1988 termcap.vrs
  -rw-rw-rw-  1 rms         42774 Jul 11 18:04 texindex.c
! -rw-rw-rw-  1 rms           292 Jun 30 15:15 texinfo.aux
! -rw-rw-rw-  1 rms             0 Jun 30 15:15 texinfo.cps
! -rw-rw-rw-  1 rms             0 Jun 30 15:15 texinfo.fns
! -rw-rw-rw-  1 rms             0 Jun 30 15:15 texinfo.kys
! -rw-rw-rw-  1 rms             0 Jun 30 15:15 texinfo.pgs
  -rw-rw-rw-  1 rms         63235 Aug 18 17:07 texinfo.tex
  -rw-rw-rw-  1 rms        188739 Jul 25 17:47 texinfo.texinfo
! -rw-rw-rw-  1 rms             0 Jun 30 15:15 texinfo.tps
! -rw-rw-rw-  1 rms             0 Jun 30 15:15 texinfo.vrs
  -rw-rw-rw-  1 rms         77510 Aug 16 13:37 vip.texinfo
  
--- 537,553 ----
  -rw-rw-rw-  1 rms          2440 Apr 11  1988 termcap.kys
  -rw-rw-rw-  1 rms             0 Apr 11  1988 termcap.pgs
! -rw-rw-rw-  1 rms        133148 May 11  1988 termcap.texinfo
  -rw-rw-rw-  1 rms             0 Apr 11  1988 termcap.tps
  -rw-rw-rw-  1 rms             0 Apr 11  1988 termcap.vrs
  -rw-rw-rw-  1 rms         42774 Jul 11 18:04 texindex.c
! -rw-rw-rw-  1 rms           292 Jun 30  1988 texinfo.aux
! -rw-rw-rw-  1 rms             0 Jun 30  1988 texinfo.cps
! -rw-rw-rw-  1 rms             0 Jun 30  1988 texinfo.fns
! -rw-rw-rw-  1 rms             0 Jun 30  1988 texinfo.kys
! -rw-rw-rw-  1 rms             0 Jun 30  1988 texinfo.pgs
  -rw-rw-rw-  1 rms         63235 Aug 18 17:07 texinfo.tex
  -rw-rw-rw-  1 rms        188739 Jul 25 17:47 texinfo.texinfo
! -rw-rw-rw-  1 rms             0 Jun 30  1988 texinfo.tps
! -rw-rw-rw-  1 rms             0 Jun 30  1988 texinfo.vrs
  -rw-rw-rw-  1 rms         77510 Aug 16 13:37 vip.texinfo
  
***************
*** 592,601 ****
  
  ./src:
! total 4788
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
! -rw-rw-rw-  1 rms        166347 Feb 24 08:21 ChangeLog
  -rw-rw-rw-  1 rms           936 Aug 17 10:34 Makefile
  -rw-rw-rw-  1 rms          1273 Sep 14  1986 README
! -rw-rw-rw-  1 rms        213895 Feb 24 08:39 TAGS
  -rw-rw-rw-  1 rms          2774 Dec 18  1987 VMSBUILD
  -rw-rw-rw-  1 rms         15845 Dec  5  1986 abbrev.c
--- 598,607 ----
  
  ./src:
! total 4794
  -rw-rw-rw-  5 rms          7742 Feb 11  1988 COPYING
! -rw-rw-rw-  1 rms        171684 Apr 26 16:18 ChangeLog
  -rw-rw-rw-  1 rms           936 Aug 17 10:34 Makefile
  -rw-rw-rw-  1 rms          1273 Sep 14  1986 README
! -rw-rw-rw-  1 rms        214936 Apr 13 18:33 TAGS
  -rw-rw-rw-  1 rms          2774 Dec 18  1987 VMSBUILD
  -rw-rw-rw-  1 rms         15845 Dec  5  1986 abbrev.c
***************
*** 608,617 ****
  -rw-rw-rw-  1 rms           239 Mar 20  1987 build.com
  -rw-rw-rw-  1 rms         13912 Mar 17  1987 bytecode.c
! -rw-rw-rw-  1 rms         15316 Jun 28 19:57 callint.c
! -rw-rw-rw-  1 rms         12072 Feb 15 22:36 callproc.c
  -rw-rw-rw-  1 rms          6923 Aug 14  1987 casefiddle.c
  -rw-rw-rw-  1 rms            90 Mar 17  1987 ccom.com
  -rw-rw-rw-  1 rms           885 Jun  1  1986 chpdef.h
! -rw-rw-rw-  1 rms         10006 May 21  1987 cm.c
  -rw-rw-rw-  1 rms          3331 Feb  9  1988 cm.h
  -rw-rw-rw-  1 rms          9021 Dec 28 23:09 cmds.c
--- 614,623 ----
  -rw-rw-rw-  1 rms           239 Mar 20  1987 build.com
  -rw-rw-rw-  1 rms         13912 Mar 17  1987 bytecode.c
! -rw-rw-rw-  1 rms         15316 Jun 28  1988 callint.c
! -rw-rw-rw-  1 rms         12004 Apr  6 12:21 callproc.c
  -rw-rw-rw-  1 rms          6923 Aug 14  1987 casefiddle.c
  -rw-rw-rw-  1 rms            90 Mar 17  1987 ccom.com
  -rw-rw-rw-  1 rms           885 Jun  1  1986 chpdef.h
! -rw-rw-rw-  1 rms         10033 Apr  6 22:02 cm.c
  -rw-rw-rw-  1 rms          3331 Feb  9  1988 cm.h
  -rw-rw-rw-  1 rms          9021 Dec 28 23:09 cmds.c
***************
*** 628,638 ****
  -rw-rw-rw-  1 rms          3310 Jan  9  1988 doprnt.c
  -rw-rw-rw-  1 rms         27992 Dec 28 23:58 editfns.c
! -rw-rw-rw-  1 rms         15767 Feb 18 09:03 emacs.c
  -rw-rw-rw-  1 rms          7978 Nov  7  1986 environ.c
  -rw-rw-rw-  1 rms         55716 Aug  8 07:50 eval.c
! -rw-rw-rw-  1 rms         57704 Dec 28 23:58 fileio.c
  -rw-rw-rw-  1 rms          8667 Mar 24  1988 filelock.c
  -rw-rw-rw-  1 rms          9269 Aug 26 17:49 filemode.c
! -rw-rw-rw-  1 rms         33428 May 22 16:08 fns.c
  -rw-rw-rw-  1 rms           416 Jun  1  1986 getpagesize.h
  -rw-rw-rw-  1 rms         15163 Aug 15 22:51 indent.c
--- 634,644 ----
  -rw-rw-rw-  1 rms          3310 Jan  9  1988 doprnt.c
  -rw-rw-rw-  1 rms         27992 Dec 28 23:58 editfns.c
! -rw-rw-rw-  1 randy       15635 Mar 13 16:41 emacs.c
  -rw-rw-rw-  1 rms          7978 Nov  7  1986 environ.c
  -rw-rw-rw-  1 rms         55716 Aug  8 07:50 eval.c
! -rw-rw-rw-  1 rms         57793 Apr  6 21:42 fileio.c
  -rw-rw-rw-  1 rms          8667 Mar 24  1988 filelock.c
  -rw-rw-rw-  1 rms          9269 Aug 26 17:49 filemode.c
! -rw-rw-rw-  1 rms         33628 Apr  6 22:25 fns.c
  -rw-rw-rw-  1 rms           416 Jun  1  1986 getpagesize.h
  -rw-rw-rw-  1 rms         15163 Aug 15 22:51 indent.c
***************
*** 640,644 ****
  -rw-rw-rw-  1 rms          8594 Feb  4  1988 insdel.c
  -rw-rw-rw-  1 rms            36 Jun  1  1986 ioctl.h
! -rw-rw-rw-  1 rms         51414 Aug 22 20:10 keyboard.c
  -rw-rw-rw-  1 rms         34522 Feb 24 06:36 keymap.c
  -rw-rw-rw-  1 rms          1571 Sep 29  1986 lastfile.c
--- 646,650 ----
  -rw-rw-rw-  1 rms          8594 Feb  4  1988 insdel.c
  -rw-rw-rw-  1 rms            36 Jun  1  1986 ioctl.h
! -rw-rw-rw-  1 rms         51506 Mar 31 17:51 keyboard.c
  -rw-rw-rw-  1 rms         34522 Feb 24 06:36 keymap.c
  -rw-rw-rw-  1 rms          1571 Sep 29  1986 lastfile.c
***************
*** 647,651 ****
  -rw-rw-rw-  1 rms         32579 Aug  1 21:43 lread.c
  -rw-rw-rw-  1 rms          2714 Aug 12 14:41 m-7300.h
! -rw-rw-rw-  1 rms          4618 May 22 16:11 m-alliant.h
  -rw-rw-rw-  1 rms           131 Nov 21  1986 m-alliant1.h
  -rw-rw-rw-  1 rms           616 Aug 26 12:24 m-alliant4.h
--- 653,657 ----
  -rw-rw-rw-  1 rms         32579 Aug  1 21:43 lread.c
  -rw-rw-rw-  1 rms          2714 Aug 12 14:41 m-7300.h
! -rw-rw-rw-  1 rms          4780 Apr 18 00:17 m-alliant.h
  -rw-rw-rw-  1 rms           131 Nov 21  1986 m-alliant1.h
  -rw-rw-rw-  1 rms           616 Aug 26 12:24 m-alliant4.h
***************
*** 661,665 ****
  -rw-rw-rw-  1 rms          2398 Oct  1  1986 m-gec63.h
  -rw-rw-rw-  1 rms          4073 Jan 15  1988 m-gould.h
! -rw-rw-rw-  1 rms          5000 Jun 10 08:09 m-hp9000s300.h
  -rw-rw-rw-  1 rms          5768 Apr  9  1988 m-hp9000s800.h
  -rw-rw-rw-  1 rms          5622 Feb 17 01:47 m-ibmrt-aix.h
--- 667,671 ----
  -rw-rw-rw-  1 rms          2398 Oct  1  1986 m-gec63.h
  -rw-rw-rw-  1 rms          4073 Jan 15  1988 m-gould.h
! -rw-rw-rw-  1 rms          5000 Jun 10  1988 m-hp9000s300.h
  -rw-rw-rw-  1 rms          5768 Apr  9  1988 m-hp9000s800.h
  -rw-rw-rw-  1 rms          5622 Feb 17 01:47 m-ibmrt-aix.h
***************
*** 666,670 ****
  -rw-rw-rw-  1 rms          4542 Aug 29 15:59 m-ibmrt.h
  -rw-rw-rw-  1 rms          4197 Mar 23  1988 m-intel386.h
! -rw-rw-rw-  1 rms          6740 Dec 28 23:45 m-iris4d.h
  -rw-rw-rw-  1 rms          5204 Jan 19  1988 m-irist.h
  -rw-rw-rw-  1 rms           220 Mar 29  1988 m-is386.h
--- 672,676 ----
  -rw-rw-rw-  1 rms          4542 Aug 29 15:59 m-ibmrt.h
  -rw-rw-rw-  1 rms          4197 Mar 23  1988 m-intel386.h
! -rw-rw-rw-  1 rms          6771 Apr 17 20:13 m-iris4d.h
  -rw-rw-rw-  1 rms          5204 Jan 19  1988 m-irist.h
  -rw-rw-rw-  1 rms           220 Mar 29  1988 m-is386.h
***************
*** 673,678 ****
  -rw-rw-rw-  1 rms          1780 Oct  1  1986 m-mega68.h
  -rw-rw-rw-  1 rms          4336 Jan 15  1988 m-mg1.h
! -rw-rw-rw-  1 rms          5527 Dec 28 23:45 m-mips.h
! -rw-rw-rw-  1 rms          2296 Aug 23 06:32 m-news800.h
  -rw-rw-rw-  1 rms          1756 Mar 14  1987 m-ns16000.h
  -rw-rw-rw-  1 rms          2392 Nov  7  1986 m-nu.h
--- 679,684 ----
  -rw-rw-rw-  1 rms          1780 Oct  1  1986 m-mega68.h
  -rw-rw-rw-  1 rms          4336 Jan 15  1988 m-mg1.h
! -rw-rw-rw-  1 rms          5698 Apr 24 01:50 m-mips.h
! -rw-rw-rw-  1 rms          1983 Apr 25 22:02 m-news.h
  -rw-rw-rw-  1 rms          1756 Mar 14  1987 m-ns16000.h
  -rw-rw-rw-  1 rms          2392 Nov  7  1986 m-nu.h
***************
*** 681,685 ****
  -rw-rw-rw-  1 rms          3939 Jan 15  1988 m-plexus.h
  -rw-rw-rw-  1 rms          2045 Aug 30 16:24 m-pyramid.h
! -rw-rw-rw-  1 rms          5147 May 19 16:38 m-sequent.h
  -rw-rw-rw-  1 rms            21 Mar 18  1988 m-sgi3000.h
  -rw-rw-rw-  1 rms          3234 Dec  2  1987 m-sparc.h
--- 687,691 ----
  -rw-rw-rw-  1 rms          3939 Jan 15  1988 m-plexus.h
  -rw-rw-rw-  1 rms          2045 Aug 30 16:24 m-pyramid.h
! -rw-rw-rw-  1 randy        5141 Mar 16 13:40 m-sequent.h
  -rw-rw-rw-  1 rms            21 Mar 18  1988 m-sgi3000.h
  -rw-rw-rw-  1 rms          3234 Dec  2  1987 m-sparc.h
***************
*** 687,691 ****
  -rw-rw-rw-  1 rms          2053 Nov  7  1986 m-sun1.h
  -rw-rw-rw-  1 rms          2741 Feb 13  1988 m-sun2.h
! -rw-rw-rw-  1 rms           374 May 14 01:23 m-sun3.h
  -rw-rw-rw-  1 rms          2235 Dec 28 23:48 m-sun386.h
  -rw-rw-rw-  1 rms          2335 Aug 31 19:32 m-tahoe.h
--- 693,697 ----
  -rw-rw-rw-  1 rms          2053 Nov  7  1986 m-sun1.h
  -rw-rw-rw-  1 rms          2741 Feb 13  1988 m-sun2.h
! -rw-rw-rw-  1 rms           374 May 14  1988 m-sun3.h
  -rw-rw-rw-  1 rms          2235 Dec 28 23:48 m-sun386.h
  -rw-rw-rw-  1 rms          2335 Aug 31 19:32 m-tahoe.h
***************
*** 694,698 ****
  -rw-rw-rw-  1 rms          3646 Jan 15  1988 m-template.h
  -rw-rw-rw-  1 rms          3922 Jan 15  1988 m-tower32.h
! -rw-rw-rw-  1 rms          4101 Jun 27 22:37 m-ustation.h
  -rw-rw-rw-  1 rms          2715 Apr  8  1987 m-vax.h
  -rw-rw-rw-  1 rms          4708 Jan 15  1988 m-wicat.h
--- 700,704 ----
  -rw-rw-rw-  1 rms          3646 Jan 15  1988 m-template.h
  -rw-rw-rw-  1 rms          3922 Jan 15  1988 m-tower32.h
! -rw-rw-rw-  1 rms          4101 Jun 27  1988 m-ustation.h
  -rw-rw-rw-  1 rms          2715 Apr  8  1987 m-vax.h
  -rw-rw-rw-  1 rms          4708 Jan 15  1988 m-wicat.h
***************
*** 699,705 ****
  -rw-rw-rw-  1 rms          6730 Sep 29  1986 macros.c
  -rw-rw-rw-  1 rms          1171 Sep 29  1986 macros.h
! -rw-rw-rw-  1 rms         23637 Feb 13 05:37 malloc.c
  -rw-rw-rw-  1 rms          6275 Oct  1  1986 marker.c
! -rw-rw-rw-  1 rms         33043 May 23 15:04 minibuf.c
  -rw-rw-rw-  1 rms          6160 Sep 29  1986 mocklisp.c
  -rw-rw-rw-  1 rms          1262 Jun 19  1986 ndir.h
--- 705,711 ----
  -rw-rw-rw-  1 rms          6730 Sep 29  1986 macros.c
  -rw-rw-rw-  1 rms          1171 Sep 29  1986 macros.h
! -rw-rw-rw-  1 rms         24913 Apr  7 22:12 malloc.c
  -rw-rw-rw-  1 rms          6275 Oct  1  1986 marker.c
! -rw-rw-rw-  1 rms         33061 Mar 31 18:50 minibuf.c
  -rw-rw-rw-  1 rms          6160 Sep 29  1986 mocklisp.c
  -rw-rw-rw-  1 rms          1262 Jun 19  1986 ndir.h
***************
*** 709,713 ****
  -rw-rw-rw-  1 rms           215 Mar 17  1987 precomp.com
  -rw-rw-rw-  1 rms         17295 Jul 28 11:12 print.c
! -rw-rw-rw-  1 rms         58392 Aug 20 13:27 process.c
  -rw-rw-rw-  1 rms          2894 Sep 29  1986 process.h
  -rw-rw-rw-  1 rms          1245 Sep 29  1986 pwd.h
--- 715,719 ----
  -rw-rw-rw-  1 rms           215 Mar 17  1987 precomp.com
  -rw-rw-rw-  1 rms         17295 Jul 28 11:12 print.c
! -rw-rw-rw-  1 rms         59800 Apr 18 13:00 process.c
  -rw-rw-rw-  1 rms          2894 Sep 29  1986 process.h
  -rw-rw-rw-  1 rms          1245 Sep 29  1986 pwd.h
***************
*** 717,723 ****
  -rw-rw-rw-  1 rms          3898 Mar  5  1987 s-bsd4-1.h
  -rw-rw-rw-  1 rms          3409 Mar  5  1987 s-bsd4-2.h
! -rw-rw-rw-  1 rms          3436 May 14 01:23 s-bsd4-3.h
! -rw-rw-rw-  1 rms          6978 Dec 28 23:05 s-hpux.h
! -rw-rw-rw-  1 rms          5279 May 28 02:29 s-iris3-5.h
  -rw-rw-rw-  1 rms          5290 Dec 28 23:46 s-iris3-6.h
  -rw-rw-rw-  1 rms          5045 Jul 12 22:05 s-rtu.h
--- 723,729 ----
  -rw-rw-rw-  1 rms          3898 Mar  5  1987 s-bsd4-1.h
  -rw-rw-rw-  1 rms          3409 Mar  5  1987 s-bsd4-2.h
! -rw-rw-rw-  1 rms          3436 May 14  1988 s-bsd4-3.h
! -rw-rw-rw-  1 randy        7102 Mar 14 17:49 s-hpux.h
! -rw-rw-rw-  1 rms          5279 May 28  1988 s-iris3-5.h
  -rw-rw-rw-  1 rms          5290 Dec 28 23:46 s-iris3-6.h
  -rw-rw-rw-  1 rms          5045 Jul 12 22:05 s-rtu.h
***************
*** 745,752 ****
  -rw-rw-rw-  1 rms         29886 Jan 19  1988 syntax.c
  -rw-rw-rw-  1 rms          3423 Sep 29  1986 syntax.h
! -rw-rw-rw-  1 rms         81809 Feb  9 06:49 sysdep.c
  -rw-rw-rw-  1 rms           770 Jun 29  1987 temacs.opt
! -rw-rw-rw-  1 rms         32474 Jul 18 01:51 term.c
! -rw-rw-rw-  1 rms         18406 Jun 18 09:19 termcap.c
  -rw-rw-rw-  1 rms          2330 Sep 29  1986 termchar.h
  -rw-rw-rw-  1 rms          1769 Sep 29  1986 termhooks.h
--- 751,758 ----
  -rw-rw-rw-  1 rms         29886 Jan 19  1988 syntax.c
  -rw-rw-rw-  1 rms          3423 Sep 29  1986 syntax.h
! -rw-rw-rw-  1 rms         82235 Apr 24 01:26 sysdep.c
  -rw-rw-rw-  1 rms           770 Jun 29  1987 temacs.opt
! -rw-rw-rw-  1 rms         32524 Mar 29 10:49 term.c
! -rw-rw-rw-  1 rms         18406 Jun 18  1988 termcap.c
  -rw-rw-rw-  1 rms          2330 Sep 29  1986 termchar.h
  -rw-rw-rw-  1 rms          1769 Sep 29  1986 termhooks.h
***************
*** 754,762 ****
  -rw-rw-rw-  1 rms          1644 Sep 29  1986 termopts.h
  -rw-rw-rw-  1 rms           177 Feb 26  1987 testemacs.com
! -rw-rw-rw-  1 rms         11344 Apr 11  1988 tparam.c
  -rw-rw-rw-  1 rms          9119 Sep 29  1986 uaf.h
  -rw-rw-rw-  1 rms         10717 Aug  9 19:08 undo.c
  -rw-rw-rw-  1 rms          2694 Sep 29  1986 undo.h
! -rw-rw-rw-  1 rms         26713 May 10 21:58 unexconvex.c
  -rw-rw-rw-  1 rms         27554 Aug 20 12:22 unexec.c
  -rw-rw-rw-  1 rms         12344 Apr 24  1988 unexenix.c
--- 760,768 ----
  -rw-rw-rw-  1 rms          1644 Sep 29  1986 termopts.h
  -rw-rw-rw-  1 rms           177 Feb 26  1987 testemacs.com
! -rw-rw-rw-  1 rms         11391 Apr  6 23:55 tparam.c
  -rw-rw-rw-  1 rms          9119 Sep 29  1986 uaf.h
  -rw-rw-rw-  1 rms         10717 Aug  9 19:08 undo.c
  -rw-rw-rw-  1 rms          2694 Sep 29  1986 undo.h
! -rw-rw-rw-  1 rms         26713 May 10  1988 unexconvex.c
  -rw-rw-rw-  1 rms         27554 Aug 20 12:22 unexec.c
  -rw-rw-rw-  1 rms         12344 Apr 24  1988 unexenix.c
***************
*** 769,781 ****
  -rw-rw-rw-  1 rms          6165 Apr 25  1987 vmsmap.c
  -rw-rw-rw-  1 rms           649 May 22  1987 vmspaths.h
! -rw-rw-rw-  1 rms         55077 Jun 10 09:07 window.c
  -rw-rw-rw-  1 rms          8552 Feb 19  1987 window.h
  -rw-rw-rw-  1 rms         22104 Feb 24 06:36 x11fns.c
! -rw-rw-rw-  1 rms         52967 Feb  6 22:48 x11term.c
  -rw-rw-rw-  1 rms           583 Apr 19  1988 x11term.h
! -rw-rw-rw-  1 rms         57128 Dec 28 22:30 xdisp.c
  -rw-rw-rw-  1 rms         37663 Aug 10 00:28 xfns.c
! -rw-rw-rw-  1 rms         11566 May 31 03:23 xmenu.c
  -rw-rw-rw-  1 rms         46341 Dec 28 23:09 xterm.c
  -rw-rw-rw-  1 rms          1186 Sep  7  1987 xterm.h
! -rw-rw-rw-  1 rms         13353 Aug 15 23:03 ymakefile
--- 775,787 ----
  -rw-rw-rw-  1 rms          6165 Apr 25  1987 vmsmap.c
  -rw-rw-rw-  1 rms           649 May 22  1987 vmspaths.h
! -rw-rw-rw-  1 rms         55077 Jun 10  1988 window.c
  -rw-rw-rw-  1 rms          8552 Feb 19  1987 window.h
  -rw-rw-rw-  1 rms         22104 Feb 24 06:36 x11fns.c
! -rw-rw-rw-  1 rms         52924 Apr  6 13:45 x11term.c
  -rw-rw-rw-  1 rms           583 Apr 19  1988 x11term.h
! -rw-rw-rw-  1 rms         57449 Apr 26 16:13 xdisp.c
  -rw-rw-rw-  1 rms         37663 Aug 10 00:28 xfns.c
! -rw-rw-rw-  1 rms         11727 Apr  6 21:36 xmenu.c
  -rw-rw-rw-  1 rms         46341 Dec 28 23:09 xterm.c
  -rw-rw-rw-  1 rms          1186 Sep  7  1987 xterm.h
! -rw-rw-rw-  1 rms         13594 Apr 19 20:26 ymakefile
diff -rc2N dist-18.53/etc/ChangeLog dist-18.54/etc/ChangeLog
*** dist-18.53/etc/ChangeLog	Tue Feb 21 12:59:03 1989
--- dist-18.54/etc/ChangeLog	Tue Apr 18 21:32:26 1989
***************
*** 1,2 ****
--- 1,14 ----
+ Tue Apr 18 21:31:25 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* loadst.c: on bsd4.3, use gettimeofday instead of CPUSTATES.
+ 
+ Thu Mar 16 13:43:07 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* MACHINES: m-sequent.h works for symmetry also.
+ 
+ Mon Mar 13 17:03:06 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* MACHINES: Added note mentioning m-news3.0.h.
+ 
  Tue Feb 21 12:58:55 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
  
diff -rc2N dist-18.53/etc/MACHINES dist-18.54/etc/MACHINES
*** dist-18.53/etc/MACHINES	Fri Feb 24 06:43:22 1989
--- dist-18.54/etc/MACHINES	Tue Apr 25 22:06:10 1989
***************
*** 1,4 ****
  This is a list of the status of GNU Emacs on various machines and systems.
! Last updated 23 Feb 1989
  
  Systems:
--- 1,4 ----
  This is a list of the status of GNU Emacs on various machines and systems.
! Last updated 25 April 1989
  
  Systems:
***************
*** 334,343 ****
    Changes for 18.49 are merged in 18.50.  18.52 seems to work.
  
!   Note that the compilation of etc/loadst.c requires the option -lmld.
  
  Macintosh
  
    We are boycotting Apple because of Apple's efforts to take away
!   our freedom to write free software compatible with hoarded software.
    See the file APPLE in this directory for more information.
  
--- 334,354 ----
    Changes for 18.49 are merged in 18.50.  18.52 seems to work.
  
!   Note that the compilation of etc/loadst.c requires editing etc/Makefile.
!   See the comment in that file.
  
+   Someone says that with the yellow pages you must change two definitions
+   in m-iris4d.h as follows:
+ 
+     #define LIBS_MACHINE -lsun -lbsd -lPW -lmld
+     #define C_SWITCH_MACHINE -I/usr/include/sun -I/usr/include/bsd
+ 
  Macintosh
  
    We are boycotting Apple because of Apple's efforts to take away
!   our freedom to write compatible imitations of existing software.
!   If you value your freedom to write such programs, we urge you
!   not to buy from Apple, not to develop software for Apple, and
!   certainly not to accept a job with Apple.
! 
    See the file APPLE in this directory for more information.
  
***************
*** 389,394 ****
--- 400,414 ----
    Works as of 17.56.
  
+ Prime EXL (m-intel386.h, s-usg5-3.h)
+ 
+   18.54 should work.
+ 
  Pyramid (m-pyramid.h; s-bsd4-2.h)
  
+   In OSx 4.0, it seems necessary to add the following two lines
+   to m-pyramid.h:
+      #define _longjmp longjmp
+      #define _setjmp setjmp
+ 
    In Pyramid system 2.5 there has been a compiler bug making
    Emacs crash just after screen-splitting with Qnil containing 0.
***************
*** 404,413 ****
    in when alloca.s is preprocessed, in order to define _longjmp and _setjmp.
  
! Sequent Balance (m-sequent.h; s-bsd4-2.h)
  
!   Emacs 18.51 should work on system version 3.0.  18.52 is said to work.
!   Delete some lines at the end of m-sequent.h for earlier system versions.
  
! SONY News-800 (m-news800.h; s-bsd4-2.h)
  
    18.52 should work.
--- 424,434 ----
    in when alloca.s is preprocessed, in order to define _longjmp and _setjmp.
  
! Sequent (m-sequent.h; s-bsd4-2.h)
  
!   For balance and symmetry.  Emacs 18.51 should work on system version
!   3.0.  18.5[23] is said to work.  Delete some lines at the end of
!   m-sequent.h for earlier system versions.
  
! SONY News (m-news.h; s-bsd4-2.h, or s-bsd4-3.h for system release 3)
  
    18.52 should work.
***************
*** 493,498 ****
    Works.  Note that "ultrix" is essentially 4.2 or 4.3, depending on version.
  
!   Ultrix 3.0 has incompatibilities in its X library; to solve them,
!   you need to prevent XvmsAlloc.o in Xlib from being used.  Israel Pinkas says:
  
      I added the following lines to config.h after the X defines:
--- 514,520 ----
    Works.  Note that "ultrix" is essentially 4.2 or 4.3, depending on version.
  
!   Ultrix 3.0 has incompatibilities in its X library if you have the
!   Ultrix version of X.  To solve them, you need to prevent XvmsAlloc.o
!   in Xlib from being used.  Israel Pinkas says:
  
      I added the following lines to config.h after the X defines:
diff -rc2N dist-18.53/etc/Makefile dist-18.54/etc/Makefile
*** dist-18.53/etc/Makefile	Thu Jun 16 08:00:43 1988
--- dist-18.54/etc/Makefile	Mon Apr 17 19:34:45 1989
***************
*** 2,5 ****
--- 2,7 ----
  # For Xenix.  Needed for movemail
  #  LOADLIBES= -lx
+ # For Iris 4d.  Needed for loadst.
+ #  LOADLIBES = -lmld
  
  EXECUTABLES = test-distrib etags ctags loadst make-docfile \
diff -rc2N dist-18.53/etc/SUN-SUPPORT dist-18.54/etc/SUN-SUPPORT
*** dist-18.53/etc/SUN-SUPPORT	Mon May 25 21:20:59 1987
--- dist-18.54/etc/SUN-SUPPORT	Wed Mar 15 23:45:09 1989
***************
*** 6,12 ****
  To enable use of these files and programs, define the configuration
  switch HAVE_SUN_WINDOWS in src/config.h before compiling Emacs.
! The definition of HAVE_SUN_WINDOWS must precede the #include m-sun2.h
! or #include m-sun3.h.
! If you must change PURESIZE, do so after the #include m-sun2.h
  
  This software is based on SunView for Sun UNIX 4.2 Release 3.2,
--- 6,12 ----
  To enable use of these files and programs, define the configuration
  switch HAVE_SUN_WINDOWS in src/config.h before compiling Emacs.
! The definition of HAVE_SUN_WINDOWS must precede the #include m-sun3.h
! or #include m-sun4.h.
! If you must change PURESIZE, do so after the #include m-sun3.h
  
  This software is based on SunView for Sun UNIX 4.2 Release 3.2,
***************
*** 16,20 ****
  
     The GNU Emacs files lisp/term/sun.el, lisp/sun-mouse.el,
! lisp/sun-mouse-fns.el, and src/sunfns.c provide emacs support for the
  Emacstool and function keys.  If your terminal type is SUN (that is,
  if your environment variable TERM is set to SUN), then Emacs will
--- 16,20 ----
  
     The GNU Emacs files lisp/term/sun.el, lisp/sun-mouse.el,
! lisp/sun-fns.el, and src/sunfns.c provide emacs support for the
  Emacstool and function keys.  If your terminal type is SUN (that is,
  if your environment variable TERM is set to SUN), then Emacs will
***************
*** 21,27 ****
  automatically load the file lisp/term/sun.el.  This, in turn, will
  ensure that sun-mouse.el is autoloaded when any mouse events are
! detected.  It is suggested that sun-mouse and sun-mouse-fns be
  included in your site-init.el file, so that they will always be loaded
! when running on a Sun workstation.  [Increase PURESIZE to 153000].
  
     Support for the Sun function keys requires disconnecting the standard
--- 21,27 ----
  automatically load the file lisp/term/sun.el.  This, in turn, will
  ensure that sun-mouse.el is autoloaded when any mouse events are
! detected.  It is suggested that sun-mouse and sun-fns be
  included in your site-init.el file, so that they will always be loaded
! when running on a Sun workstation.  [Increase PURESIZE to 154000].
  
     Support for the Sun function keys requires disconnecting the standard
***************
*** 48,52 ****
     This version also includes support for copying to and from the
  sun-windows "stuff" selection.  The keyboard bindings defined in 
! lisp/sun-mouse-fns.el let you move the current region to the "STUFF"
  selection and vice versa.  Just set point with the left button, set
  mark with the middle button, (the region is automatically copied to
--- 48,52 ----
     This version also includes support for copying to and from the
  sun-windows "stuff" selection.  The keyboard bindings defined in 
! lisp/sun-fns.el let you move the current region to the "STUFF"
  selection and vice versa.  Just set point with the left button, set
  mark with the middle button, (the region is automatically copied to
***************
*** 73,77 ****
  
  GNU Emacs EXAMPLES:
!    See definitions in lisp/sun-mouse-fns.el for examples.
  
     You can redefine the cursor that is displayed in the emacs window.
--- 73,77 ----
  
  GNU Emacs EXAMPLES:
!    See definitions in lisp/sun-fns.el for examples.
  
     You can redefine the cursor that is displayed in the emacs window.
***************
*** 111,115 ****
  are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function
  is called. 
!     See documentation on "define-mouse" or look at lisp/sun-mouse-fns.el
  to see how this is done.
      Defines two functions to pass between region and sun-selection
--- 111,115 ----
  are bound (*mouse-window* *mouse-x* *mouse-y*) and the selected function
  is called. 
!     See documentation on "define-mouse" or look at lisp/sun-fns.el
  to see how this is done.
      Defines two functions to pass between region and sun-selection
***************
*** 117,121 ****
  During menu evaluation, the variables *menu-window* *menu-x* *menu-y* are bound.
  
! lisp/sun-mouse-fns.el
      The definition of the default menu and mouse function bindings.
  
--- 117,121 ----
  During menu evaluation, the variables *menu-window* *menu-x* *menu-y* are bound.
  
! lisp/sun-fns.el
      The definition of the default menu and mouse function bindings.
  
diff -rc2N dist-18.53/etc/emacs.icon dist-18.54/etc/emacs.icon
*** dist-18.53/etc/emacs.icon	Fri Mar 13 19:16:09 1987
--- dist-18.54/etc/emacs.icon	Thu Mar 16 17:46:09 1989
***************
*** 10,28 ****
  	0x8000,0x0000,0x0330,0x1C01,0x8000,0x0000,0x00C0,0x1C01,
  	0x8003,0xFFFF,0xFFFF,0xFE01,0x8005,0xFFFF,0xFFFF,0xFE01,
! 	0x8004,0xFFFF,0xFFFF,0xFC01,0x800C,0x787F,0xFFFF,0xF801,
! 	0x800C,0x77FF,0xFFFF,0xF801,0x8004,0x77E3,0x6FFF,0xF801,
! 	0x8000,0x762D,0x6FFF,0xF801,0x8008,0x77AD,0x6FFF,0xF801,
! 	0x800C,0x77AD,0x6FFF,0xF801,0x8008,0x786D,0x8FFF,0xF801,
! 	0x8000,0x7FFF,0xFFFF,0xF801,0x8004,0x7FFF,0xFFFF,0xF801,
! 	0x800C,0x7FEF,0xBFFF,0xF801,0x800C,0x7FE7,0x3FFF,0xF801,
! 	0x8000,0x7FEA,0xB1CE,0x3801,0x8004,0x7FED,0xADB5,0xF801,
! 	0x800C,0x7FEF,0xADBE,0x7801,0x801C,0x7FEF,0xADB7,0xB801,
! 	0x8008,0x7FEF,0xB2CC,0x7801,0x8008,0x7FFF,0xFFFF,0xF801,
! 	0x8000,0x3FFF,0xFFFF,0xF001,0x8008,0x1FFF,0xFFFF,0xE001,
! 	0x801C,0x0003,0x6000,0x0001,0x801C,0x0001,0x43E0,0x0001,
! 	0x8008,0x0001,0x4410,0x0001,0x8000,0x0001,0x49C8,0x0001,
! 	0x8014,0x0001,0x4A28,0x0001,0x8008,0x0001,0x3228,0x0001,
! 	0x8008,0x0000,0x8428,0x0001,0x8000,0x0000,0x7828,0x0001,
! 	0x8000,0x0000,0x0028,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
  	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
--- 10,28 ----
  	0x8000,0x0000,0x0330,0x1C01,0x8000,0x0000,0x00C0,0x1C01,
  	0x8003,0xFFFF,0xFFFF,0xFE01,0x8005,0xFFFF,0xFFFF,0xFE01,
! 	0x8004,0xFFFF,0xFFFF,0xFC01,0x8004,0x787F,0xFFFF,0xF801,
! 	0x8004,0x77FF,0xFFFF,0xF801,0x8000,0x77E3,0x6FFF,0xF801,
! 	0x8000,0x762D,0x6FFF,0xF801,0x8004,0x77AD,0x6FFF,0xF801,
! 	0x800C,0x77AD,0x6FFF,0xF801,0x8004,0x786D,0x8FFF,0xF801,
! 	0x8000,0x7FFF,0xFFFF,0xF801,0x8000,0x7FFF,0xFFFF,0xF801,
! 	0x8000,0x7E0F,0xFFFF,0xF801,0x8008,0x7EFF,0xFFFF,0xF801,
! 	0x800C,0x7EF9,0x31CE,0x3801,0x8004,0x7E1A,0xADB5,0xF801,
! 	0x8000,0x7EFA,0xADBE,0x7801,0x8000,0x7EFB,0xADB7,0xB801,
! 	0x8000,0x7E0B,0xB2CC,0x7801,0x8000,0x7FFF,0xFFFF,0xF801,
! 	0x8004,0x3FFF,0xFFFF,0xF001,0x8004,0x1FFF,0xFFFF,0xE001,
! 	0x800C,0x0003,0x6000,0x0001,0x8000,0x0001,0x43C0,0x0001,
! 	0x8000,0x0001,0x4420,0x0001,0x8000,0x0001,0x4990,0x0001,
! 	0x8000,0x0001,0x4A50,0x0001,0x8004,0x0001,0x3250,0x0001,
! 	0x8004,0x0000,0x8450,0x0001,0x800A,0x0000,0x7850,0x0001,
! 	0x8000,0x0000,0x0050,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
  	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
diff -rc2N dist-18.53/etc/emacstool.1 dist-18.54/etc/emacstool.1
*** dist-18.53/etc/emacstool.1	Thu Mar 19 22:35:04 1987
--- dist-18.54/etc/emacstool.1	Wed Mar 15 23:43:52 1989
***************
*** 83,95 ****
  lisp/term/sun.el,
  lisp/sun-mouse.el, 
! lisp/sun-mouse-fns.el, 
  and 
  src/sunfns.c
  provide emacs support for the Emacstool and function keys.
! If your terminal type is 
  .I SUN
! (that is, if your environment variable TERM is set to 
  .I SUN), 
! then Emacs will automatically load the file lisp/term/sun.el.
  This, in turn, will ensure that sun-mouse.el is autoloaded when any mouse
  events are detected.  It is suggested that 
--- 83,98 ----
  lisp/term/sun.el,
  lisp/sun-mouse.el, 
! lisp/sun-fns.el, 
  and 
  src/sunfns.c
  provide emacs support for the Emacstool and function keys.
! Emacstool will automatically set the TERM environment variable to be "sun"
! and unset the environment variable TERMCAP.  That is, these variables will
! not be inherited from the shell that starts Emacstool.
! Since the terminal type is
  .I SUN
! (that is, the environment variable TERM is set to 
  .I SUN), 
! Emacs will automatically load the file lisp/term/sun.
  This, in turn, will ensure that sun-mouse.el is autoloaded when any mouse
  events are detected.  It is suggested that 
***************
*** 96,112 ****
  .I sun-mouse 
  and
! .I sun-mouse-fns
! be included in your site-init.el file, so that they will always be loaded
  when running on a Sun workstation.
  .PP
  The file src/sunfns.c defines several useful functions for emacs on
  the Sun.  Among these are procedures to pop-up SunView 
  .I menus, 
! put and get from the 
  .I STUFF
  buffer, and a procedure for changing the cursor 
  .I icon.
! If you want to define cursor icons, 
! try using the functions in lisp/sun-cursors.el.
  .SH BUGS
  It takes a few milliseconds to create a menu before it pops up.
--- 99,122 ----
  .I sun-mouse 
  and
! .I sun-fns
! be loaded in your site-init.el file, so that they will always be loaded
  when running on a Sun workstation.
  .PP
+ In addition, Emacstool sets the environment variable IN_EMACSTOOL = "t".
+ Lisp code in your ~/.emacs can use (getenv "IN_EMACSTOOL")
+ to determine whether to do Emacstool specific initalization.
+ Sun.el uses this to automatically call emacstool-init (getenv "IN_EMACSTOOL")
+ is defined.
+ .PP
  The file src/sunfns.c defines several useful functions for emacs on
  the Sun.  Among these are procedures to pop-up SunView 
  .I menus, 
! put and get from the SunView
  .I STUFF
  buffer, and a procedure for changing the cursor 
  .I icon.
! If you want to define or edit cursor icons, 
! there is a rudimentary mouse driven icon editor in the file
! lisp/sun-cursors.el.  Try invoking (sc:edit-cursor)
  .SH BUGS
  It takes a few milliseconds to create a menu before it pops up.
***************
*** 113,116 ****
--- 123,129 ----
  .SH ENVIRONMENT VARIABLES
  EMACSTOOL
+ IN_EMACSTOOL
+ TERM
+ TERMCAP
  .SH FILES
  .DT
***************
*** 118,120 ****
  .SH "SEE ALSO"
  emacs(1)
! .../etc/SUN-SUPPORT
--- 131,134 ----
  .SH "SEE ALSO"
  emacs(1)
!  .../etc/SUN-SUPPORT
!  .../lisp/term/sun.el
diff -rc2N dist-18.53/etc/emacstool.c dist-18.54/etc/emacstool.c
*** dist-18.53/etc/emacstool.c	Sun May 17 13:00:33 1987
--- dist-18.54/etc/emacstool.c	Wed Mar 15 23:34:32 1989
***************
*** 27,30 ****
--- 27,31 ----
   *
   * Original Idea: Ian Batten
+  * Updated 15-Mar-88, Jeff Peck: set IN_EMACSTOOL, TERM, TERMCAP
   * 
   */
***************
*** 245,248 ****
--- 246,250 ----
  {
    int error_code;	/* Error codes */
+   
    if(getenv("DEBUGEMACSTOOL"))
      console = fdopen (console_fd = open("/dev/console",O_WRONLY), "w");
***************
*** 249,256 ****
  
    			/* do this first, so arglist can override it */
!   frame_icon = icon_create (ICON_LABEL, "",
  			    ICON_IMAGE, &icon_image,
  			    0);
  
    if (!(argv[0] = (char *)getenv("EMACSTOOL")))	/* Set emacs command name */
        argv[0] = emacs_name;			
--- 251,280 ----
  
    			/* do this first, so arglist can override it */
!   frame_icon = icon_create (ICON_LABEL, "Emacstool",
  			    ICON_IMAGE, &icon_image,
  			    0);
  
+   putenv("IN_EMACSTOOL=t");	/* notify subprocess that it is in emacstool */
+ 
+   if (putenv("TERM=sun") != 0)	/* TTYSW will be a TERM=sun window */
+     {fprintf (stderr, "%s: Could not set TERM=sun, using `%s'\n",
+ 	     argv[0], (char *)getenv("TERM")) ;};
+   /*
+    * If TERMCAP starts with a slash, it is the pathname of the
+    * termcap file, not an entry extracted from it, so KEEP it!
+    * Otherwise, it may not relate to the new TERM, so Nuke-It.
+    * If there is no TERMCAP environment variable, don't make one.
+    */
+   {
+     char *termcap ;	/* Current TERMCAP value */
+     termcap = (char *)getenv("TERMCAP") ;
+     if (termcap && (*termcap != '/'))
+       {
+ 	if (putenv("TERMCAP=") != 0)
+ 	  {fprintf (stderr, "%s: Could not clear TERMCAP\n", argv[0]) ;} ;
+       } ;
+   } ;
+   
+   /* find command to run as subprocess in window */
    if (!(argv[0] = (char *)getenv("EMACSTOOL")))	/* Set emacs command name */
        argv[0] = emacs_name;			
diff -rc2N dist-18.53/etc/loadst.c dist-18.54/etc/loadst.c
*** dist-18.53/etc/loadst.c	Wed Jun  8 08:19:33 1988
--- dist-18.54/etc/loadst.c	Tue Apr 18 21:24:59 1989
***************
*** 242,245 ****
--- 242,246 ----
  	      s1.xfer[i] = t;
  	    }
+ #ifndef BSD4_3
  	  for (i = 0; i < CPUSTATES; i++)
  	    {
***************
*** 253,256 ****
--- 254,266 ----
  	  etime /= 60.;
  	 
+ #else
+ 	  {
+ 	    static struct timeval tv, tv1;
+ 	    gettimeofday (&tv, 0);
+ 	    etime = (tv.tv_sec - tv1.tv_sec)
+ 		+ (tv.tv_usec - tv1.tv_usec) / 1.0e6;
+ 	    tv1 = tv;
+ 	  }
+ #endif
  	  {   register max = s.xfer[0];
  	      for (i = 1; i < DK_NDRIVE; i++)
diff -rc2N dist-18.53/lisp/ChangeLog dist-18.54/lisp/ChangeLog
*** dist-18.53/lisp/ChangeLog	Fri Feb 24 08:36:17 1989
--- dist-18.54/lisp/ChangeLog	Wed Apr 26 16:17:52 1989
***************
*** 1,2 ****
--- 1,42 ----
+ Wed Apr 26 16:17:02 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* Version 18.54 released.
+ 
+ 	* term/xterm.el: Set reset-terminal-on-clear.
+ 
+ Wed Apr 12 10:45:30 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* picture.el (picture-tab): Dumb errors in prefix-arg case.
+ 
+ Tue Apr 11 01:04:53 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* lpr.el (print-region-1): For tab-conversion case, insert specd range.
+ 
+ Thu Apr  6 12:27:21 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* startup.el (normal-top-level): Use PWD envvar to set default dir.
+ 	(command-switch-alist): Doc fix.
+ 
+ 	* rmail.el (rmail-convert-to-babyl-format):
+ 	Bind case-fold-search to t for mmdf case.
+ 
+ 	* rmail.el (rmail-convert-to-babyl-format, rmail-nuke-pinhead-header):
+ 	Accept spaces at end of Unix-style From line.
+ 
+ Sun Apr  2 00:24:51 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* paths.el (rmail-spool-directory): Treat silicon-graphics-unix
+ 	like usg.
+ 
+ Tue Mar 14 17:23:47 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* rmail.el (rmail-convert-to-babyl-format): reset case-fold-search
+ 	to true in the mmdf case.
+ 
+ Mon Mar 13 16:57:03 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* tex-mode.el (TeX-common-initialization): Made lines beginning
+ 	with % separate paragraphs.
+ 
  Thu Feb 23 06:47:13 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
  
diff -rc2N dist-18.53/lisp/bg-mouse.el dist-18.54/lisp/bg-mouse.el
*** dist-18.53/lisp/bg-mouse.el	Wed Dec 31 19:00:00 1969
--- dist-18.54/lisp/bg-mouse.el	Sat Apr  1 00:59:53 1989
***************
*** 0 ****
--- 1,304 ----
+ ;; GNU Emacs code for BBN Bitgraph mouse.
+ ;; Copyright (C) Free Software Foundation, Inc. Oct 1985.
+ ;; Time stamp <89/03/21 14:27:08 gildea>
+ 
+ ;; This file is part of GNU Emacs.
+ 
+ ;; GNU Emacs is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY.  No author or distributor
+ ;; accepts responsibility to anyone for the consequences of using it
+ ;; or for whether it serves any particular purpose or works at all,
+ ;; unless he says so in writing.  Refer to the GNU Emacs General Public
+ ;; License for full details.
+ 
+ ;; Everyone is granted permission to copy, modify and redistribute
+ ;; GNU Emacs, but only under the conditions described in the
+ ;; GNU Emacs General Public License.   A copy of this license is
+ ;; supposed to have been given to you along with GNU Emacs so you
+ ;; can know your rights and responsibilities.  It should be in a
+ ;; file named COPYING.  Among other things, the copyright notice
+ ;; and this notice must be preserved on all copies.
+ 
+ 
+ ;;;  Original version by John Robinson (jr@bbn-unix.arpa, bbncca!jr), Oct 1985
+ ;;;  Modularized and enhanced by gildea@bbn.com Nov 1987
+ 
+ (provide 'bg-mouse)
+ 
+ ;;;  User customization option:
+ 
+ (defvar bg-mouse-fast-select-window nil
+   "*Non-nil for mouse hits to select new window, then execute; else just select.")
+ 
+ ;;; These numbers are summed to make the index into the mouse-map.
+ ;;; The low three bits correspond to what the mouse actually sends.
+ (defconst bg-button-r 1)
+ (defconst bg-button-m 2)
+ (defconst bg-button-c 2)
+ (defconst bg-button-l 4)
+ (defconst bg-in-modeline 8)
+ (defconst bg-in-scrollbar 16)
+ (defconst bg-in-minibuf 24)
+ 
+ ;;; semicolon screws up indenting, so use this instead
+ (defconst semicolon ?\;)
+ 
+ ;;;  Defuns:
+ 
+ (defun bg-mouse-report (prefix-arg)
+   "Read, parse, and execute a BBN BitGraph mouse click.
+ 
+ L-- move point             | These apply for mouse click in a window.
+ --R set mark               | If bg-mouse-fast-select-window is nil,
+ L-R kill region            | these commands on a nonselected window
+ -C- move point and yank    | just select that window.
+ LC- yank-pop		   |
+ -CR or LCR undo		   | \"Scroll bar\" is right-hand window column.
+ 
+ on modeline:		    on \"scroll bar\":	in minibuffer:
+ L-- scroll-up		    line to top		execute-extended-command
+ --R scroll-down		    line to bottom	eval-expression
+ -C- proportional goto-char  line to middle	suspend-emacs
+ 
+ To reinitialize the mouse if the terminal is reset, type ESC : RET"
+   (interactive "P")
+   (bg-get-tty-num semicolon)
+   (let*
+       ((screen-mouse-x (min (1- (screen-width))	;don't hit column 86!
+ 			    (/ (bg-get-tty-num semicolon) 9)))
+        (screen-mouse-y (- (1- (screen-height)) ;assume default font size.
+ 			  (/ (bg-get-tty-num semicolon) 16))) 
+        (bg-mouse-buttons (% (bg-get-tty-num ?c) 8))
+        (bg-mouse-window (bg-window-from-x-y screen-mouse-x screen-mouse-y))
+        (bg-cursor-window (selected-window))
+        (edges (window-edges bg-mouse-window))
+        (minibuf-p (= screen-mouse-y (1- (screen-height))))
+        (in-modeline-p (and (not minibuf-p)
+ 			   (= screen-mouse-y (1- (nth 3 edges)))))
+        (in-scrollbar-p (and (not minibuf-p) (not in-modeline-p)
+ 			    (>= screen-mouse-x (1- (nth 2 edges)))))
+        (same-window-p (eq bg-mouse-window bg-cursor-window))
+        (in-minibuf-p (and minibuf-p
+ 			  (not bg-mouse-window))) ;minibuf must be inactive
+        (bg-mode-bits (+ (if in-minibuf-p bg-in-minibuf 0)
+ 			(if in-modeline-p bg-in-modeline 0)
+ 			(if in-scrollbar-p bg-in-scrollbar 0)))
+        (bg-command
+ 	 (lookup-key mouse-map
+ 		     (char-to-string (+ bg-mode-bits bg-mouse-buttons))))
+        (bg-mouse-x (- screen-mouse-x (nth 0 edges)))
+        (bg-mouse-y (- screen-mouse-y (nth 1 edges))))
+     (cond ((or in-modeline-p in-scrollbar-p)
+ 	   (select-window bg-mouse-window)
+ 	   (bg-command-execute bg-command)
+ 	   (select-window bg-cursor-window))
+ 	  ((or same-window-p in-minibuf-p)
+ 	   (bg-command-execute bg-command))
+ 	  (t				;in another window
+ 	    (select-window bg-mouse-window)
+ 	    (if bg-mouse-fast-select-window
+ 		(bg-command-execute bg-command)))
+ 	  )))
+ 
+ \f


+ ;;; Library of commands:
+ 
+ (defun bg-set-point ()
+   "Move point to location of BitGraph mouse."
+   (interactive)
+   (bg-move-point-to-x-y bg-mouse-x bg-mouse-y)
+   (setq this-command 'next-line)	;make subsequent line moves work
+   (setq temporary-goal-column bg-mouse-x))
+ 
+ (defun bg-set-mark ()
+   "Set mark at location of BitGraph mouse."
+   (interactive)
+   (push-mark)
+   (bg-move-point-to-x-y bg-mouse-x bg-mouse-y)
+   (exchange-point-and-mark))
+ 
+ (defun bg-yank ()
+   "Move point to location of BitGraph mouse and yank."
+   (interactive "*")
+   (bg-move-point-to-x-y bg-mouse-x bg-mouse-y)
+   (setq this-command 'yank)
+   (yank))
+ 
+ (defun yank-pop-1 ()
+   (interactive "*")
+   (yank-pop 1))
+ 
+ (defun bg-yank-or-pop ()
+   "Move point to location of BitGraph mouse and yank or yank-pop.
+ Do a yank unless last command was a yank, in which case do a yank-pop."
+   (interactive "*")
+   (if (eql last-command 'yank)
+       (yank-pop 1)
+     (bg-yank)))
+ 
+ ;;; In 18.51, Emacs Lisp doesn't provide most-positive-fixnum
+ (defconst bg-most-positive-fixnum 8388607)
+ 
+ (defun bg-move-by-percentage ()
+   "Go to location in buffer that is the same percentage of the
+ way through the buffer as the BitGraph mouse's X position in the window."
+   (interactive)
+   ;; check carefully for overflow in intermediate calculations
+   (goto-char
+    (cond ((zerop bg-mouse-x)
+ 	  0)
+ 	 ((< (buffer-size) (/ bg-most-positive-fixnum bg-mouse-x))
+ 	  ;; no danger of overflow: compute it exactly
+ 	  (/ (* bg-mouse-x (buffer-size))
+ 	     (1- (window-width))))
+ 	 (t
+ 	  ;; overflow possible: approximate
+ 	  (* (/ (buffer-size) (1- (window-width)))
+ 	     bg-mouse-x))))
+   (beginning-of-line)
+   (what-cursor-position))
+ 
+ (defun bg-mouse-line-to-top ()
+   "Scroll the line pointed to by the BitGraph mouse to the top of the window."
+   (interactive)
+   (scroll-up bg-mouse-y))
+ 
+ (defun bg-mouse-line-to-center ()
+   "Scroll the line pointed to by the BitGraph mouse to the center 
+ of the window"
+   (interactive)
+   (scroll-up (/ (+ 2 bg-mouse-y bg-mouse-y (- (window-height))) 2)))
+ 
+ (defun bg-mouse-line-to-bottom ()
+   "Scroll the line pointed to by the mouse to the bottom of the window."
+   (interactive)
+   (scroll-up (+ bg-mouse-y (- 2 (window-height)))))
+ 
+ (defun bg-kill-region ()
+   (interactive "*")
+   (kill-region (region-beginning) (region-end)))
+ 
+ (defun bg-insert-moused-sexp ()
+   "Insert a copy of the word (actually sexp) that the mouse is pointing at.
+ Sexp is inserted into the buffer at point (where the text cursor is).
+ By gildea 7 Feb 89"
+   (interactive)
+   (let ((moused-text
+ 	  (save-excursion
+ 	    (bg-move-point-to-x-y bg-mouse-x bg-mouse-y)
+ 	    (forward-sexp 1)
+ 	    (buffer-substring (save-excursion (backward-sexp 1) (point))
+ 			      (point)))))
+     (select-window bg-cursor-window)
+     (delete-horizontal-space)
+     (cond
+      ((bolp)
+       (indent-according-to-mode))
+      ;; In Lisp assume double-quote is closing; in Text assume opening.
+      ;; Why?  Because it does the right thing most often.
+      ((save-excursion (forward-char -1)
+ 		      (and (not (looking-at "\\s\""))
+ 			   (looking-at "[`'\"\\]\\|\\s(")))
+       nil)
+      (t
+       (insert-string " ")))
+     (insert-string moused-text)
+     (or (eolp)
+ 	(looking-at "\\s.\\|\\s)")
+ 	(and (looking-at "'") (looking-at "\\sw")) ;hack for text mode
+ 	(save-excursion (insert-string " ")))))
+ \f


+ ;;; Utility functions:
+ 
+ (defun bg-get-tty-num (term-char)
+   "Read from terminal until TERM-CHAR is read, and return intervening number.
+ If non-numeric not matching TERM-CHAR, reprogram the mouse and signal an error."
+   (let
+       ((num 0)
+        (char (- (read-char) 48)))
+     (while (and (>= char 0)
+ 		(<= char 9))
+       (setq num (+ (* num 10) char))
+       (setq char (- (read-char) 48)))
+     (or (eq term-char (+ char 48))
+ 	(progn
+ 	  (bg-program-mouse)
+ 	  (error
+ 	    "Invalid data format in bg-mouse command: mouse reinitialized.")))
+     num))
+ 
+ ;;; Note that this fails in the minibuf because move-to-column doesn't
+ ;;; allow for the width of the prompt.
+ (defun bg-move-point-to-x-y (x y)
+   "Position cursor in window coordinates.
+ X and Y are 0-based character positions in the window."
+   (move-to-window-line y)
+   ;; if not on a wrapped line, zero-column will be 0
+   (let ((zero-column (current-column))
+ 	(scroll-offset (window-hscroll)))
+     ;; scrolling takes up column 0 to display the $
+     (if (> scroll-offset 0)
+ 	(setq scroll-offset (1- scroll-offset)))
+     (move-to-column (+ zero-column scroll-offset x))
+     ))
+ 
+ ;;; Returns the window that screen position (x, y) is in or nil if none,
+ ;;; meaning we are in the echo area with a non-active minibuffer.
+ ;;; If coordinates-in-window-p were not in an X-windows-specific file
+ ;;; we could use that.  In Emacs 19 can even use locate-window-from-coordinates
+ (defun bg-window-from-x-y (x y)
+   "Find window corresponding to screen coordinates.
+ X and Y are 0-based character positions on the screen."
+   (let ((edges (window-edges))
+ 	(window nil))
+     (while (and (not (eq window (selected-window)))
+ 		(or (<  y (nth 1 edges))
+ 		    (>= y (nth 3 edges))
+ 		    (<  x (nth 0 edges))
+ 		    (>= x (nth 2 edges))))
+       (setq window (next-window window))
+       (setq edges (window-edges window)))
+     (cond ((eq window (selected-window))
+ 	   nil)				;we've looped: not found
+ 	  ((not window)
+ 	   (selected-window))		;just starting: current window
+ 	  (t
+ 	    window))
+     ))
+ 
+ (defun bg-command-execute (bg-command)
+   (if (commandp bg-command)
+       (command-execute bg-command)
+     (ding)))
+ 
+ (defun bg-program-mouse ()
+   (send-string-to-terminal "\e:0;7;;;360;512;9;16;9;16c"))
+ 
+ ;;; Note that the doc string for mouse-map (as defined in subr.el)
+ ;;; says it is for the X-window mouse.  This is wrong; that keymap
+ ;;; should be used for your mouse no matter what terminal you have.
+ 
+ (or (keymapp mouse-map)
+     (setq mouse-map (make-keymap)))
+ 
+ (defun bind-bg-mouse-click (click-code function)
+   "Bind bg-mouse CLICK-CODE to run FUNCTION."
+   (define-key mouse-map (char-to-string click-code) function))
+ 
+ (bind-bg-mouse-click bg-button-l 'bg-set-point) 
+ (bind-bg-mouse-click bg-button-m 'bg-yank)
+ (bind-bg-mouse-click bg-button-r 'bg-set-mark)
+ (bind-bg-mouse-click (+ bg-button-l bg-button-m) 'yank-pop-1)
+ (bind-bg-mouse-click (+ bg-button-l bg-button-r) 'bg-kill-region)
+ (bind-bg-mouse-click (+ bg-button-m bg-button-r) 'undo)
+ (bind-bg-mouse-click (+ bg-button-l bg-button-m bg-button-r) 'undo)
+ (bind-bg-mouse-click (+ bg-in-modeline bg-button-l) 'scroll-up)
+ (bind-bg-mouse-click (+ bg-in-modeline bg-button-m) 'bg-move-by-percentage)
+ (bind-bg-mouse-click (+ bg-in-modeline bg-button-r) 'scroll-down)
+ (bind-bg-mouse-click (+ bg-in-scrollbar bg-button-l) 'bg-mouse-line-to-top)
+ (bind-bg-mouse-click (+ bg-in-scrollbar bg-button-m) 'bg-mouse-line-to-center)
+ (bind-bg-mouse-click (+ bg-in-scrollbar bg-button-r) 'bg-mouse-line-to-bottom)
+ (bind-bg-mouse-click (+ bg-in-minibuf bg-button-l) 'execute-extended-command)
+ (bind-bg-mouse-click (+ bg-in-minibuf bg-button-m) 'suspend-emacs)
+ (bind-bg-mouse-click (+ bg-in-minibuf bg-button-r) 'eval-expression)
+ 
diff -rc2N dist-18.53/lisp/lpr.el dist-18.54/lisp/lpr.el
*** dist-18.53/lisp/lpr.el	Wed Dec 28 23:42:37 1988
--- dist-18.54/lisp/lpr.el	Tue Apr 11 01:05:48 1989
***************
*** 60,64 ****
  	  (set-buffer (get-buffer-create " *spool temp*"))
  	  (widen) (erase-buffer)
! 	  (insert-buffer-substring oldbuf)
  	  (setq tab-width width)
  	  (untabify (point-min) (point-max))
--- 60,64 ----
  	  (set-buffer (get-buffer-create " *spool temp*"))
  	  (widen) (erase-buffer)
! 	  (insert-buffer-substring oldbuf start end)
  	  (setq tab-width width)
  	  (untabify (point-min) (point-max))
diff -rc2N dist-18.53/lisp/paths.el dist-18.54/lisp/paths.el
*** dist-18.53/lisp/paths.el	Tue Jul 12 21:58:09 1988
--- dist-18.54/lisp/paths.el	Sun Apr  2 00:25:24 1989
***************
*** 54,58 ****
  
  (defconst rmail-spool-directory
!   (if (memq system-type '(hpux usg-unix-v unisoft-unix rtu))
        "/usr/mail/"
      "/usr/spool/mail/")
--- 54,59 ----
  
  (defconst rmail-spool-directory
!   (if (memq system-type '(hpux usg-unix-v unisoft-unix rtu
! 			       silicon-graphics-unix))
        "/usr/mail/"
      "/usr/spool/mail/")
diff -rc2N dist-18.53/lisp/picture.el dist-18.54/lisp/picture.el
*** dist-18.53/lisp/picture.el	Wed Dec  9 18:32:20 1987
--- dist-18.54/lisp/picture.el	Wed Apr 12 10:45:25 1989
***************
*** 336,342 ****
      (if arg
  	(let (indent-tabs-mode)
! 	  (delete-region opoint point)
  	  (indent-to target)))))
- 
  \f


  ;; Picture Rectangles
--- 336,341 ----
      (if arg
  	(let (indent-tabs-mode)
! 	  (delete-region opoint (point))
  	  (indent-to target)))))
  \f


  ;; Picture Rectangles
Binary files dist-18.53/lisp/picture.elc and dist-18.54/lisp/picture.elc differ
diff -rc2N dist-18.53/lisp/rmail.el dist-18.54/lisp/rmail.el
*** dist-18.53/lisp/rmail.el	Wed Dec 28 23:07:32 1988
--- dist-18.54/lisp/rmail.el	Thu Apr  6 19:26:17 1989
***************
*** 528,536 ****
  	       (narrow-to-region (point) (point-max)))
  	      ;;*** MMDF format
! 	      ((looking-at mmdf-delim1)
! 	       (replace-match "\^L\n0, unseen,,\n*** EOOH ***\n")
! 	       (setq start (point))
! 	       (re-search-forward mmdf-delim2 nil t)
! 	       (replace-match "\^_")
  	       (save-excursion
  		 (save-restriction
--- 528,538 ----
  	       (narrow-to-region (point) (point-max)))
  	      ;;*** MMDF format
! 	      ((let ((case-fold-search t))
! 		 (looking-at mmdf-delim1))
! 	       (let ((case-fold-search t))
! 		 (replace-match "\^L\n0, unseen,,\n*** EOOH ***\n")
! 		 (setq start (point))
! 		 (re-search-forward mmdf-delim2 nil t)
! 		 (replace-match "\^_"))
  	       (save-excursion
  		 (save-restriction
***************
*** 537,542 ****
  		   (narrow-to-region start (1- (point)))
  		   (goto-char (point-min))
! 		   (while (search-forward "\n\^_" nil t); single char "\^_"
! 		     (replace-match "\n^_")))); 2 chars: "^" and "_"
  	       (narrow-to-region (point) (point-max))
  	       (setq count (1+ count)))
--- 539,544 ----
  		   (narrow-to-region start (1- (point)))
  		   (goto-char (point-min))
! 		   (while (search-forward "\n\^_" nil t) ; single char "\^_"
! 		     (replace-match "\n^_")))) ; 2 chars: "^" and "_"
  	       (narrow-to-region (point) (point-max))
  	       (setq count (1+ count)))
***************
*** 550,554 ****
  			    "From [^ \n]*\\(\\|\".*\"[^ \n]*\\)  ?[^ \n]* [^ \n]* *"
  			    "[0-9]* [0-9:]* \\([A-Z]?[A-Z][A-Z]T \\|[-+][0-9][0-9][0-9][0-9] \\|\\)" ; EDT, -0500
! 			    "19[0-9]*$\\|"
  			    mmdf-delim1 "\\|"
  			    "^Babyl Options:\\|"
--- 552,556 ----
  			    "From [^ \n]*\\(\\|\".*\"[^ \n]*\\)  ?[^ \n]* [^ \n]* *"
  			    "[0-9]* [0-9:]* \\([A-Z]?[A-Z][A-Z]T \\|[-+][0-9][0-9][0-9][0-9] \\|\\)" ; EDT, -0500
! 			    "19[0-9]* *$\\|"
  			    mmdf-delim1 "\\|"
  			    "^Babyl Options:\\|"
***************
*** 593,597 ****
  	(let ((case-fold-search nil))
  	  (if (re-search-forward
! 	       "^From \\([^ ]*\\(\\|\".*\"[^ ]*\\)\\)  ?\\([^ ]*\\) \\([^ ]*\\) *\\([0-9]*\\) \\([0-9:]*\\)\\( [A-Z]?[A-Z][A-Z]T\\|[-+][0-9][0-9][0-9][0-9]\\|\\) 19\\([0-9]*\\)\n" nil t)
  	      (replace-match
  		(concat
--- 595,599 ----
  	(let ((case-fold-search nil))
  	  (if (re-search-forward
! 	       "^From \\([^ ]*\\(\\|\".*\"[^ ]*\\)\\)  ?\\([^ ]*\\) \\([^ ]*\\) *\\([0-9]*\\) \\([0-9:]*\\)\\( [A-Z]?[A-Z][A-Z]T\\|[-+][0-9][0-9][0-9][0-9]\\|\\) 19\\([0-9]*\\) *\n" nil t)
  	      (replace-match
  		(concat
diff -rc2N dist-18.53/lisp/startup.el dist-18.54/lisp/startup.el
*** dist-18.53/lisp/startup.el	Sun Jul 10 14:43:37 1988
--- dist-18.54/lisp/startup.el	Fri Apr  7 22:03:10 1989
***************
*** 64,68 ****
  Elements look like (SWITCH-STRING . HANDLER-FUNCTION).
  HANDLER-FUNCTION receives switch name as sole arg;
! remaining command-line args are in the variable `args'.")
  
  (defvar term-setup-hook nil
--- 64,68 ----
  Elements look like (SWITCH-STRING . HANDLER-FUNCTION).
  HANDLER-FUNCTION receives switch name as sole arg;
! remaining command-line args are in the variable `command-line-args-left'.")
  
  (defvar term-setup-hook nil
***************
*** 80,83 ****
--- 80,86 ----
        (message "Back to top level.")
      (setq command-line-processed t)
+     ;; In presence of symlinks, switch to cleaner form of default directory.
+     (if (getenv "PWD")
+ 	(setq default-directory (file-name-as-directory (getenv "PWD"))))
      (unwind-protect
  	(command-line)
diff -rc2N dist-18.53/lisp/term/bbn.el dist-18.54/lisp/term/bbn.el
*** dist-18.53/lisp/term/bbn.el	Wed Dec 31 19:00:00 1969
--- dist-18.54/lisp/term/bbn.el	Thu Apr  6 23:27:15 1989
***************
*** 0 ****
--- 1,1 ----
+ (load (concat term-file-prefix "bg") nil t)
diff -rc2N dist-18.53/lisp/term/bg.el dist-18.54/lisp/term/bg.el
*** dist-18.53/lisp/term/bg.el	Wed Dec 31 19:00:00 1969
--- dist-18.54/lisp/term/bg.el	Thu Apr  6 23:25:29 1989
***************
*** 0 ****
--- 1,6 ----
+ ;; BBN bitgraph terminal.
+ 
+ (load (concat term-file-prefix "vt100") nil t) ;BG keyboard is VT100 clone
+ (autoload 'bg-mouse-report "bg-mouse")
+ (global-set-key "\e:" 'bg-mouse-report)
+ (send-string-to-terminal "\e:0;7;;;360;512;9;16;9;16c")
diff -rc2N dist-18.53/lisp/term/bgnv.el dist-18.54/lisp/term/bgnv.el
*** dist-18.53/lisp/term/bgnv.el	Wed Dec 31 19:00:00 1969
--- dist-18.54/lisp/term/bgnv.el	Thu Apr  6 23:27:16 1989
***************
*** 0 ****
--- 1,1 ----
+ (load (concat term-file-prefix "bg") nil t)
diff -rc2N dist-18.53/lisp/term/bgrv.el dist-18.54/lisp/term/bgrv.el
*** dist-18.53/lisp/term/bgrv.el	Wed Dec 31 19:00:00 1969
--- dist-18.54/lisp/term/bgrv.el	Thu Apr  6 23:27:17 1989
***************
*** 0 ****
--- 1,1 ----
+ (load (concat term-file-prefix "bg") nil t)
diff -rc2N dist-18.53/lisp/term/sun.el dist-18.54/lisp/term/sun.el
*** dist-18.53/lisp/term/sun.el	Fri Aug 14 18:02:30 1987
--- dist-18.54/lisp/term/sun.el	Wed Mar 15 23:33:32 1989
***************
*** 26,29 ****
--- 26,34 ----
    (ignore))
  
+ (defun unbound-key ()
+   "filler for compound keymaps"
+   (interactive)
+   (error "unbound-key"))
+ 
  (defun scroll-down-in-place (n)
    (interactive "p")
***************
*** 56,82 ****
  
  (defvar grep-arg nil "Default arg for RE-search")
! (defun grep-arg ()
    (if (memq last-command '(research-forward research-backward)) grep-arg
!     (let* ((command (car command-history))
! 	   (command-name (symbol-name (car command)))
! 	   (search-arg (car (cdr command)))
! 	   (search-command 
! 	    (and command-name (string-match "search" command-name)))
! 	   )
!       (if (and search-command (stringp search-arg)) (setq grep-arg search-arg)
! 	(setq search-command this-command 
! 	      grep-arg (read-string "REsearch: " grep-arg)
! 	      this-command search-command)
! 	grep-arg))))
  
  (defun research-forward ()
!   "Repeat RE search forward."
!   (interactive)
!   (re-search-forward (grep-arg)))
  
  (defun research-backward ()
!   "Repeat RE search backward."
!   (interactive)
!   (re-search-backward (grep-arg)))
  \f


  ;;;
--- 61,95 ----
  
  (defvar grep-arg nil "Default arg for RE-search")
! 
! (defun prev-search-command-arg ()
!   ;; if previous minibuf command specified a search string, return it.
!   ;; this way, a call to M-x re-search-forward can pass its arg.
!   (let* ((command (car command-history))
! 	 (command-name (symbol-name (car command)))
! 	 (search-arg (car (cdr command)))
! 	 (search-command 
! 	  (and command-name (string-match "search" command-name))))
!     (and search-command (stringp search-arg) search-arg)))
! 
! (defun grep-arg (&optional prompt)
!   "helper function used by research-{backward,forward}"
    (if (memq last-command '(research-forward research-backward)) grep-arg
!     (let ((this-command this-command)	; save this binding from read-string
! 	  (default (or (prev-search-command-arg)
! 		       search-last-regexp
! 		       grep-arg)))
!       (read-string (or prompt "Regexp arg: ") default))))
  
  (defun research-forward ()
!   "Repeat regexp search forward, using previous search arg if available."
!   (interactive)				;
!   (if (re-search-forward (grep-arg "Regexp search: "))
!       (setq search-last-regexp grep-arg)))
  
  (defun research-backward ()
!   "Repeat regexp search backward, using previous search arg if available."
!   (interactive)				;
!   (if (re-search-backward (grep-arg "Regexp search backward: "))
!       (setq search-last-regexp grep-arg)))
  \f


  ;;;
***************
*** 93,96 ****
--- 106,111 ----
  (defvar sun-raw-map (make-sparse-keymap) "*Keymap for ESC-[ encoded keyboard")
  
+ (define-key sun-raw-map "208z" 'unbound-key)		; R3
+ (define-key sun-raw-map "209z" 'unbound-key)		; R3
  (define-key sun-raw-map "210z" 'backward-page)		; R3
  (define-key sun-raw-map "213z" 'forward-page)		; R6
***************
*** 97,116 ****
  (define-key sun-raw-map "214z" 'beginning-of-buffer)	; R7
  (define-key sun-raw-map "216z" 'scroll-down)		; R9
  (define-key sun-raw-map "218z" 'recenter)               ; R11
  (define-key sun-raw-map "220z" 'end-of-buffer)		; R13
  (define-key sun-raw-map "222z" 'scroll-up)		; R15
! (define-key sun-raw-map "193z" 'redraw-display)		; Again
! (define-key sun-raw-map "194z" 'list-buffers)		; Props
! (define-key sun-raw-map "195z" 'undo)			; Undo
! (define-key sun-raw-map "196z" 'ignore-key)		; Expose-down
! (define-key sun-raw-map "197z" 'sun-select-region)	; Put
! (define-key sun-raw-map "198z" 'ignore-key)		; Open-down
! (define-key sun-raw-map "199z" 'sun-yank-selection)	; Get
! (define-key sun-raw-map "200z" 'exchange-point-and-mark); Find
! (define-key sun-raw-map "201z" 'kill-region-and-unmark)	; Delete
! (define-key sun-raw-map "226z" 'scroll-down-in-place)	; t3
! (define-key sun-raw-map "227z" 'scroll-up-in-place)	; t4
! (define-key sun-raw-map "229z" 'shrink-window)		; t6
! (define-key sun-raw-map "230z" 'enlarge-window)		; t7
  
  (if sun-esc-bracket
--- 112,137 ----
  (define-key sun-raw-map "214z" 'beginning-of-buffer)	; R7
  (define-key sun-raw-map "216z" 'scroll-down)		; R9
+ (define-key sun-raw-map "215z" 'previous-line)		; R8  (up-arrow)
+ (define-key sun-raw-map "217z" 'backward-char)		; R10 (rt-arrow)
+ (define-key sun-raw-map "219z" 'forward-char)		; R12 (dn-arrow)
+ (define-key sun-raw-map "221z" 'next-line)		; R14 (lf-arrow)
  (define-key sun-raw-map "218z" 'recenter)               ; R11
  (define-key sun-raw-map "220z" 'end-of-buffer)		; R13
  (define-key sun-raw-map "222z" 'scroll-up)		; R15
! (define-key sun-raw-map "193z" 'redraw-display)		; Again	L1
! (define-key sun-raw-map "194z" 'list-buffers)		; Props	L2
! (define-key sun-raw-map "195z" 'undo)			; Undo	L3
! (define-key sun-raw-map "196z" 'ignore-key)		; Expose-down	L4
! (define-key sun-raw-map "197z" 'sun-select-region)	; Put	L5
! (define-key sun-raw-map "198z" 'ignore-key)		; Open-down	L6
! (define-key sun-raw-map "199z" 'sun-yank-selection)	; Get	L7
! (define-key sun-raw-map "200z" 'exchange-point-and-mark); Find	L8
! (define-key sun-raw-map "201z" 'kill-region-and-unmark)	; Delete	L9
! (define-key sun-raw-map "225z" 'toggle-selective-display); T2
! (define-key sun-raw-map "226z" 'scroll-down-in-place)	; T3
! (define-key sun-raw-map "227z" 'scroll-up-in-place)	; T4
! (define-key sun-raw-map "228z" 'shell)			; T5
! (define-key sun-raw-map "229z" 'shrink-window)		; T6
! (define-key sun-raw-map "230z" 'enlarge-window)		; T7
  
  (if sun-esc-bracket
***************
*** 154,164 ****
  ;;; but it won't include the CONTROL, META, or SHIFT keys!
  ;;;
- ;;; Important to define SHIFTed sequence before matching unshifted sequence.
- ;;; (talk about bletcherous old uppercase terminal conventions!*$#@&%*&#$%)
- ;;;  this is worse than C-S/C-Q flow control anyday!
- ;;;  Do *YOU* run in capslock mode?
- ;;;
  
! ;;; Note:  al, el and gl are trapped by EmacsTool, so they never make it here.
  
  (defvar meta-flag t)
--- 175,181 ----
  ;;; but it won't include the CONTROL, META, or SHIFT keys!
  ;;;
  
! ;;; Note:  al (STOP), el (EXPOSE) and gl (OPEN) are trapped by EmacsTool, 
! ;;; so they never make it here.
  
  (defvar meta-flag t)
***************
*** 167,170 ****
--- 184,193 ----
    "*Keymap for Emacstool bindings.")
  
+ (define-key suntool-map "ar" 'unbound-key)		; R1
+ (define-key suntool-map "br" 'unbound-key)		; R2
+ (define-key suntool-map "hr" 'previous-line)		; R8  (up-arrow)
+ (define-key suntool-map "jr" 'backward-char)		; R10 (rt-arrow)
+ (define-key suntool-map "lr" 'forward-char)		; R12 (dn-arrow)
+ (define-key suntool-map "nr" 'next-line)		; R14 (lf-arrow)
  (define-key suntool-map "gr" 'beginning-of-buffer)	; r7
  (define-key suntool-map "iR" 'backward-page)		; R9
***************
*** 176,194 ****
  (define-key suntool-map "b\M-L" 'rerun-prev-command)	; M-AGAIN
  (define-key suntool-map "b\M-l" 'prev-complex-command)	; M-Again
! (define-key suntool-map "bl" 'redraw-display)		; Again
! (define-key suntool-map "cl" 'list-buffers)		; Props
! (define-key suntool-map "dl" 'undo)			; Undo
! (define-key suntool-map "el" 'ignore-key)		; Expose-Open
! (define-key suntool-map "fl" 'sun-select-region)	; Put
! (define-key suntool-map "f," 'copy-region-as-kill)	; C-Put
! (define-key suntool-map "gl" 'ignore-key)		; Open-Open
! (define-key suntool-map "hl" 'sun-yank-selection)	; Get
  (define-key suntool-map "h," 'yank)			; C-Get
  (define-key suntool-map "il" 'research-forward)		; Find
- (define-key suntool-map "i," 're-search-forward)	; C-Find
  (define-key suntool-map "i\M-l" 'research-backward)	; M-Find
  (define-key suntool-map "i\M-," 're-search-backward)	; C-M-Find
  
! (define-key suntool-map "jL" 'yank)			; DELETE        
  (define-key suntool-map "jl" 'kill-region-and-unmark)	; Delete
  (define-key suntool-map "j\M-l" 'exchange-point-and-mark); M-Delete
--- 199,223 ----
  (define-key suntool-map "b\M-L" 'rerun-prev-command)	; M-AGAIN
  (define-key suntool-map "b\M-l" 'prev-complex-command)	; M-Again
! (define-key suntool-map "bl" 'redraw-display)		; Again	L1
! (define-key suntool-map "cl" 'list-buffers)		; Props	L2
! (define-key suntool-map "dl" 'undo)			; Undo	L3
! (define-key suntool-map "el" 'ignore-key)		; Expose-Top	L4
! (define-key suntool-map "fl" 'sun-select-region)	; Put	L5
! (define-key suntool-map "f," 'copy-region-as-kill)	; C-Put	L5
! (define-key suntool-map "gl" 'ignore-key)		; Open-Open	L6
! (define-key suntool-map "hl" 'sun-yank-selection)	; Get	L7
  (define-key suntool-map "h," 'yank)			; C-Get
+ ;; interactive regexp search				; Find	L8
+ (define-key suntool-map "iL" 're-isearch-forward)	; FIND (shift-Find)
+ (define-key suntool-map "i\M-L" 're-isearch-backward)	; M-FIND (M-shift-Find)
+ ;; non-interactive versions: 
+ ;; search again, using previous search arg as regexp.
  (define-key suntool-map "il" 'research-forward)		; Find
  (define-key suntool-map "i\M-l" 'research-backward)	; M-Find
+ ;; supply new arg
+ (define-key suntool-map "i," 're-search-forward)	; C-Find
  (define-key suntool-map "i\M-," 're-search-backward)	; C-M-Find
  
! (define-key suntool-map "jL" 'yank)			; DELETE  L9      
  (define-key suntool-map "jl" 'kill-region-and-unmark)	; Delete
  (define-key suntool-map "j\M-l" 'exchange-point-and-mark); M-Delete
***************
*** 196,203 ****
    '(lambda () (interactive) (pop-mark 1)))		; C-Delete
  
! (define-key suntool-map "fT" 'shrink-window-horizontally)	; T6
! (define-key suntool-map "gT" 'enlarge-window-horizontally)	; T7
! (define-key suntool-map "ft" 'shrink-window)			; t6
! (define-key suntool-map "gt" 'enlarge-window)			; t7
  (define-key suntool-map "cT" '(lambda(n) (interactive "p") (scroll-down n)))
  (define-key suntool-map "dT" '(lambda(n) (interactive "p") (scroll-up n)))
--- 225,229 ----
    '(lambda () (interactive) (pop-mark 1)))		; C-Delete
  
! (define-key suntool-map "bt" 'toggle-selective-display) 	; t2
  (define-key suntool-map "cT" '(lambda(n) (interactive "p") (scroll-down n)))
  (define-key suntool-map "dT" '(lambda(n) (interactive "p") (scroll-up n)))
***************
*** 204,207 ****
--- 230,238 ----
  (define-key suntool-map "ct" 'scroll-down-in-place)		; t3
  (define-key suntool-map "dt" 'scroll-up-in-place)		; t4
+ (define-key suntool-map "et" 'shell)				; t5
+ (define-key suntool-map "fT" 'shrink-window-horizontally)	; T6
+ (define-key suntool-map "gT" 'enlarge-window-horizontally)	; T7
+ (define-key suntool-map "ft" 'shrink-window)			; t6
+ (define-key suntool-map "gt" 'enlarge-window)			; t7
  (define-key ctl-x-map "*" suntool-map)
  
***************
*** 209,212 ****
--- 240,250 ----
  ;;; for you to put your own bindings in.
  
+ ;;; Example:
+ ;(setq suntool-map-hooks '(			; not your usual hook list
+ ;  (define-key suntool-map "c\M-l" 'browse) 	; Meta-Props
+ ;  (define-key suntool-map "dr" 'goto-line) 	; R4
+ ;  (define-key suntool-map "d2" 'what-line) 	; Control-R4
+ ;  ))
+ 
  (defvar suntool-map-hooks nil
    "List of forms to evaluate after setting suntool-map.")
***************
*** 252,253 ****
--- 290,294 ----
    )
  (define-key ctl-x-map "\C-@" 'sun-mouse-once)
+ 
+ ;;; If Emacstool is being nice, and informs us of its presence:
+ (if (getenv "IN_EMACSTOOL") (emacstool-init))
diff -rc2N dist-18.53/lisp/term/xterm.el dist-18.54/lisp/term/xterm.el
*** dist-18.53/lisp/term/xterm.el	Wed Dec 31 19:00:00 1969
--- dist-18.54/lisp/term/xterm.el	Wed Apr 26 21:52:39 1989
***************
*** 0 ****
--- 1,2 ----
+ ;; Don't send the `ti' string when screen is cleared.
+ (setq reset-terminal-on-clear nil)
diff -rc2N dist-18.53/lisp/tex-mode.el dist-18.54/lisp/tex-mode.el
*** dist-18.53/lisp/tex-mode.el	Fri Feb 24 08:34:03 1989
--- dist-18.54/lisp/tex-mode.el	Mon Mar 13 16:55:57 1989
***************
*** 224,228 ****
      (set-syntax-table TeX-mode-syntax-table))
    (make-local-variable 'paragraph-start)
!   (setq paragraph-start "^[ \t]*$\\|^[\f\\\\]")
    (make-local-variable 'paragraph-separate)
    (setq paragraph-separate paragraph-start)
--- 224,228 ----
      (set-syntax-table TeX-mode-syntax-table))
    (make-local-variable 'paragraph-start)
!   (setq paragraph-start "^[ \t]*$\\|^[\f\\\\%]")
    (make-local-variable 'paragraph-separate)
    (setq paragraph-separate paragraph-start)
diff -rc2N dist-18.53/lisp/version.el dist-18.54/lisp/version.el
*** dist-18.53/lisp/version.el	Fri Feb 24 08:28:06 1989
--- dist-18.54/lisp/version.el	Sat Apr 15 23:55:06 1989
***************
*** 22,26 ****
  ;; The following line is modified automatically
  ;; by loading inc-version.el, each time a new Emacs is dumped.
! (defconst emacs-version "18.53.0" "\
  Version numbers of this version of Emacs.")
  
--- 22,26 ----
  ;; The following line is modified automatically
  ;; by loading inc-version.el, each time a new Emacs is dumped.
! (defconst emacs-version "18.54.0" "\
  Version numbers of this version of Emacs.")
  
diff -rc2N dist-18.53/src/ChangeLog dist-18.54/src/ChangeLog
*** dist-18.53/src/ChangeLog	Fri Feb 24 08:21:05 1989
--- dist-18.54/src/ChangeLog	Wed Apr 26 16:18:30 1989
***************
*** 1,2 ****
--- 1,154 ----
+ Wed Apr 26 16:14:12 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* Version 18.54 released.
+ 
+ 	* xdisp.c (Fredraw_display): Don't do set_terminal_modes if
+ 	reset_terminal_on_clear is 0.
+ 
+ Tue Apr 25 22:02:48 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* m-news.h: Define m68000 if not defined.
+ 
+ Mon Apr 24 01:26:40 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* m/m-mips.h [USG]: Define LIBS_TERMCAP.
+ 	If HAVE_X11, define HAVE_VFORK.
+ 	Delete defns of XMARKBIT, XSETMARKBIT.
+ 	[BSD]: Add alternative linker switches; don't override sys
+ 	facility options.
+ 
+ 	* sysdep.c: Include ioctl.h if mips.
+ 
+ Wed Apr 19 20:26:23 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* ymakefile: use HAVE_X11 as alias for X11.
+ 
+ Tue Apr 18 00:17:46 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* process.c: Don't define wstopsig, wtersig if already defined.
+ 
+ 	* sysdep.c [VMS] (sys_getenv): Copy the string before returning it.
+ 
+ 	* m-alliant.h: Define `vector'.
+ 
+ Thu Apr 13 12:55:14 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* process.c (wait_reading_process_input) [sun]: If SIGIO failed
+ 	to be sent, send it by hand.
+ 
+ Sat Apr  8 16:36:56 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* sysdep.c [USG]: If TIOCGWINSZ defined, include sioctl.h.
+ 
+ Fri Apr  7 22:22:38 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* malloc.c: Rename BSD42 to BSD4_2, as in Emacs.
+ 	If `emacs', let config.h decide whether to define that.
+ 	(morecore): Change malloc_sbrk_used, etc., after error check.
+ 
+ Thu Apr  6 11:55:07 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* fns.c (Fload_average): nlist data structure is funny on convex.
+ 
+ 	* cm.c (calccost): NTABS was off by 1 sometimes; take account of
+ 	the starting position modulo 8.
+ 
+ 	* fileio.c (Fexpand_file_name): Don't simplify /../ at start of name.
+ 
+ 	* xmenu.c (XEmacsMenu) [X11]: Set dispwidth, dispheight where they
+ 	are set for X10.
+ 	(Fx_popup_menu): Make the menu a child of the root window.
+ 	Use XQueryPointer to get position to put menu.
+ 
+ 	* m-news.h: m-news800.h renamed.
+ 	Removed EXPLICIT_SIGN_EXTEND and COMPILER_REGISTER_BUG.
+ 	Removed SEGMENT_MASK and sigmask.
+ 	LOAD_AVE_TYPE is now `double'; LOAD_AVE_CVT changed too.
+ 
+ 	* x11term.c: Include either sys/time.h or time.h, only once.
+ 
+ 	* sysdep.c (sys_suspend): If SIGTSTP but not BSD, do kill with neg arg.
+ 
+ 	* process.c (create_process):
+ 	On all USG systems, not just IRIS and AIX, don't pre-open pty's tty.
+ 	Move the setpgrp done for USG (no real change).
+ 	* callproc.c (child_setup): Don't do setpgrp on USG.
+ 
+ 	* process.c (pty): An IBMRTAIX conditional.
+ 	(create_process): Another here.
+ 
+ 	* process.c (create_process): Take the usg's setpgrp and the close-and
+ 	-open of the tty outside the TIOCNOTTY conditional, since TIOCNOTTY
+ 	is always missing outside BSD.  Now the TIOCNOTTY conditional controls
+ 	only the TIOCNOTTY.
+ 
+ 	* sysdep.c (init_sys_modes, reset_sys_modes): Don't try to hack
+ 	TIOCGLTC, TIOCGETC, etc. if HAVE_TERMIO.
+ 
+ Mon Apr  3 22:51:00 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* m-iris4d.h: Put -lbsd in LIB_STANDARD, not LIBS_MACHINE, so it
+ 	comes after LIBX.
+ 
+ Sat Apr  1 00:51:52 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* process.c (Fopen_network_stream): close desc. if connect fails.
+ 
+ Fri Mar 31 17:49:53 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* minibuf.c (Fall_completions): gcprotect ALLMATCHES and TAIL,
+ 	not STRING.
+ 
+ 	* keyboard.c (read_avail_input): Handle EBADSLT like EAGAIN.
+ 
+ Wed Mar 29 10:49:37 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* term.c (term_init): Either ic or ip or im or IC => can insert chars.
+ 
+ Thu Mar 16 13:40:18 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* malloc.c (malloc): Made sure that the MAGIC1 bytes written at
+ 	the end of the space were positioned with regard to the new
+ 	offset. 
+ 
+ 	* m-sequent.h: Define HAVE_ALLOCA.
+ 
+ Tue Mar 14 14:52:53 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* fns.c (mapconcat): Used non register variable for one loop to
+ 	get around problem in xenix compiler.
+ 
+ 	* s-hpux.h (killpg): Created to allow access to process group
+ 	fnctionality on hp systems.
+ 
+ 	* sysdep.c (sys_suspend): Changed #ifdef BSD to #ifdef SIGTSTP
+ 	(more directly related to what we are testing for).
+ 
+ 	* x11term.c (writechars): Changed usage of temp_length to
+ 	end - start + 1.
+ 
+ 	* x11term.c: Put an #ifndef USG around second include of
+ 	sys/time.h to prevent double inclusion on any systems (but to
+ 	include inclusion on systems that need it).
+ 
+ Mon Mar 13 16:41:36 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* emacs.c (main): Removed putting of emacs into a seperate process
+ 	group.
+ 
+ Fri Mar 10 17:00:37 1989  Randall Smith  (randy at sugar-bombs.ai.mit.edu)
+ 
+ 	* malloc.c (realloc): Make sure that the start of the mhead is
+ 	found correctly even when sizeof (struct mhead) doesn't divide 8
+ 	properley. 
+ 
+ 	* malloc.c: Brought up to par with GNU library malloc:
+ 	Modified a comment insto a slightly different form.
+ 	(free): Modified for a slightly better error message when -Drcheck
+ 	and a bad value is free'd.
+ 	(malloc_mem_used, malloc_mem_free): Added debugging functions
+ 	(under MSTATS) to show memory used and freed.
+ 	(morecore): Made sure that signal mask was correct upon return.
+ 
  Fri Feb 24 06:36:11 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
  
diff -rc2N dist-18.53/src/callproc.c dist-18.54/src/callproc.c
*** dist-18.53/src/callproc.c	Wed Feb 15 22:36:20 1989
--- dist-18.54/src/callproc.c	Thu Apr  6 12:21:14 1989
***************
*** 374,383 ****
    close (err);
  
! #ifdef USG
!   setpgrp ();			/* No arguments but equivalent in this case */
! #else
    setpgrp (pid, pid);
- #endif /* USG */
    setpgrp_of_tty (pid);
  
  #ifdef vipc
--- 374,381 ----
    close (err);
  
! #ifndef USG
    setpgrp (pid, pid);
    setpgrp_of_tty (pid);
+ #endif /* USG */
  
  #ifdef vipc
diff -rc2N dist-18.53/src/cm.c dist-18.54/src/cm.c
*** dist-18.53/src/cm.c	Thu May 21 22:28:13 1987
--- dist-18.54/src/cm.c	Thu Apr  6 22:02:00 1989
***************
*** 201,205 ****
       */
  
!     ntabs = deltax / Wcm.cm_tabwidth;
      n2tabs = ntabs + 1;
      tabx = (srcx / Wcm.cm_tabwidth + ntabs) * Wcm.cm_tabwidth;
--- 201,205 ----
       */
  
!     ntabs = (deltax + srcx % Wcm.cm_tabwidth) / Wcm.cm_tabwidth;
      n2tabs = ntabs + 1;
      tabx = (srcx / Wcm.cm_tabwidth + ntabs) * Wcm.cm_tabwidth;
diff -rc2N dist-18.53/src/emacs.c dist-18.54/src/emacs.c
*** dist-18.53/src/emacs.c	Sat Feb 18 09:03:50 1989
--- dist-18.54/src/emacs.c	Mon Mar 13 16:41:29 1989
***************
*** 225,232 ****
  #endif HIGHPRI
  
- #ifdef BSD
-   /* interrupt_input has trouble if we aren't in a separate process group.  */
-   setpgrp (getpid (), getpid ());
- #endif
  
-   inhibit_window_system = 0;
--- 225,227 ----
diff -rc2N dist-18.53/src/fileio.c dist-18.54/src/fileio.c
*** dist-18.53/src/fileio.c	Wed Dec 28 23:58:31 1988
--- dist-18.54/src/fileio.c	Thu Apr  6 21:42:12 1989
***************
*** 706,709 ****
--- 706,711 ----
  	p += 2;
        else if (!strncmp (p, "/..", 3)
+ 	       /* `/../' is the "superroot" on certain file systems.  */
+ 	       && o != target
  	       && (p[3] == '/' || p[3] == 0))
  	{
diff -rc2N dist-18.53/src/fns.c dist-18.54/src/fns.c
*** dist-18.53/src/fns.c	Sun May 22 16:08:46 1988
--- dist-18.54/src/fns.c	Thu Apr  6 22:25:38 1989
***************
*** 988,991 ****
--- 988,992 ----
    register Lisp_Object *args;
    register int i;
+   int j;
  
    len = Flength (seq);
***************
*** 998,1004 ****
    mapcar1 (leni, args, fn, seq);
  
!   for (i = leni - 1; i >= 0; i--)
!     args[i + i] = args[i];
!       
    for (i = 1; i < nargs; i += 2)
      args[i] = sep;
--- 999,1006 ----
    mapcar1 (leni, args, fn, seq);
  
!   /* Broken Xenix/386 compiler can't use a register variable here */
!   for (j = leni - 1; j > 0; j--)
!     args[j + j] = args[j];
! 
    for (i = 1; i < nargs; i += 2)
      args[i] = sep;
***************
*** 1198,1203 ****
--- 1200,1210 ----
        nl[1].n_zeroes = 0;
  #else /* NLIST_STRUCT */
+ #ifdef convex
+       nl[0].n_un.n_name = LDAV_SYMBOL;
+       nl[1].n_un.n_name = 0;
+ #else /* not convex */
        nl[0].n_name = LDAV_SYMBOL;
        nl[1].n_name = 0;
+ #endif /* not convex */
  #endif /* NLIST_STRUCT */
  
diff -rc2N dist-18.53/src/keyboard.c dist-18.54/src/keyboard.c
*** dist-18.53/src/keyboard.c	Mon Aug 22 20:10:17 1988
--- dist-18.54/src/keyboard.c	Fri Mar 31 17:51:29 1989
***************
*** 1089,1093 ****
--- 1089,1097 ----
        kbd_count = read (fileno (stdin), kbd_buffer, sizeof kbd_buffer);
      }
+ #ifdef EBADSLT
+   if (kbd_count == -1 && (errno == EAGAIN || errno == EBADSLT))
+ #else
    if (kbd_count == -1 && errno == EAGAIN)
+ #endif
      kbd_count = 0;
    fcntl (fileno (stdin), F_SETFL, 0);
diff -rc2N dist-18.53/src/m-alliant.h dist-18.54/src/m-alliant.h
*** dist-18.53/src/m-alliant.h	Sun May 22 16:11:38 1988
--- dist-18.54/src/m-alliant.h	Tue Apr 18 00:17:42 1989
***************
*** 139,140 ****
--- 139,145 ----
  #define internal_with_output_to_temp_buffer internal_with_output_to_tem
  #endif
+ 
+ /* "vector" is a typedef in /usr/include/machine/reg.h, so its use as
+    a variable name causes errors when compiling under ANSI C.  */
+ 
+ #define vector xxvector
diff -rc2N dist-18.53/src/m-iris4d.h dist-18.54/src/m-iris4d.h
*** dist-18.53/src/m-iris4d.h	Wed Dec 28 23:45:32 1988
--- dist-18.54/src/m-iris4d.h	Mon Apr 17 20:13:06 1989
***************
*** 151,155 ****
  
  #undef LIBS_MACHINE
! #define LIBS_MACHINE -lbsd -lPW -lmld
  #define LIBS_DEBUG
  
--- 151,155 ----
  
  #undef LIBS_MACHINE
! #define LIBS_MACHINE -lPW -lmld
  #define LIBS_DEBUG
  
***************
*** 161,165 ****
  /* Must define START-FILES so that the linker can find /usr/lib/crt0.o.  */
  #define START_FILES pre-crt0.o /usr/lib/crt1.o
! #define LIB_STANDARD -lc /usr/lib/crtn.o
  #else
  #define START_FILES pre-crt0.o /usr/lib/crt0.o
--- 161,165 ----
  /* Must define START-FILES so that the linker can find /usr/lib/crt0.o.  */
  #define START_FILES pre-crt0.o /usr/lib/crt1.o
! #define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o
  #else
  #define START_FILES pre-crt0.o /usr/lib/crt0.o
***************
*** 166,169 ****
--- 166,170 ----
  /* The entry-point label (start of text segment) is `start', not `__start'.  */
  #define DEFAULT_ENTRY_ADDRESS start
+ #define LIB_STANDARD -lbsd -lc
  #endif
  \f


diff -rc2N dist-18.53/src/m-mips.h dist-18.54/src/m-mips.h
*** dist-18.53/src/m-mips.h	Wed Dec 28 23:45:45 1988
--- dist-18.54/src/m-mips.h	Mon Apr 24 01:50:51 1989
***************
*** 122,125 ****
--- 122,133 ----
  /* Alter some of the options used when linking.  */
  
+ #ifdef BSD
+ 
+ #define LIBS_MACHINE -lmld
+ #define LD_SWITCH_MACHINE -D 800000
+ #define LIBS_DEBUG
+ 
+ #else
+ 
  #define LIBS_MACHINE -lmld
  #define LD_SWITCH_MACHINE -D 800000 -g3
***************
*** 126,132 ****
--- 134,147 ----
  #define START_FILES pre-crt0.o /usr/lib/crt1.o
  #define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o
+ #define LIBS_TERMCAP -lcurses
  
  #define C_SWITCH_SYSTEM -I/usr/include/bsd
  #define C_DEBUG_SWITCH -O -g3
+ 
+ #if defined(HAVE_X_WINDOWS) && defined(HAVE_X11)
+ #define HAVE_VFORK		/* Graciously provided by libX.a */
+ #endif
+ 
+ #endif
  \f


  /* The standard definitions of these macros would work ok,
***************
*** 142,149 ****
  #define XSETPNTR(a, b) XSET(a, XTYPE(a), b)
  
- #define XMARKBIT(a) ((a) < 0)
- #define XSETMARKBIT(a,b) ((a) = ((a) & ~MARKBIT) | ((b) ? MARKBIT : 0))
  #define XUNMARK(a) ((a) = (((unsigned)(a) << INTBITS-GCTYPEBITS-VALBITS) >> INTBITS-GCTYPEBITS-VALBITS))
  \f


  /* Cancel certain parts of standard sysV.3 support.  */
  #undef SYSV_SYSTEM_DIR
--- 157,164 ----
  #define XSETPNTR(a, b) XSET(a, XTYPE(a), b)
  
  #define XUNMARK(a) ((a) = (((unsigned)(a) << INTBITS-GCTYPEBITS-VALBITS) >> INTBITS-GCTYPEBITS-VALBITS))
  \f


+ #ifdef USG
+ 
  /* Cancel certain parts of standard sysV.3 support.  */
  #undef SYSV_SYSTEM_DIR
***************
*** 177,178 ****
--- 192,195 ----
  /* ??? */
  #define IRIS
+ 
+ #endif
diff -rc2N dist-18.53/src/m-news.h dist-18.54/src/m-news.h
*** dist-18.53/src/m-news.h	Wed Dec 31 19:00:00 1969
--- dist-18.54/src/m-news.h	Tue Apr 25 22:02:44 1989
***************
*** 0 ****
--- 1,69 ----
+ /* m- file for Sony's NEWS workstations, NEWS-OS 3.0.
+    Copyright (C) 1985, 1986, 1989 Free Software Foundation, Inc.
+ 
+ This file is part of GNU Emacs.
+ 
+ GNU Emacs is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY.  No author or distributor
+ accepts responsibility to anyone for the consequences of using it
+ or for whether it serves any particular purpose or works at all,
+ unless he says so in writing.  Refer to the GNU Emacs General Public
+ License for full details.
+ 
+ Everyone is granted permission to copy, modify and redistribute
+ GNU Emacs, but only under the conditions described in the
+ GNU Emacs General Public License.   A copy of this license is
+ supposed to have been given to you along with GNU Emacs so you
+ can know your rights and responsibilities.  It should be in a
+ file named COPYING.  Among other things, the copyright notice
+ and this notice must be preserved on all copies.  */
+ 
+ 
+ /* Say this machine is a 68000 */
+ 
+ #ifndef m68000
+ #define m68000
+ #endif
+ 
+ /* The following three symbols give information on
+  the size of various data types.  */
+ 
+ #define SHORTBITS 16		/* Number of bits in a short */
+ 
+ #define INTBITS 32		/* Number of bits in an int */
+ 
+ #define LONGBITS 32		/* Number of bits in a long */
+ 
+ /* 68000 has lowest-numbered byte as most significant */
+ 
+ #define BIG_ENDIAN
+ 
+ /* One CRT0 Dummy variable */
+ 
+ #define CRT0_DUMMIES one_dummy,
+ 
+ /* Define how to take a char and sign-extend into an int.
+    On machines where char is signed, this is a no-op.  */
+ 
+ #define SIGN_EXTEND_CHAR(c) (c)
+ 
+ /* Use type int rather than a union, to represent Lisp_Object */
+ 
+ #define NO_UNION_TYPE
+ 
+ /* The News machine has alloca. */
+ 
+ #define HAVE_ALLOCA
+ 
+ /* Data type of load average, as read out of kmem.  */
+ 
+ #define LOAD_AVE_TYPE double
+ 
+ /* Convert that into an integer that is 100 for a load average of 1.0  */
+ 
+ #define LOAD_AVE_CVT(x) ((int) ((x) * 100.0))
+ 
+ /* Must use the system's termcap.  It does special things.  */
+ 
+ #define LIBS_TERMCAP -ltermcap
+ 
diff -rc2N dist-18.53/src/m-sequent.h dist-18.54/src/m-sequent.h
*** dist-18.53/src/m-sequent.h	Thu May 19 16:38:09 1988
--- dist-18.54/src/m-sequent.h	Thu Mar 16 13:40:13 1989
***************
*** 115,119 ****
  
  /* #define C_ALLOCA */
! /* #define HAVE_ALLOCA */
  
  /* Name of file the to look in
--- 115,119 ----
  
  /* #define C_ALLOCA */
! #define HAVE_ALLOCA
  
  /* Name of file the to look in
diff -rc2N dist-18.53/src/malloc.c dist-18.54/src/malloc.c
*** dist-18.53/src/malloc.c	Mon Feb 13 05:37:16 1989
--- dist-18.54/src/malloc.c	Fri Apr  7 22:12:10 1989
***************
*** 139,147 ****
   * nmalloc[i] is the difference between the number of mallocs and frees
   * for a given block size.
! #endif /* MSTATS */
  
  #ifdef emacs
  #include "config.h"
! #endif /* emacs */
  
  /* Determine which kind of system this is.  */
--- 139,149 ----
   * nmalloc[i] is the difference between the number of mallocs and frees
   * for a given block size.
! #endif MSTATS
!  */
  
  #ifdef emacs
+ /* config.h specifies which kind of system this is.  */
  #include "config.h"
! #else
  
  /* Determine which kind of system this is.  */
***************
*** 155,173 ****
  #else /* SIGTSTP */
  #ifdef SIGIO
! #define BSD42
  #endif /* SIGIO */
  #endif /* SIGTSTP */
  
  /* Define getpagesize () if the system does not.  */
  #include "getpagesize.h"
  
! #ifndef BSD42
  #ifndef USG
  #include <sys/vlimit.h>		/* warn the user when near the end */
  #endif /* not USG */
! #else /* if BSD42 */
  #include <sys/time.h>
  #include <sys/resource.h>
! #endif /* BSD42 */
  
  extern char *start_of_data ();
--- 157,177 ----
  #else /* SIGTSTP */
  #ifdef SIGIO
! #define BSD4_2
  #endif /* SIGIO */
  #endif /* SIGTSTP */
  
+ #endif /* not emacs */
+ 
  /* Define getpagesize () if the system does not.  */
  #include "getpagesize.h"
  
! #ifndef BSD4_2
  #ifndef USG
  #include <sys/vlimit.h>		/* warn the user when near the end */
  #endif /* not USG */
! #else /* if BSD4_2 */
  #include <sys/time.h>
  #include <sys/resource.h>
! #endif /* BSD4_2 */
  
  extern char *start_of_data ();
***************
*** 318,321 ****
--- 322,326 ----
  #ifdef BSD
  #ifndef BSD4_1
+   /* ?? There was a suggestion not to block SIGILL, somehow for GDB's sake.  */
    oldmask = sigsetmask (-1);
  #endif
***************
*** 344,349 ****
    cp = sbrk (0);
    siz = cp - data_space_start;
-   malloc_sbrk_used = siz;
-   malloc_sbrk_unused = lim_data - siz;
  
    if (warnfunction)
--- 349,352 ----
***************
*** 384,388 ****
  
    if ((cp = sbrk (1 << (siz + 3))) == (char *) -1)
!     return;			/* no more room! */
  #ifndef VMS
    if ((int) cp & 7)
--- 387,401 ----
  
    if ((cp = sbrk (1 << (siz + 3))) == (char *) -1)
!     {
! #ifdef BSD
! #ifndef BSD4_1
!       sigsetmask (oldmask);
! #endif
! #endif
!       return;			/* no more room! */
!     }
!   malloc_sbrk_used = siz;
!   malloc_sbrk_unused = lim_data - siz;
! 
  #ifndef VMS
    if ((int) cp & 7)
***************
*** 461,465 ****
  
    /* Figure out how many bytes are required, rounding up to the nearest
!      multiple of 8, then figure out which nextf[] area to use */
    nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
    {
--- 474,480 ----
  
    /* Figure out how many bytes are required, rounding up to the nearest
!      multiple of 8, then figure out which nestf[] area to use.
!      Both the beginning of the header and the beginning of the
!      block should be on an eight byte boundary.  */
    nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
    {
***************
*** 507,511 ****
    p -> mh_magic4 = MAGIC4;
    {
!     register char  *m = (char *) (p + 1) + n;
  
      *m++ = MAGIC1, *m++ = MAGIC1, *m++ = MAGIC1, *m = MAGIC1;
--- 522,527 ----
    p -> mh_magic4 = MAGIC4;
    {
!     /* Get the location n after the beginning of the user's space.  */
!     register char *m = (char *) p + ((sizeof *p + 7) & ~7) + n;
  
      *m++ = MAGIC1, *m++ = MAGIC1, *m++ = MAGIC1, *m = MAGIC1;
***************
*** 538,545 ****
        }
  
      if (p -> mh_alloc != ISALLOC)
        abort ();
  
! #ifdef rcheck
      ASSERT (p -> mh_magic4 == MAGIC4);
      ap += p -> mh_nbytes;
--- 554,570 ----
        }
  
+ #ifndef rcheck
      if (p -> mh_alloc != ISALLOC)
        abort ();
  
! #else rcheck
!     if (p -> mh_alloc != ISALLOC)
!       {
! 	if (p -> mh_alloc == ISFREE)
! 	  botch ("free: Called with already freed block argument\n");
! 	else
! 	  botch ("free: Called with bad argument\n");
!       }
! 
      ASSERT (p -> mh_magic4 == MAGIC4);
      ap += p -> mh_nbytes;
***************
*** 578,584 ****
    register int nunits;
  
!   if ((p = (struct mhead *) mem) == 0)
      return malloc (n);
!   p -= (8 / sizeof (struct mhead));
    nunits = p -> mh_index;
    ASSERT (p -> mh_alloc == ISALLOC);
--- 603,609 ----
    register int nunits;
  
!   if (mem == 0)
      return malloc (n);
!   p = (struct mhead *) (mem - ((sizeof *p + 7) & ~7));
    nunits = p -> mh_index;
    ASSERT (p -> mh_alloc == ISALLOC);
***************
*** 598,602 ****
  
    /* See if desired size rounds to same power of 2 as actual size. */
!   nbytes = (n + sizeof *p + EXTRA + 7) & ~7;
  
    /* If ok, use the same block, just marking its size as changed.  */
--- 623,627 ----
  
    /* See if desired size rounds to same power of 2 as actual size. */
!   nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
  
    /* If ok, use the same block, just marking its size as changed.  */
***************
*** 700,703 ****
--- 725,766 ----
    return v;
  }
+ int
+ malloc_mem_used ()
+ {
+   int i;
+   int size_used;
+ 
+   size_used = 0;
+   
+   for (i = 0; i < 30; i++)
+     {
+       int allocation_size = 1 << (i + 3);
+       struct mhead *p;
+       
+       size_used += nmalloc[i] * allocation_size;
+     }
+ 
+   return size_used;
+ }
+ 
+ int 
+ malloc_mem_free ()
+ {
+   int i;
+   int size_unused;
+ 
+   size_unused = 0;
+   
+   for (i = 0; i < 30; i++)
+     {
+       int allocation_size = 1 << (i + 3);
+       struct mhead *p;
+       
+       for (p = nextf[i]; p ; p = CHAIN (p))
+ 	size_unused += allocation_size;
+     }
+ 
+   return size_unused;
+ }
  #endif /* MSTATS */
  \f


***************
*** 715,719 ****
--- 778,787 ----
    extern long ulimit ();
      
+ #ifdef ULIMIT_BREAK_VALUE
+   lim_data = ULIMIT_BREAK_VALUE;
+ #else
    lim_data = ulimit (3, 0);
+ #endif
+ 
    lim_data -= (long) data_space_start;
  }
***************
*** 720,724 ****
  
  #else /* not USG */
! #ifndef BSD42
  
  get_lim_data ()
--- 788,792 ----
  
  #else /* not USG */
! #ifndef BSD4_2
  
  get_lim_data ()
***************
*** 727,731 ****
  }
  
! #else /* BSD42 */
  
  get_lim_data ()
--- 795,799 ----
  }
  
! #else /* BSD4_2 */
  
  get_lim_data ()
***************
*** 741,745 ****
  }
  
! #endif /* BSD42 */
  #endif /* not USG */
  \f


--- 809,813 ----
  }
  
! #endif /* BSD4_2 */
  #endif /* not USG */
  \f


diff -rc2N dist-18.53/src/minibuf.c dist-18.54/src/minibuf.c
*** dist-18.53/src/minibuf.c	Mon May 23 15:04:25 1988
--- dist-18.54/src/minibuf.c	Fri Mar 31 18:50:26 1989
***************
*** 524,528 ****
    int index, obsize;
    Lisp_Object bucket, tem;
!   struct gcpro gcpro1, gcpro2;
  
    CHECK_STRING (string, 0);
--- 524,528 ----
    int index, obsize;
    Lisp_Object bucket, tem;
!   struct gcpro gcpro1, gcpro2, gcpro3;
  
    CHECK_STRING (string, 0);
***************
*** 595,599 ****
  	      else
  		{
! 		  GCPRO2 (string, eltstring);
  		  tem = call1 (pred, elt);
  		  UNGCPRO;
--- 595,599 ----
  	      else
  		{
! 		  GCPRO3 (tail, eltstring, allmatches);
  		  tem = call1 (pred, elt);
  		  UNGCPRO;
diff -rc2N dist-18.53/src/process.c dist-18.54/src/process.c
*** dist-18.53/src/process.c	Sat Aug 20 13:27:41 1988
--- dist-18.54/src/process.c	Tue Apr 18 13:00:19 1989
***************
*** 82,85 ****
--- 82,86 ----
  #include "process.h"
  #include "termhooks.h"
+ #include "termopts.h"
  #include "commands.h"
  
***************
*** 122,129 ****
  #define WAITTYPE union wait
  #define WRETCODE(w) w.w_retcode
- #define WSTOPSIG(w) w.w_stopsig
  #define WCOREDUMP(w) w.w_coredump
  #define WTERMSIG(w) w.w_termsig
  #endif
  
  extern errno;
--- 123,134 ----
  #define WAITTYPE union wait
  #define WRETCODE(w) w.w_retcode
  #define WCOREDUMP(w) w.w_coredump
+ #ifndef WTERMSIG
  #define WTERMSIG(w) w.w_termsig
  #endif
+ #ifndef WSTOPSIG
+ #define WSTOPSIG(w) w.w_stopsig
+ #endif
+ #endif /* BSD or UNIPLUS or STRIDE */
  
  extern errno;
***************
*** 350,353 ****
--- 355,366 ----
  #endif
  #endif
+ #ifdef IBMRTAIX
+    /* On AIX, the parent gets SIGHUP when a pty attached child dies.  So, we */
+    /* ignore SIGHUP once we've started a child on a pty.  Note that this may */
+    /* cause EMACS not to die when it should, i.e., when its own controlling  */
+    /* tty goes away.  I've complained to the AIX developers, and they may    */
+    /* change this behavior, but I'm not going to hold my breath.             */
+ 	    signal (SIGHUP, SIG_IGN);
+ #endif
  	    return ptyname;
  	  }
***************
*** 907,912 ****
    if (ptyname)
      {
! #ifndef IRIS
!       /* On the IRIS system it does not work to open
  	 the pty's tty here and then close and reopen it in the child.  */
        forkout = forkin = open (ptyname, O_RDWR, 0);
--- 920,925 ----
    if (ptyname)
      {
! #ifndef USG
!       /* On USG systems it does not work to open
  	 the pty's tty here and then close and reopen it in the child.  */
        forkout = forkin = open (ptyname, O_RDWR, 0);
***************
*** 987,995 ****
  	int xforkin = forkin;
  	int xforkout = forkout;
  #ifdef HAVE_PTYS
  #ifdef TIOCNOTTY
  	/* In 4.3BSD, the TIOCSPGRP bug has been fixed, and now you
! 	   can do TIOCSPGRP only to the process's controlling tty.
! 	   We must make the pty terminal the controlling tty of the child.  */
  	if (ptyname)
  	  {
--- 1000,1016 ----
  	int xforkin = forkin;
  	int xforkout = forkout;
+ 
+ 	/* Make the pty be the controlling terminal of the process.  */
  #ifdef HAVE_PTYS
+ 	/* First, disconnect its current controlling terminal.  */
+ #ifdef USG
+ 	/* It's very important to call setpgrp() here and no time
+ 	   afterwards.  Otherwise, we lose our controlling tty which
+ 	   is set when we open the pty. */
+ 	setpgrp ();
+ #endif /* USG */
  #ifdef TIOCNOTTY
  	/* In 4.3BSD, the TIOCSPGRP bug has been fixed, and now you
! 	   can do TIOCSPGRP only to the process's controlling tty.  */
  	if (ptyname)
  	  {
***************
*** 999,1007 ****
  	    ioctl (j, TIOCNOTTY, 0);
  	    close (j);
  
! #if !defined (RTU) && !defined(UNIPLUS)
! #ifdef USG
! 	    setpgrp ();
! #endif
  	    /* I wonder if close (open (ptyname, ...)) would work?  */
  	    if (xforkin >= 0)
--- 1020,1033 ----
  	    ioctl (j, TIOCNOTTY, 0);
  	    close (j);
+ 	  }
+ #endif /* TIOCNOTTY */
  
! #if !defined (RTU) && !defined (UNIPLUS)
! /*** There is a suggestion that this ought to be a
!      conditional on TIOCSPGRP.  */
! 	/* Now close the pty (if we had it open) and reopen it.
! 	   This makes the pty the controlling terminal of the subprocess.  */
! 	if (ptyname)
! 	  {
  	    /* I wonder if close (open (ptyname, ...)) would work?  */
  	    if (xforkin >= 0)
***************
*** 1011,1017 ****
  	    if (xforkin < 0)
  	      abort ();
- #endif /* not UNIPLUS and not RTU */
  	  }
! #endif /* TIOCNOTTY */
  #endif /* HAVE_PTYS */
  	child_setup_tty (xforkout);
--- 1037,1048 ----
  	    if (xforkin < 0)
  	      abort ();
  	  }
! #endif /* not UNIPLUS and not RTU */
! #ifdef IBMRTAIX
! 	/* On AIX, we've disabled SIGHUP above once we start a child on a pty.
! 	   Now reenable it in the child, so it will die when we want it to.  */
! 	if (ptyname)
! 	  signal (SIGHUP, SIG_DFL);
! #endif
  #endif /* HAVE_PTYS */
  	child_setup_tty (xforkout);
***************
*** 1117,1121 ****
  
    if (connect (s, &address, sizeof address) == -1)
!     error ("Host \"%s\" not responding", XSTRING (host)->data);
  
    inch = s;
--- 1148,1155 ----
  
    if (connect (s, &address, sizeof address) == -1)
!     {
!       close (s);
!       error ("Host \"%s\" not responding", XSTRING (host)->data);
!     }
  
    inch = s;
***************
*** 1399,1402 ****
--- 1433,1441 ----
  	    error("select error: %s", sys_errlist[xerrno]);
  	}
+ #ifdef sun
+       else if (nfds > 0 && (Available & 1) && interrupt_input)
+ 	/* System sometimes fails to deliver SIGIO.  */
+ 	kill (getpid (), SIGIO);
+ #endif
  
        /* Check for keyboard input */
diff -rc2N dist-18.53/src/s-hpux.h dist-18.54/src/s-hpux.h
*** dist-18.53/src/s-hpux.h	Wed Dec 28 23:05:39 1988
--- dist-18.54/src/s-hpux.h	Tue Mar 14 17:49:11 1989
***************
*** 247,248 ****
--- 247,251 ----
  /* This is needed for HPUX version 6.2; it may not be needed for 6.2.1.  */
  #define SHORT_CAST_BUG
+ 
+ /* Define killpg so that we have process group functionality under HP.  */
+ #define	killpg(PGRP, KSIG)	kill (-(PGRP), KSIG)
diff -rc2N dist-18.53/src/sysdep.c dist-18.54/src/sysdep.c
*** dist-18.53/src/sysdep.c	Thu Feb  9 06:49:17 1989
--- dist-18.54/src/sysdep.c	Mon Apr 24 01:26:35 1989
***************
*** 101,104 ****
--- 101,108 ----
  #endif 
  
+ #ifdef mips
+ #include <sys/ioctl.h>
+ #endif 
+ 
  /* Get rid of LLITOUT in 4.1, since it is said to stimulate kernel bugs.  */
  #ifdef BSD4_1
***************
*** 141,144 ****
--- 145,151 ----
  #include <memory.h>
  #include <string.h>
+ #ifdef TIOCGWINSZ
+ #include <sys/sioctl.h>
+ #endif
  #ifdef HAVE_TIMEVAL
  #ifdef HPUX
***************
*** 502,507 ****
--- 509,518 ----
    return -1;
  #else
+ #ifdef SIGTSTP
  #ifdef BSD
    killpg (getpgrp (0), SIGTSTP);
+ #else
+   kill (-getpgrp (0), SIGTSTP);
+ #endif
  
  #else
***************
*** 835,838 ****
--- 846,850 ----
  	   so as to turn off local flow control for user coming over
  	   network on 4.2; in this case, only t_stopc and t_startc really matter.  */
+ #ifndef HAVE_TERMIO
  #ifdef TIOCGLTC
        ioctl (0, TIOCGLTC, &old_ltchars);
***************
*** 867,870 ****
--- 879,883 ----
        ioctl (0, TIOCSLTC, &new_ltchars);
  #endif /* TIOCGLTC */
+ #endif /* not HAVE_TERMIO */
  
  #ifdef BSD4_1
***************
*** 988,991 ****
--- 1001,1005 ----
  #endif
  #endif
+ #ifndef HAVE_TERMIO
  #ifdef TIOCGLTC
    ioctl (0, TIOCSLTC, &old_ltchars);
***************
*** 995,998 ****
--- 1009,1013 ----
    ioctl (0, TIOCLSET, &old_lmode);
  #endif /* TIOCGETC */
+ #endif /* not HAVE_TERMIO */
  #ifdef F_SETFL
  #ifdef F_SETOWN		/* F_SETFL does not imply existance of F_SETOWN */
***************
*** 1811,1818 ****
    d_name.dsc$w_length = strlen (name);
    d_name.dsc$a_pointer = name;
!   if (lib$sys_trnlog(&d_name, &eqlen, &equiv) == 1)
      {
!       buf[eqlen] = '\0';
!       return buf;
      }
    return (char *) getenv (name);
--- 1826,1837 ----
    d_name.dsc$w_length = strlen (name);
    d_name.dsc$a_pointer = name;
!   if (lib$sys_trnlog (&d_name, &eqlen, &equiv) == 1)
      {
!       char *str = (char *) xmalloc (eqlen + 1);
!       bcopy (buf, str, eqlen);
!       str[eqlen] = '\0';
!       /* This is a storage leak, but a pain to fix.  With luck,
! 	 no one will ever notice.  */
!       return str;
      }
    return (char *) getenv (name);
diff -rc2N dist-18.53/src/term.c dist-18.54/src/term.c
*** dist-18.53/src/term.c	Mon Jul 18 01:51:06 1988
--- dist-18.54/src/term.c	Wed Mar 29 10:49:32 1989
***************
*** 1194,1198 ****
  			 && TS_rev_scroll));
  
!   char_ins_del_ok = ((TS_ins_char || TS_ins_multi_chars)
  		     && (TS_del_char || TS_del_multi_chars));
  
--- 1194,1199 ----
  			 && TS_rev_scroll));
  
!   char_ins_del_ok = ((TS_ins_char || TS_insert_mode ||
! 		      TS_pad_inserted_char || TS_ins_multi_chars)
  		     && (TS_del_char || TS_del_multi_chars));
  
diff -rc2N dist-18.53/src/tparam.c dist-18.54/src/tparam.c
*** dist-18.53/src/tparam.c	Mon Apr 11 19:32:14 1988
--- dist-18.54/src/tparam.c	Thu Apr  6 23:55:26 1989
***************
*** 193,196 ****
--- 193,197 ----
  	      new = (char *) malloc (outlen = 40 + len);
  	      outend += 40;
+ 	      bcopy (outstring, new, op - outstring);
  	    }
  	  else
***************
*** 251,257 ****
  		      tem++;
  		      if (argp == oargp)
- 			doleft++, outend -= strlen (left);
- 		      else
  			doup++, outend -= strlen (up);
  		    }
  		}
--- 252,258 ----
  		      tem++;
  		      if (argp == oargp)
  			doup++, outend -= strlen (up);
+ 		      else
+ 			doleft++, outend -= strlen (left);
  		    }
  		}
***************
*** 335,342 ****
      }
    *op = 0;
-   while (doleft-- > 0)
-     strcpy (op, left);
    while (doup-- > 0)
!     strcpy (op, up);
    return outstring;
  }
--- 336,343 ----
      }
    *op = 0;
    while (doup-- > 0)
!     strcat (op, up);
!   while (doleft-- > 0)
!     strcat (op, left);
    return outstring;
  }
diff -rc2N dist-18.53/src/x11term.c dist-18.54/src/x11term.c
*** dist-18.53/src/x11term.c	Mon Feb  6 22:48:41 1989
--- dist-18.54/src/x11term.c	Thu Apr  6 13:45:19 1989
***************
*** 85,89 ****
  #endif
  #include <sys/stat.h>
- #include <sys/time.h>
  
  #include "dispextern.h"
--- 85,88 ----
***************
*** 532,536 ****
  	register char *start, *end;
  {
-   register int temp_length;
    BLOCK_INPUT_DECLARE ();
  
--- 531,534 ----
***************
*** 539,543 ****
  	  cursX, end-start+1, InUpdate);
  #endif XDEBUG
! 	
    BLOCK_INPUT ();
  
--- 537,541 ----
  	  cursX, end-start+1, InUpdate);
  #endif XDEBUG
! 
    BLOCK_INPUT ();
  
***************
*** 559,564 ****
  			cursY*XXfonth+XXInternalBorder+XXbase,
  			start,
! 			end - start + 1);
!       XTtopos (cursY, temp_length);
  
        UNBLOCK_INPUT ();
--- 557,562 ----
  			cursY*XXfonth+XXInternalBorder+XXbase,
  			start,
! 			(end - start) + 1);
!       XTtopos (cursY, (end - start) + 1);
  
        UNBLOCK_INPUT ();
diff -rc2N dist-18.53/src/xdisp.c dist-18.54/src/xdisp.c
*** dist-18.53/src/xdisp.c	Wed Dec 28 22:30:15 1988
--- dist-18.54/src/xdisp.c	Wed Apr 26 16:13:59 1989
***************
*** 87,90 ****
--- 87,93 ----
  int scroll_step;
  
+ /* Nonzero means send various TERMCAP strings when screen is cleared.  */
+ int reset_terminal_on_clear;
+ 
  /* Nonzero if try_window_id has made blank lines at window bottom
   since the last redisplay that paused */
***************
*** 158,162 ****
  {
    if (screen_height == 0) abort (); /* Some bug zeros some core */
!   set_terminal_modes ();
    clear_screen ();
    fflush (stdout);
--- 161,166 ----
  {
    if (screen_height == 0) abort (); /* Some bug zeros some core */
!   if (reset_terminal_on_clear)
!     set_terminal_modes ();
    clear_screen ();
    fflush (stdout);
***************
*** 1987,1990 ****
--- 1991,1998 ----
  If that fails to bring point back on screen, point is centered instead.\n\
  If this is zero, point is always centered after it moves off screen.");
+ 
+   DEFVAR_BOOL ("reset-terminal-on-clear", &reset_terminal_on_clear,
+     "Non-nil means re-init terminal modes for clear screen as on entry to Emacs.");
+   reset_terminal_on_clear = 1;
  
    DEFVAR_INT ("debug-end-pos", &debug_end_pos, "Don't ask");
diff -rc2N dist-18.53/src/xmenu.c dist-18.54/src/xmenu.c
*** dist-18.53/src/xmenu.c	Tue May 31 03:23:17 1988
--- dist-18.54/src/xmenu.c	Thu Apr  6 21:36:11 1989
***************
*** 128,131 ****
--- 128,135 ----
    Lisp_Object XEmacsMenu();
    int i, j;
+ #ifdef X11
+   Window root_window, wjunk;
+   int ijunk;
+ #endif
    BLOCK_INPUT_DECLARE ();
  
***************
*** 132,137 ****
    check_xterm();
  #ifdef X11
!   XMenu_xpos = XXfontw * XINT(Fcar(arg));
!   XMenu_ypos = XXfonth * XINT(Fcar(Fcdr (arg)));
  #else
    XMenu_xpos = fontinfo->width * XINT(Fcar(arg));
--- 136,142 ----
    check_xterm();
  #ifdef X11
!   root_window = RootWindow (XXdisplay, DefaultScreen(XXdisplay));
!   XQueryPointer (XXdisplay, root_window, &wjunk, &wjunk, &XMenu_xpos,
! 		 &XMenu_ypos, &ijunk, &ijunk, &ijunk);
  #else
    XMenu_xpos = fontinfo->width * XINT(Fcar(arg));
***************
*** 158,162 ****
  #ifdef X11
    XSetErrorHandler(XMenuQuit);
!   selection = XEmacsMenu(XXwindow, XMenu_xpos, XMenu_ypos, names, menus,
  			 items, number_of_panes, obj_list ,title, &error_name);
    XSetErrorHandler(handler);
--- 163,167 ----
  #ifdef X11
    XSetErrorHandler(XMenuQuit);
!   selection = XEmacsMenu(root_window, XMenu_xpos, XMenu_ypos, names, menus,
  			 items, number_of_panes, obj_list ,title, &error_name);
    XSetErrorHandler(handler);
***************
*** 199,203 ****
  Lisp_Object
  XEmacsMenu(parent, startx, starty, line_list, pane_list, line_cnt,
! 		      pane_cnt, item_list, title, error)
       Window parent;		
       int startx, starty;	/* upper left corner position BROKEN */
--- 204,208 ----
  Lisp_Object
  XEmacsMenu(parent, startx, starty, line_list, pane_list, line_cnt,
! 	   pane_cnt, item_list, title, error)
       Window parent;		
       int startx, starty;	/* upper left corner position BROKEN */
***************
*** 216,220 ****
    /* struct indices *datap, *datap_save; */
    char *datap;
!   int ulx, uly, width, height;
    int dispwidth, dispheight;
    
--- 221,225 ----
    /* struct indices *datap, *datap_save; */
    char *datap;
!   int ulx = 0, uly = 0, width, height;
    int dispwidth, dispheight;
    
***************
*** 265,270 ****
  #ifdef X11
    XXscreen = DefaultScreen(XXdisplay);
!   width = DisplayWidth(XXdisplay, XXscreen);
!   height = DisplayHeight(XXdisplay, XXscreen);
  #else
    dispwidth = DisplayWidth();
--- 270,275 ----
  #ifdef X11
    XXscreen = DefaultScreen(XXdisplay);
!   dispwidth = DisplayWidth(XXdisplay, XXscreen);
!   dispheight = DisplayHeight(XXdisplay, XXscreen);
  #else
    dispwidth = DisplayWidth();
diff -rc2N dist-18.53/src/ymakefile dist-18.54/src/ymakefile
*** dist-18.53/src/ymakefile	Mon Aug 15 23:03:31 1988
--- dist-18.54/src/ymakefile	Wed Apr 19 20:26:15 1989
***************
*** 30,33 ****
--- 30,42 ----
  #include "config.h"
  
+ /* Use HAVE_X11 as an alias for X11 in this file
+    to avoid problems with X11 as a subdirectory name
+    in -I and other such options which pass through this file. */
+ 
+ #ifdef X11
+ #define HAVE_X11
+ #undef X11
+ #endif
+ 
  /* On some machines #define register is done in config;
     don't let it interfere with this file.  */
***************
*** 162,166 ****
  
  #ifdef HAVE_X_WINDOWS
! #ifdef X11
  #ifdef HAVE_X_MENU
  XOBJ = x11term.o x11fns.o xmenu.o
--- 171,175 ----
  
  #ifdef HAVE_X_WINDOWS
! #ifdef HAVE_X11
  #ifdef HAVE_X_MENU
  XOBJ = x11term.o x11fns.o xmenu.o
***************
*** 170,174 ****
  LIBX = -lX11 LIBX11_MACHINE LIBX11_SYSTEM
  #endif
! #else /* not X11 */
  #ifdef HAVE_X_MENU
  XOBJ= xterm.o xfns.o xmenu.o
--- 179,183 ----
  LIBX = -lX11 LIBX11_MACHINE LIBX11_SYSTEM
  #endif
! #else /* not HAVE_X11 */
  #ifdef HAVE_X_MENU
  XOBJ= xterm.o xfns.o xmenu.o
***************
*** 178,182 ****
  LIBX= -lX LIBX10_MACHINE LIBX10_SYSTEM
  #endif /* not HAVE_X_MENU */
! #endif /* not X11 */
  #endif /* HAVE_X_WINDOWS */
  
--- 187,191 ----
  LIBX= -lX LIBX10_MACHINE LIBX10_SYSTEM
  #endif /* not HAVE_X_MENU */
! #endif /* not HAVE_X11 */
  #endif /* HAVE_X_WINDOWS */
  
***************
*** 388,392 ****
  minibuf.o : minibuf.c syntax.h window.h buffer.h commands.h config.h 
  mocklisp.o : mocklisp.c buffer.h config.h
! process.o : process.c process.h buffer.h window.h termhooks.h commands.h config.h 
  regex.o : regex.c syntax.h buffer.h config.h regex.h 
  scroll.o : scroll.c termchar.h config.h dispextern.h
--- 397,401 ----
  minibuf.o : minibuf.c syntax.h window.h buffer.h commands.h config.h 
  mocklisp.o : mocklisp.c buffer.h config.h
! process.o : process.c process.h buffer.h window.h termhooks.h termopts.h commands.h config.h 
  regex.o : regex.c syntax.h buffer.h config.h regex.h 
  scroll.o : scroll.c termchar.h config.h dispextern.h