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

⟦2af4c208d⟧ TextFile

    Length: 83457 (0x14601)
    Types: TextFile
    Notes: Uncompressed file

Derivation

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

TextFile

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

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.

Note that the 18.53 distribution includes the directory oldXMenu
which is a discontinued portion of the X window system.
18.52 did not have this, as XMenu was then distributed with X.
These files are not included in this set of diffs.


========================================Replacement file man/README
This directory contains the Tex sources of the Emacs manual,
plus the macro package (texinfo.tex) necessary for processing it.

1) Run tex on emacs.tex, producing emacs.cp, emacs.fn, emacs.ky,
and emacs.vr (unsorted index files), plus emacs.aux (cross ref file).

2) Compile texindex.c, and run it:
   `texindex emacs.??'
This produces sorted index files emacs.cps, emacs.fns, etc.
that are used as input in step 3.

3) Run tex on emacs.tex again.

4) Now you have a dvi file that you can print.

The latest versions of all the intermediate files are supplied,
so if you want to print the manual with no change, you can start with
step 3.
========================================Replacement file etc/DISTRIB
	  GNU Emacs availability information, 13 March 1988
	  Copyright (C) 1986, 1987, 1988 Richard M. Stallman

   Permission is granted to anyone to make or distribute
   verbatim copies of this document provided that the
   copyright notice and this permission notice are preserved.

	The prices on the order form below EXPIRE in June 1989

GNU Emacs is legally owned by the Free Software Foundation, but we
regard the foundation actually as its custodian on behalf of the
public, since all software ought to be the common property of mankind.

The foundation permits everyone to have and run copies of GNU Emacs,
at no charge, and to redistribute copies under certain conditions
which are designed to make sure that that all modified versions of GNU
Emacs remain as free as the versions we distribute.  These conditions
are stated in the document "GNU Emacs General Public License", a copy
of which is required to be distributed with every copy of GNU Emacs.
It is usually in a file named COPYING in the same directory as this
file.

If you do not know anyone to get a copy of GNU Emacs from, you can
order a tape from the Free Software Foundation.  We distribute Emacs
version 18 on 1600bpi industry standard mag tape in tar format.  We
will also ship it on 1/4" Sun cartridge tapes in tar format and on 1600bpi
magtape in VMS interchange format.  We also distribute nicely typeset
copies of the Emacs manual.  See the order form at the end of this
file.

If you have Internet access, you can copy the latest Emacs
distribution from host prep.ai.mit.edu.  There are several ways to do
this; see the file `FTP' in the same directory as this file for more
information.  Even better, get the latest version of the file from
`/u2/emacs/etc/FTP' on prep.ai.mit.edu for the most current
arrangements.  It may also be possible to copy Emacs via uucp; the
file `FTP' contains information on that too.

Emacs has been run on both Berkeley Unix and System V Unix, on a
variety of types of cpu.  It also works on VMS and on Apollo
computers, though with some deficiencies that reflect problems in
these operating systems.  See the file MACHINES in this directory for
a full list of machines that GNU Emacs has been tested on, with
machine-specific installation notes and warnings.

Note that there is significant variation between Unix systems
supposedly running the same version of Unix; it is possible that what
works in GNU Emacs for me does not work on your system due to such an
incompatibility.  Since I must avoid reading Unix source code, I
cannot even guess what such problems may exist.

GNU Emacs is distributed with no warranty (see the General Public
License for full details), and neither I nor the Free Software
Foundation promises any kind of support or assistance to users.  The
foundation keeps a list of people who are willing to offer support and
assistance for hire.  It is usually in a file named SERVICE in the
same directory as this file.

However, I plan to continue to improve GNU Emacs and keep it reliable,
so please send me any complaints and suggestions you have.  I will
probably fix anything that is clearly (to me) a malfunction.  I may
make an improvement if I consider it worth the effort, but you should
not be surprised if I don't think I can spare time for it.  I hope to
keep Emacs stable now, and avoid putting much time into it, so I can
work on other parts of the GNU system.

If you are on the Internet, report bugs to
bug-gnu-emacs@prep.ai.mit.edu; on Usenet, use the address
...!ucbvax!bug-gnu-emacs%prep.ai.mit.edu.  Otherwise, phone the
foundation at +1 617 876-3296, or write to the address listed below.

If you are a computer manufacturer, I encourage you to ship a copy of
GNU Emacs with every computer you deliver.  The same copying
permission terms apply to computer manufacturers as to everyone else.
You should consider making a donation to help support the GNU project;
if you estimate what it would cost to distribute some commercial
product and divide it by five, that is a good amount.

If you like GNU Emacs, please express your satisfaction with a
donation: send me or the Foundation what you feel Emacs has been worth
to you.  If you are glad that I developed GNU Emacs and distribute it
as freeware, rather than following the obstructive and antisocial
practices typical of software developers, reward me for doing so!

Your donations will help to support the development of more useful
software to be distributed on the same basis as GNU Emacs.  Eventually
we will have a complete imitation of the Unix operating system, called
GNU (Gnu's Not Unix), which will run Unix user programs.  For more
information on GNU, see the file GNU in this directory.


			Richard M Stallman
			Chief GNUisance,
			President of the Free Software Foundation
\f


		Free Software Foundation Order Form
			   17 January 1989

	   This form is effective January 1989--June 1989.

All software and publications are distributed with permission to
copy and redistribute.

Quantity  Price  Item

________ $150	GNU Emacs and other software, for Unix systems,
		on 1600bpi reel-to-reel 9-track tape in tar format.
		The tape also contains:
		* MIT Scheme (a dialect of Lisp)
		* T, Yale's implementation of Scheme
		* Bison (a free, compatible replacement for yacc)
		* Hack (a rogue-like game)
		* GNU Chess (a chess playing program with an interface to X).
		* GDB (the GNU source-level C debugger)
		* The X window system (a window system for bitmap
		  displays written at MIT) (version 10r4)
							
________ $150	GNU Beta Test tape, for Unix systems, on tape as in last item.
		The tape includes:
		* GCC (the GNU C Compiler)
		* G++ (the C++ front end to GCC)
		* Bison (a free, compatible replacement for yacc)
		* Flex (Vern Paxson fast rewrite of lex)
		* Gnostscript (a Postscript interpreter)
		* Gawk (the GNU implementation of the AWK programming language)
		* Gas (the GNU Assembler)
		* Gnuplot (an interactive mathematical plotting program)
		* GNU object file utilities (ar, ld, make, gprof, size, nm,
		  strip, ranlib, et al.)
		* other GNU utilities (diff, grep, tar, et al.)
		* the freed files from the 4.3BSD-Tahoe distribution

________ $150	MIT X Window System X11R3, for Unix systems,
		on tape as in last item.

________ $175   GNU Emacs and other software, for Suns, as in the first item,
		on DC300XLP 1/4inch cartridge tape, in QIC-24 format.

________ $175	GNU Beta Test tape, for Suns, as in the second item,
                on tape as in last item.

________ $175	MIT X Window System X11R3, as in the third item,
                on tape as in last item.

________ $150	GNU Emacs source code and binaries, for VMS, on 1600
		bpi reel-to-reel 9-track tape in VMS backup format.

________ $150	GNU C compiler source code and binaries, for VMS, on
		tape as in last item.  Includes Bison and GAS.

________  $15	GNU Emacs manual, ~300 pages.  The manual is phototypeset,
		offset printed, and spiral bound; it includes a reference card.

Thus, a 1600 bpi tape and one Emacs manual come to $165.

________  $60	Box of six GNU Emacs manuals, each with reference card.

________   $1	One GNU Emacs reference card, without the manual.

________   $5   Packet of ten GNU Emacs reference cards.

________  $10   GDB Manual, ~70 pages, side stapled.

________  $10	Texinfo Manual, ~100 pages, side stapled.  Texinfo is GNU's
		structured documentation system, included with GNU Emacs
		This manual describes how to write Texinfo documents.

________  $10   Termcap Manual, ~60 pages, side stapled.  Documents the
		termcap library and GNU's extensions to it.  The GNU termcap
		library is included with GNU Emacs.

________  $10   Bison Manual, ~70 pages, side stapled.

________  $10   Gawk Manual, ~100 pages, side stapled.

________  $10   Make Manual, ~100 pages, side stapled.

Prices and contents of tapes are subject to change without notice.
This form is effective January 1989--June 1989.

________   If ordering from Massachusetts:} add 5% sales tax.

________   If outside of North America and Hawaii:  for shipping costs,
	   please add $60 for each box of Emacs manuals; for tapes or
	   unboxed manuals, please add $15, and then add $15 more for
	   each tape or unboxed manual. 

________   Optional tax deductible donation.


________   Total paid

Orders are filled upon receipt of check or money order.  We do not have
the staff to handle the billing of unpaid orders.  Please help keep
our lives simple by including your payment with your order.

Make checks payable to Free Software Foundation.  Mail orders to:

   Free Software Foundation, Inc.
   675 Mass Ave
   Cambridge, MA 02139

All software from the Free Software Foundation is provided on an "as
is" basis, with no warranty of any kind.
======================================================================
diff -rc2N dist-18.52/cpp/cccp.c dist-18.53/cpp/cccp.c
*** dist-18.52/cpp/cccp.c	Fri Feb 12 17:07:26 1988
--- dist-18.53/cpp/cccp.c	Wed Dec 28 23:06:17 1988
***************
*** 99,102 ****
--- 99,105 ----
  #define NO_SHORTNAMES
  #include "../src/config.h"
+ #ifdef static
+ #undef static
+ #endif
  #ifdef open
  #undef open
diff -rc2N dist-18.52/etc/ChangeLog dist-18.53/etc/ChangeLog
*** dist-18.52/etc/ChangeLog	Thu Aug  4 19:43:07 1988
--- dist-18.53/etc/ChangeLog	Tue Feb 21 12:59:03 1989
***************
*** 1,2 ****
--- 1,33 ----
+ Tue Feb 21 12:58:55 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* movemail.c: On sysv, include unistd.h.
+ 
+ Tue Jan  3 13:29:46 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* movemail.c: Check access before doing real work.
+ 	Check that outfile is in a writable directory.
+ 	On fatal error, delete the lock file.
+ 
+ Fri Dec 30 16:37:27 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* movemail.c: Use `access' to check input and output files.
+ 
+ Wed Dec 28 23:16:28 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* emacsclient.c [USG]: Don't append cwd if abs pathname is spec'd.
+ 
+ Wed Nov 30 15:21:13 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* movemail.c: Do fsync before closing output.
+ 
+ Tue Nov 29 09:59:54 1988  Richard Mlynarik  (mly at pickled-brain.ai.mit.edu)
+ 
+         * movemail.c:  Better error message when can't create tempname.
+         This file needs a great deal of extra error-checking and lucid reporting...
+ 
+ Tue Nov 15 10:00:21 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* movemail.c: Close output and check errors before deleting input.
+ 
  Thu Aug  4 19:42:45 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
  
diff -rc2N dist-18.52/etc/MACHINES dist-18.53/etc/MACHINES
*** dist-18.52/etc/MACHINES	Wed Aug 31 19:42:22 1988
--- dist-18.53/etc/MACHINES	Fri Feb 24 06:43:22 1989
***************
*** 1,4 ****
  This is a list of the status of GNU Emacs on various machines and systems.
! Last updated 31 August 1988
  
  Systems:
--- 1,4 ----
  This is a list of the status of GNU Emacs on various machines and systems.
! Last updated 23 Feb 1989
  
  Systems:
***************
*** 171,180 ****
    Version 18.49 works.
  
! Convex (m-convex.h; s-bsd4-2.h)
  
!   Changes that should work merged in 18.50.
  
-   18.51 should fix the problems in dumping on operating system version 6.1.
- 
  Cydra 5 (m-cydra5.h; s-usg5-3.h)
  
--- 171,178 ----
    Version 18.49 works.
  
! Convex (m-convex.h; s-bsd4-3.h)
  
!   18.53 is supposed to work.
  
  Cydra 5 (m-cydra5.h; s-usg5-3.h)
  
***************
*** 212,215 ****
--- 210,216 ----
    stack frames.  Otherwise routines that call `alloca' all lose.
  
+   A kernel bug in some system versions causes input characters to be lost
+   occasionally.
+ 
  GEC 93 (m-gec93.h; s-usg5-2.h?)
  
***************
*** 286,289 ****
--- 287,292 ----
    Use s-bsd-4-2.h for the 4.2-like system and s-usg5-2-2.h for AIX.
  
+   On BSD, if you have trouble, try compiling with a different compiler.
+ 
    On AIX, the file /usr/lib/samples/hft/hftctl.c must be compiled into
    hftctl.o, with this result left in the src directory (hftctl.c is
***************
*** 290,293 ****
--- 293,298 ----
    part of the standard AIX distribution).
  
+   window.c must not be compiled with -O on AIX.
+ 
  Integrated Solutions `Optimum V' (m-isi-ov.h; s-bsd4-2.h or s-bsd4-3.h)
  
***************
*** 310,316 ****
    Changes merged in 18.50 for all three operating systems.
    If you are using Xenix, see notes above under Xenix.
!   Note one version of system V.3 lacks the pty and socket support
!   that the V.3 normally (I am told) has; in this case, you should
!   #undef HAVE_PTYS and HAVE_SOCKETS in config.h.
  
  Iris 2500 (m-irist.h; s-iris3-5.h or s-iris3-6.h)
--- 315,322 ----
    Changes merged in 18.50 for all three operating systems.
    If you are using Xenix, see notes above under Xenix.
! 
!   Some sysV.3 systems seem to have bugs in `opendir';
!   for them, alter `config.h' to define NONSYSTEM_DIR_LIBRARY
!   and undefine SYSV_SYSTEM_DIR.
  
  Iris 2500 (m-irist.h; s-iris3-5.h or s-iris3-6.h)
***************
*** 481,485 ****
  Vax running Berkeley Unix (m-vax.h; s-bsd4-1.h, s-bsd4-2.h or s-bsd4-3.h)
  
!   Works.  Note that "ultrix" is essentially 4.2; use s-bsd4-2.h.
  
  Vax running System V rel 2 (m-vax.h; s-usg5-2.h)
--- 487,508 ----
  Vax running Berkeley Unix (m-vax.h; s-bsd4-1.h, s-bsd4-2.h or s-bsd4-3.h)
  
!   Works.
! 
! Vax running Ultrix (m-vax.h; s-bsd4-2.h or s-bsd4-3.h)
! 
!   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:
! 
!     #if defined(ultrix) && defined(X11)
!     #define OBJECTS_SYSTEM calloc.o
!     #endif
! 
!     Then I ran the following:
! 
!     ar x /usr/lib/libc.a calloc.o
  
  Vax running System V rel 2 (m-vax.h; s-usg5-2.h)
diff -rc2N dist-18.52/etc/emacsclient.c dist-18.53/etc/emacsclient.c
*** dist-18.52/etc/emacsclient.c	Thu Aug  4 19:41:23 1988
--- dist-18.53/etc/emacsclient.c	Wed Dec 28 23:16:25 1988
***************
*** 194,200 ****
  	      *cwd = '\0';
  	    }
  	}
  	
-       strcat (msgp->mtext, cwd);
        strcat (msgp->mtext, argv[0]);
        strcat (msgp->mtext, " ");
--- 194,200 ----
  	      *cwd = '\0';
  	    }
+ 	  strcat (msgp->mtext, cwd);
  	}
  	
        strcat (msgp->mtext, argv[0]);
        strcat (msgp->mtext, " ");
diff -rc2N dist-18.52/etc/movemail.c dist-18.53/etc/movemail.c
*** dist-18.52/etc/movemail.c	Thu Apr 28 08:57:25 1988
--- dist-18.53/etc/movemail.c	Tue Feb 21 12:58:39 1989
***************
*** 46,49 ****
--- 46,50 ----
  #ifdef USG
  #include <fcntl.h>
+ #include <unistd.h>
  #endif /* USG */
  
***************
*** 61,64 ****
--- 62,68 ----
  extern int errno;
  
+ /* Nonzero means this is name of a lock file to delete on fatal error.  */
+ char *delete_lockname;
+ 
  main (argc, argv)
       int argc;
***************
*** 79,82 ****
--- 83,88 ----
  #endif /* not MAIL_USE_FLOCK */
  
+   delete_lockname = 0;
+ 
    if (argc < 3)
      fatal ("two arguments required");
***************
*** 85,88 ****
--- 91,115 ----
    outname = argv[2];
  
+   /* Check access to input and output file.  */
+   if (access (inname, R_OK | W_OK) != 0)
+     pfatal_with_name (inname);
+   if (access (outname, F_OK) == 0 && access (outname, W_OK) != 0)
+     pfatal_with_name (outname);
+ 
+   /* Also check that outname's directory is writeable to the real uid.  */
+   {
+     char *buf = (char *) malloc (strlen (outname) + 1);
+     char *p, q;
+     strcpy (buf, outname);
+     p = buf + strlen (buf);
+     while (p > buf && p[-1] != '/')
+       *--p = 0;
+     if (p == buf)
+       *p++ = '.';
+     if (access (buf, W_OK) != 0)
+       pfatal_with_name (buf);
+     free (buf);
+   }
+ 
  #ifdef MAIL_USE_POP
    if (!bcmp (inname, "po:", 3))
***************
*** 109,113 ****
    strcpy (p, "EXXXXXX");
    mktemp (tempname);
!   unlink (tempname);
  
    while (1)
--- 136,140 ----
    strcpy (p, "EXXXXXX");
    mktemp (tempname);
!   (void) unlink (tempname);
  
    while (1)
***************
*** 117,125 ****
        desc = open (tempname, O_WRONLY | O_CREAT, 0666);
        if (desc < 0)
! 	fatal ("error creating lock file");
        close (desc);
  
        tem = link (tempname, lockname);
!       unlink (tempname);
        if (tem >= 0)
  	break;
--- 144,152 ----
        desc = open (tempname, O_WRONLY | O_CREAT, 0666);
        if (desc < 0)
!         pfatal_with_name (concat ("temporary file \"", tempname, "\""));
        close (desc);
  
        tem = link (tempname, lockname);
!       (void) unlink (tempname);
        if (tem >= 0)
  	break;
***************
*** 131,137 ****
  	  now = time (0);
  	  if (st.st_ctime < now - 60)
! 	    unlink (lockname);
  	}
      }
  #endif /* not MAIL_USE_FLOCK */
  
--- 158,166 ----
  	  now = time (0);
  	  if (st.st_ctime < now - 60)
! 	    (void) unlink (lockname);
  	}
      }
+ 
+   delete_lockname = lockname;
  #endif /* not MAIL_USE_FLOCK */
  
***************
*** 143,146 ****
--- 172,176 ----
    if (indesc < 0)
      pfatal_with_name (inname);
+ 
  #if defined(BSD) || defined(XENIX)
    /* In case movemail is setuid to root, make sure the user can
***************
*** 168,174 ****
  	  int saved_errno = errno;
  	  (void) unlink (outname);
- #ifndef MAIL_USE_FLOCK
- 	  (void) unlink (lockname);
- #endif /* not MAIL_USE_FLOCK */ 
  	  errno = saved_errno;
  	  pfatal_with_name (outname);
--- 198,201 ----
***************
*** 178,181 ****
--- 205,221 ----
      }
  
+ #ifdef BSD
+   fsync (outdesc);
+ #endif
+ 
+   /* Check to make sure no errors before we zap the inbox.  */
+   if (close (outdesc) != 0)
+     {
+       int saved_errno = errno;
+       (void) unlink (outname);
+       errno = saved_errno;
+       pfatal_with_name (outname);
+   }
+ 
  #ifdef MAIL_USE_FLOCK
  #if defined(STRIDE) || defined(XENIX)
***************
*** 187,191 ****
  #endif /* MAIL_USE_FLOCK */
    close (indesc);
!   close (outdesc);
  #ifndef MAIL_USE_FLOCK
    /* Delete the input file; if we can't, at least get rid of its contents.  */
--- 227,231 ----
  #endif /* MAIL_USE_FLOCK */
    close (indesc);
! 
  #ifndef MAIL_USE_FLOCK
    /* Delete the input file; if we can't, at least get rid of its contents.  */
***************
*** 193,197 ****
      if (errno != ENOENT)
        creat (inname, 0666);
!   unlink (lockname);
  #endif /* not MAIL_USE_FLOCK */
    exit (0);
--- 233,237 ----
      if (errno != ENOENT)
        creat (inname, 0666);
!   (void) unlink (lockname);
  #endif /* not MAIL_USE_FLOCK */
    exit (0);
***************
*** 203,206 ****
--- 243,248 ----
       char *s1, *s2;
  {
+   if (delete_lockname)
+     unlink (delete_lockname);
    error (s1, s2);
    exit (1);
diff -rc2N dist-18.52/etc/termcap.ucb dist-18.53/etc/termcap.ucb
*** dist-18.52/etc/termcap.ucb	Mon Oct 27 20:18:43 1986
--- dist-18.53/etc/termcap.ucb	Tue Feb 21 05:51:25 1989
***************
*** 2285,2289 ****
  	:dc=\EW:dl=\ER:do=^J:ei=\Er:im=\Eq:is=\E`\072\200\EC\EDF\E0\E'\E(\EA21:\
  	:kd=^J:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K:us=\EG8:ue=\EG0:\
! 	:so=\EG4:se=\EG0:sg#1:sr=\Ej:ho=^^:ug#1:
  # it is not known if the status line works with sysline
  yh|w50-s|wyse50-s|Wyse 50 for sysline
--- 2285,2289 ----
  	:dc=\EW:dl=\ER:do=^J:ei=\Er:im=\Eq:is=\E`\072\200\EC\EDF\E0\E'\E(\EA21:\
  	:kd=^J:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K:us=\EG8:ue=\EG0:\
! 	:so=\EG4:se=\EG0:sg#0:sr=\Ej:ho=^^:ug#0:
  # it is not known if the status line works with sysline
  yh|w50-s|wyse50-s|Wyse 50 for sysline
diff -rc2N dist-18.52/lisp/ChangeLog dist-18.53/lisp/ChangeLog
*** dist-18.52/lisp/ChangeLog	Thu Sep  1 14:23:48 1988
--- dist-18.53/lisp/ChangeLog	Fri Feb 24 08:36:17 1989
***************
*** 1,2 ****
--- 1,36 ----
+ Thu Feb 23 06:47:13 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* Version 18.53 released.
+ 
+ 	* tex-mode.el (TeX-start): Wait 1 second for TeX to start.
+ 	(TeX-common-initialization): Make comment-start-skip find comment
+ 	at start of a line.
+ 	(TeX-region): don't include previous line (before start) in the header.
+ 
+ 	* autoinsert.el: Change defconst to defvar.
+ 
+ Wed Feb 15 03:55:23 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* dbx.el (run-dbx): Set dbx-process.
+ 	(dbx-stop-at): Use that to decide where to send the string.
+ 
+ Thu Dec 29 14:23:37 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* compile.el (compilation-sentinel): Set OPOINT, OMAX in proper buffer.
+ 
+ Wed Dec 28 23:07:35 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* debug.el (cancel-debug-on-entry): Paren error in case for macros.
+ 
+ 	* spell.el (spell-region): Don't lose if `spell-filter' is local.
+ 
+ 	* texinfmt.el (texinfo-format-defun-1): Fix bug in &-kwds in @defun.
+ 	(texinfo-format-emph): Rescan the argument.
+ 
+ 	* lpr.el (print-region-1): sysV wants different options.
+ 
+ 	* rmail.el (rmail-convert-to-babyl-format):
+ 	Do case-significant searches.
+ 
  Thu Sep  1 14:22:30 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
  
diff -rc2N dist-18.52/lisp/autoinsert.el dist-18.53/lisp/autoinsert.el
*** dist-18.52/lisp/autoinsert.el	Wed Aug 17 21:27:39 1988
--- dist-18.53/lisp/autoinsert.el	Thu Feb 23 06:47:09 1989
***************
*** 50,58 ****
  ;;;  Date: Fri Jul  1 16:15:31 EDT 1988
  
! (defconst auto-insert-alist '(("\\.tex$" . "tex-insert.tex")
! 			       ("\\.c$" . "c-insert.c")
! 			       ("\\.h$" . "h-insert.c")
! 			       ("[Mm]akefile" . "makefile.inc")
! 			       ("\\.bib$" . "tex-insert.tex"))
    "Alist specifying text to insert by default into a new file.
  Elements look like (REGEXP . FILENAME); if the new file's name
--- 50,58 ----
  ;;;  Date: Fri Jul  1 16:15:31 EDT 1988
  
! (defvar auto-insert-alist '(("\\.tex$" . "tex-insert.tex")
! 			    ("\\.c$" . "c-insert.c")
! 			    ("\\.h$" . "h-insert.c")
! 			    ("[Mm]akefile" . "makefile.inc")
! 			    ("\\.bib$" . "tex-insert.tex"))
    "Alist specifying text to insert by default into a new file.
  Elements look like (REGEXP . FILENAME); if the new file's name
***************
*** 61,65 ****
  
  ;;; Establish a default value for auto-insert-directory
! (defconst auto-insert-directory "~/insert/"
    "Directory from which auto-inserted files are taken.")
  
--- 61,65 ----
  
  ;;; Establish a default value for auto-insert-directory
! (defvar auto-insert-directory "~/insert/"
    "Directory from which auto-inserted files are taken.")
  
diff -rc2N dist-18.52/lisp/compile.el dist-18.53/lisp/compile.el
*** dist-18.52/lisp/compile.el	Mon Jul 18 00:26:46 1988
--- dist-18.53/lisp/compile.el	Thu Dec 29 14:25:03 1988
***************
*** 124,129 ****
  	((memq (process-status proc) '(signal exit))
  	 (let* ((obuf (current-buffer))
! 		(omax (point-max))
! 		(opoint (point)))
  	   ;; save-excursion isn't the right thing if
  	   ;;  process-buffer is current-buffer
--- 124,128 ----
  	((memq (process-status proc) '(signal exit))
  	 (let* ((obuf (current-buffer))
! 		omax opoint)
  	   ;; save-excursion isn't the right thing if
  	   ;;  process-buffer is current-buffer
***************
*** 132,135 ****
--- 131,135 ----
  		 ;; Write something in *compilation* and hack its mode line,
  		 (set-buffer (process-buffer proc))
+ 		 (setq omax (point-max) opoint (point))
  		 (goto-char (point-max))
  		 (insert ?\n mode-name " " msg)
***************
*** 148,152 ****
  	     ;; Force mode line redisplay soon
  	     (set-buffer-modified-p (buffer-modified-p)))
! 	   (if (< opoint omax)
  	       (goto-char opoint))
  	   (set-buffer obuf)))))
--- 148,152 ----
  	     ;; Force mode line redisplay soon
  	     (set-buffer-modified-p (buffer-modified-p)))
! 	   (if (and opoint (< opoint omax))
  	       (goto-char opoint))
  	   (set-buffer obuf)))))
diff -rc2N dist-18.52/lisp/dbx.el dist-18.53/lisp/dbx.el
*** dist-18.52/lisp/dbx.el	Fri Feb 12 02:14:30 1988
--- dist-18.53/lisp/dbx.el	Wed Feb 15 03:57:54 1989
***************
*** 25,28 ****
--- 25,31 ----
    "Dbx trace switch.")
  
+ (defvar dbx-process nil
+   "The process in which dbx is running.")
+ 
  (defvar dbx-break-point
    "stopped in .* at line \\([0-9]*\\) in file \"\\([^\"]*\\)\""
***************
*** 95,99 ****
      (setq default-directory (file-name-directory path))
      (switch-to-buffer (make-shell (concat "dbx-" file) "dbx" nil file)))
!   (set-process-filter (get-buffer-process (current-buffer)) 'dbx-filter)
    (inferior-dbx-mode))
  
--- 98,103 ----
      (setq default-directory (file-name-directory path))
      (switch-to-buffer (make-shell (concat "dbx-" file) "dbx" nil file)))
!   (setq dbx-process (get-buffer-process (current-buffer)))
!   (set-process-filter dbx-process 'dbx-filter)
    (inferior-dbx-mode))
  
***************
*** 158,161 ****
  		(widen)
  		(1+ (count-lines 1 (point))))))
!     (send-string "dbx"
  		 (concat "stop at \"" file-name "\":" line "\n"))))
--- 162,165 ----
  		(widen)
  		(1+ (count-lines 1 (point))))))
!     (send-string dbx-process
  		 (concat "stop at \"" file-name "\":" line "\n"))))
diff -rc2N dist-18.52/lisp/debug.el dist-18.53/lisp/debug.el
*** dist-18.52/lisp/debug.el	Thu Apr 14 19:16:17 1988
--- dist-18.53/lisp/debug.el	Wed Dec 28 23:22:41 1988
***************
*** 250,254 ****
    (let ((defn (symbol-function function)))
      (if (eq (car defn) 'macro)
! 	(fset function (cons 'macro (debug-on-entry-1 function (cdr defn)) nil))
        (fset function (debug-on-entry-1 function defn nil))))
    function)
--- 250,255 ----
    (let ((defn (symbol-function function)))
      (if (eq (car defn) 'macro)
! 	(fset function
! 	      (cons 'macro (debug-on-entry-1 function (cdr defn) nil)))
        (fset function (debug-on-entry-1 function defn nil))))
    function)
diff -rc2N dist-18.52/lisp/lpr.el dist-18.53/lisp/lpr.el
*** dist-18.52/lisp/lpr.el	Sun Jun 19 18:35:16 1988
--- dist-18.53/lisp/lpr.el	Wed Dec 28 23:42:37 1988
***************
*** 66,71 ****
       (apply 'call-process-region
  	    (nconc (list start end lpr-command
! 			 nil nil nil
! 			 "-J" name "-T" name)
! 		   switches))
       (message "Spooling...done"))))
--- 66,72 ----
       (apply 'call-process-region
  	    (nconc (list start end lpr-command
! 			 nil nil nil)
! 		   (nconc (and (eq system-type 'berkeley-unix)
! 			       (list "-J" name "-T" name))
! 			  switches)))
       (message "Spooling...done"))))
diff -rc2N dist-18.52/lisp/rmail.el dist-18.53/lisp/rmail.el
*** dist-18.52/lisp/rmail.el	Mon Jul  4 12:29:14 1988
--- dist-18.53/lisp/rmail.el	Wed Dec 28 23:07:32 1988
***************
*** 510,514 ****
  (defun rmail-convert-to-babyl-format ()
    (let ((count 0) start
! 	(case-fold-search t))
      (goto-char (point-min))
      (save-restriction
--- 510,514 ----
  (defun rmail-convert-to-babyl-format ()
    (let ((count 0) start
! 	(case-fold-search nil))
      (goto-char (point-min))
      (save-restriction
diff -rc2N dist-18.52/lisp/spell.el dist-18.53/lisp/spell.el
*** dist-18.52/lisp/spell.el	Thu Aug 18 14:21:20 1988
--- dist-18.53/lisp/spell.el	Wed Dec 28 23:22:42 1988
***************
*** 57,61 ****
  for example, \"word\"."
    (interactive "r")
!   (let ((buf (get-buffer-create " *temp*")))
      (save-excursion
       (set-buffer buf)
--- 57,62 ----
  for example, \"word\"."
    (interactive "r")
!   (let ((filter spell-filter)
! 	(buf (get-buffer-create " *temp*")))
      (save-excursion
       (set-buffer buf)
***************
*** 63,67 ****
       (erase-buffer))
      (message "Checking spelling of %s..." (or description "region"))
!     (if (and (null spell-filter) (= ?\n (char-after (1- end))))
  	(if (string= "spell" spell-command)
  	    (call-process-region start end "spell" nil buf)
--- 64,68 ----
       (erase-buffer))
      (message "Checking spelling of %s..." (or description "region"))
!     (if (and (null filter) (= ?\n (char-after (1- end))))
  	(if (string= "spell" spell-command)
  	    (call-process-region start end "spell" nil buf)
***************
*** 73,77 ****
  	 (insert-buffer-substring oldbuf start end)
  	 (or (bolp) (insert ?\n))
! 	 (if spell-filter (funcall spell-filter))
  	 (if (string= "spell" spell-command)
  	     (call-process-region (point-min) (point-max) "spell" t buf)
--- 74,78 ----
  	 (insert-buffer-substring oldbuf start end)
  	 (or (bolp) (insert ?\n))
! 	 (if filter (funcall filter))
  	 (if (string= "spell" spell-command)
  	     (call-process-region (point-min) (point-max) "spell" t buf)
diff -rc2N dist-18.52/lisp/tex-mode.el dist-18.53/lisp/tex-mode.el
*** dist-18.52/lisp/tex-mode.el	Thu May 19 16:57:13 1988
--- dist-18.53/lisp/tex-mode.el	Fri Feb 24 08:34:03 1989
***************
*** 230,234 ****
    (setq comment-start "%")
    (make-local-variable 'comment-start-skip)
!   (setq comment-start-skip "[^\\]\\(\\(\\\\\\\\\\)*\\)%+ *")
    (make-local-variable 'comment-indent-hook)
    (setq comment-indent-hook 'TeX-comment-indent)
--- 230,234 ----
    (setq comment-start "%")
    (make-local-variable 'comment-start-skip)
!   (setq comment-start-skip "\\(\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)")
    (make-local-variable 'comment-indent-hook)
    (setq comment-indent-hook 'TeX-comment-indent)
***************
*** 349,353 ****
      (setq TeX-shell-map (copy-keymap shell-mode-map))
      (TeX-define-common-keys TeX-shell-map)
!     (use-local-map TeX-shell-map)))
  
  (defun set-buffer-directory (buffer directory)
--- 349,355 ----
      (setq TeX-shell-map (copy-keymap shell-mode-map))
      (TeX-define-common-keys TeX-shell-map)
!     (use-local-map TeX-shell-map)
!     (if (zerop (buffer-size))
! 	(sleep-for 1))))
  
  (defun set-buffer-directory (buffer directory)
***************
*** 395,399 ****
  	  (if (search-forward TeX-start-of-header search-end t)
  	      (progn
! 		(forward-line -1)
  		(setq hbeg (point))	;mark beginning of header
  		(if (search-forward TeX-end-of-header nil t)
--- 397,401 ----
  	  (if (search-forward TeX-start-of-header search-end t)
  	      (progn
! 		(beginning-of-line)
  		(setq hbeg (point))	;mark beginning of header
  		(if (search-forward TeX-end-of-header nil t)
diff -rc2N dist-18.52/lisp/texinfmt.el dist-18.53/lisp/texinfmt.el
*** dist-18.52/lisp/texinfmt.el	Thu Jul 21 11:48:57 1988
--- dist-18.53/lisp/texinfmt.el	Wed Dec 28 23:11:05 1988
***************
*** 737,741 ****
  (put 'strong 'texinfo-format 'texinfo-format-emph)
  (defun texinfo-format-emph ()
!   (insert "*" (texinfo-parse-arg-discard) "*"))
  
  (put 'defn 'texinfo-format 'texinfo-format-defn)
--- 737,742 ----
  (put 'strong 'texinfo-format 'texinfo-format-emph)
  (defun texinfo-format-emph ()
!   (insert "*" (texinfo-parse-arg-discard) "*")
!   (goto-char texinfo-command-start))
  
  (put 'defn 'texinfo-format 'texinfo-format-defn)
***************
*** 912,916 ****
      (let ((args (cdr args)))
        (while args
! 	(insert " " (upcase (car args)))
  	(setq args (cdr args))))
      ;; Insert extra newline so that paragraph filling does not mess
--- 913,920 ----
      (let ((args (cdr args)))
        (while args
! 	(insert " "
! 		(if (= ?& (aref (car args) 0))
! 		    (car args)
! 		  (upcase (car args))))
  	(setq args (cdr args))))
      ;; Insert extra newline so that paragraph filling does not mess
diff -rc2N dist-18.52/lisp/version.el dist-18.53/lisp/version.el
*** dist-18.52/lisp/version.el	Sat Sep  3 21:24:29 1988
--- dist-18.53/lisp/version.el	Fri Feb 24 08:28: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.52.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.53.0" "\
  Version numbers of this version of Emacs.")
  
diff -rc2N dist-18.52/lisp/vmsproc.el dist-18.53/lisp/vmsproc.el
*** dist-18.52/lisp/vmsproc.el	Mon Jan  2 14:37:23 1989
--- dist-18.53/lisp/vmsproc.el	Mon Sep 29 00:48:32 1986
***************
*** 37,71 ****
  
  (defun subprocess-input (name str)
!   "Handles input from a subprocess.  Called by Emacs."
!   (if display-subprocess-window
        (display-buffer subprocess-buf))
!   (let ((old-buffer (current-buffer)))
!     (set-buffer subprocess-buf)
!     (goto-char (point-max))
!     (insert str)
!     (insert ?\n)
!     (set-buffer old-buffer)))
  
  (defun subprocess-exit (name)
!   "Called by Emacs upon subprocess exit."
!   (setq subprocess-running nil))
  
  (defun start-subprocess ()
!   "Spawns an asynchronous subprocess with output redirected to
  the buffer *COMMAND*.  Within this buffer, use C-m to send
  the last line to the subprocess or to bring another line to
  the end."
!   (if subprocess-running
!       (return t))
!   (setq subprocess-buf (get-buffer-create "*COMMAND*"))
!   (save-excursion
!     (set-buffer subprocess-buf)
!     (use-local-map command-mode-map))
!   (setq subprocess-running (spawn-subprocess 1 'subprocess-input
! 					     'subprocess-exit))
!   ;; Initialize subprocess so it doesn't panic and die upon
!   ;; encountering the first error.
!   (and subprocess-running
!        (send-command-to-subprocess 1 "ON SEVERE_ERROR THEN CONTINUE")))
  
  (defun subprocess-command ()
--- 37,71 ----
  
  (defun subprocess-input (name str)
!    "Handles input from a subprocess.  Called by Emacs."
!    (if display-subprocess-window
        (display-buffer subprocess-buf))
!    (let ((old-buffer (current-buffer)))
!       (set-buffer subprocess-buf)
!       (goto-char (point-max))
!       (insert str)
!       (insert ?\n)
!       (set-buffer old-buffer)))
  
  (defun subprocess-exit (name)
!    "Called by Emacs upon subprocess exit."
!    (setq subprocess-running nil))
  
  (defun start-subprocess ()
!    "Spawns an asynchronous subprocess with output redirected to
  the buffer *COMMAND*.  Within this buffer, use C-m to send
  the last line to the subprocess or to bring another line to
  the end."
!    (if subprocess-running
!        (return t))
!    (setq subprocess-buf (get-buffer-create "*COMMAND*"))
!    (save-excursion
! 	(set-buffer subprocess-buf)
! 	(use-local-map command-mode-map))
!    (setq subprocess-running (spawn-subprocess 1 'subprocess-input
!                                                'subprocess-exit))
!    ;; Initialize subprocess so it doesn't panic and die upon
!    ;; encountering the first error.
!    (and subprocess-running
!         (send-command-to-subprocess 1 "ON SEVERE_ERROR THEN CONTINUE")))
  
  (defun subprocess-command ()
***************
*** 75,79 ****
        (start-subprocess))
    (and subprocess-running
!        (progn (pop-to-buffer subprocess-buf) (goto-char (point-max)))))
  
  (defun command-send-input ()
--- 75,79 ----
        (start-subprocess))
    (and subprocess-running
!       (progn (pop-to-buffer subprocess-buf) (goto-char (point-max)))))
  
  (defun command-send-input ()
***************
*** 86,99 ****
                                          (progn (end-of-line) (point)))))
      (if (eobp)
! 	(progn
! 	  (if (not subprocess-running)
! 	      (start-subprocess))
! 	  (if subprocess-running
! 	      (progn
! 		(beginning-of-line)
! 		(send-command-to-subprocess 1 current-line)
! 		(if command-prefix-string
! 		    (progn (beginning-of-line) (insert command-prefix-string)))
! 		(next-line 1))))
        ;; else -- if not at last line in buffer
        (end-of-buffer)
--- 86,99 ----
                                          (progn (end-of-line) (point)))))
      (if (eobp)
!       (progn
!         (if (not subprocess-running)
!             (start-subprocess))
!         (if subprocess-running
!           (progn
!             (beginning-of-line)
!             (send-command-to-subprocess 1 current-line)
!             (if command-prefix-string
!               (progn (beginning-of-line) (insert command-prefix-string)))
!             (next-line 1))))
        ;; else -- if not at last line in buffer
        (end-of-buffer)
***************
*** 101,107 ****
        (next-line 1)
        (if (string-equal command-prefix-string
! 			(substring current-line 0 (length command-prefix-string)))
  	  (insert (substring current-line (length command-prefix-string)))
! 	(insert current-line)))))
  
  (defun command-kill-line()
--- 101,107 ----
        (next-line 1)
        (if (string-equal command-prefix-string
!                 (substring current-line 0 (length command-prefix-string)))
  	  (insert (substring current-line (length command-prefix-string)))
!           (insert current-line)))))
  
  (defun command-kill-line()
diff -rc2N dist-18.52/src/ChangeLog dist-18.53/src/ChangeLog
*** dist-18.52/src/ChangeLog	Wed Aug 31 19:22:51 1988
--- dist-18.53/src/ChangeLog	Fri Feb 24 08:21:05 1989
***************
*** 1,5 ****
  Wed Aug 31 02:45:27 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
  
! 	* Version 1.27 released.
  
  	* x11term.c (XT_GetDefaults): Replaced entire function.
--- 1,119 ----
+ Fri Feb 24 06:36:11 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* Version 18.53 released.
+ 
+ 	* x11fns.c, keymap.c: MouseMap now a Lisp_Object.
+ 
+ Sat Feb 18 09:03:52 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* emacs.c (main) [BSD]: Do setpgrp.  May avoid some Unix signal bugs.
+ 
+ Fri Feb 17 01:48:04 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* m-ibmrt-aix.h: Define BROKEN_FIONREAD.
+ 
+ Wed Feb 15 22:34:58 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* callproc.c (Fcall_process): Open /dev/null with O_WRONLY.
+ 
+ Mon Feb 13 05:22:20 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* alloc.c: Change all block sizes to 2^n - 8.
+ 	* malloc.c (malloc, free, realloc): Leave 8 bytes of space, not 4,
+ 	before the actual data block.
+ 
+ Sat Feb 11 01:14:39 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* data.c (Fkill_local_variable): New local to simplify big stmt.
+ 
+ Thu Feb  9 06:37:24 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* sysdep.c (init_sys_modes, child_setup_tty) [IBMRTAIX]:
+ 	Don't ignore BRK, and don't signal it.
+ 
+ Wed Feb  8 13:24:39 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* keymap.c (Fdefine_prefix_command): Use Ffset, not Fset.
+ 
+ Mon Feb  6 22:48:45 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* x11term.c: Include sys/time.h; AIX needs it.
+ 
+ Fri Jan 20 14:27:37 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* sysdep.c (init_sys_modes): Do TIOCSTART if def, like TCXONC.
+ 
+ Fri Jan 13 01:21:51 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* x11term.c (x_term_init): Set up an error handler and an I/O
+ 	error handler.  Also handle SIGPIPE.
+ 	(x_error_handler, x_io_error_handler): New functions.
+ 
+ 	* sunfns.c (Fsun_change_cursor_icon): Avoid ambiguity in eval order.
+ 
+ Wed Jan 11 16:20:56 1989  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* dispnew.c (init_display): don't handle SIGWINCH if using X.
+ 	Set inhibit_window_system in that case.
+ 	This is said to stop Emacs from being wrong about the screen size
+ 	under X.  [danapple@flotsam.mit.edu].
+ 
+ Wed Dec 28 23:04:25 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* fileio.c (Fdo_auto_save): No "file has shrunk" msg if < 5000 chars.
+ 
+ 	* sysdep.c (utime): Use new flag IRIS_UTIME, not IRIS.
+ 	* s-iris*.h: Define that flag.
+ 
+ 	* sysdep.c (TIOCSETN) [USG]: Use TCSETAW, not TCSETA.
+ 
+ 	* editfns.c (Fsubst_char_in_region): Fix typo in when to un-modify buf.
+ 
+ 	* m-sun386.h (LDAV_SYMBOL): Define as "avenrun" with no underscore.
+ 
+ 	* search.c (place): Was clipping to (1- (point-max)) by mistake.
+ 
+ 	* m-iris4d.h: (conditionally) delete DEFAULT_ENTRY_ADDRESS
+ 	and change START_FILES and LIB_STANDARD.
+ 
+ 	* s-iris3-6.h: Define sigblock as no-op.
+ 
+ 	* m/m-mips.h: Cancel defn of VIRT_ADDR_VARIES, `static'.
+ 	Undef SIGIO.  Define BROKEN_FIONREAD.
+ 	Define various HAVE_... flags a la BSD.
+ 	Add options, libraries for linking and compilation.
+ 
+ 	* unexmips.c (unexec): Handle additional optional sections now likely.
+ 	New scheme for recording what sections there are.
+ 	Make handling of the LIT8,LIT4 sections conditional (not on IRIS).
+ 
+ 	* keymap.c (Fwhere_is_internal): Special handling if
+ 	DEFINITION is a cons: don't go thru indirect defns.
+ 
+ 	* xterm.c (XPopUpWindow, XTread_socket): No HPUX conditionals;
+ 	treat HPUX like other systems.
+ 
+ 	* s-hpux.h: Define SHORT_CAST_BUG (needed for 6.2).
+ 
+ 	* xdisp.c (message{,1}, DoDsp): At end, if screen_garbaged,
+ 	retry.  A size-change can cause this, under X.
+ 
+ 	* dispnew.c (change_screen_size): Split out change_screen_size_1
+ 	which does the real work.
+ 	PRETEND == -1 means do like normal but don't redisplay.
+ 	(unhold_window_change): Always process deferred change directly,
+ 	using change_screen_size_1.  During that, hold any new changes.
+ 	* x11term.c (XT_Set_Size_Hint): Don't omit PRETEND arg.
+ 	Pass -1 when this is called at startup--avoids calling DoDsp
+ 	before the X connection is really set up.
+ 
+ Tue Sep  6 20:43:10 1988  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)
+ 
+ 	* data.c (Fmake_local_variable): Add local variable to simplify
+ 	too-complex expression.
+ 	
  Wed Aug 31 02:45:27 1988  Richard Stallman  (rms at corn-chex.ai.mit.edu)
  
! 	* Version 18.52 released.
  
  	* x11term.c (XT_GetDefaults): Replaced entire function.
diff -rc2N dist-18.52/src/alloc.c dist-18.53/src/alloc.c
*** dist-18.52/src/alloc.c	Thu Feb 11 02:09:48 1988
--- dist-18.53/src/alloc.c	Mon Feb 13 05:23:35 1989
***************
*** 112,121 ****
   any new cons cells from the latest cons_block.
  
!  Each cons_block is just under 1020 bytes long,
   since malloc really allocates in units of powers of two
!  and uses 4 bytes for its own overhead. */
  
  #define CONS_BLOCK_SIZE \
!   ((1020 - sizeof (struct cons_block *)) / sizeof (struct Lisp_Cons))
  
  struct cons_block
--- 112,121 ----
   any new cons cells from the latest cons_block.
  
!  Each cons_block is just under 1016 bytes long,
   since malloc really allocates in units of powers of two
!  and uses 8 bytes for its own overhead. */
  
  #define CONS_BLOCK_SIZE \
!   ((1016 - sizeof (struct cons_block *)) / sizeof (struct Lisp_Cons))
  
  struct cons_block
***************
*** 270,279 ****
   Just like allocation of conses!
  
!  Each symbol_block is just under 1020 bytes long,
   since malloc really allocates in units of powers of two
!  and uses 4 bytes for its own overhead. */
  
  #define SYMBOL_BLOCK_SIZE \
!   ((1020 - sizeof (struct symbol_block *)) / sizeof (struct Lisp_Symbol))
  
  struct symbol_block
--- 270,279 ----
   Just like allocation of conses!
  
!  Each symbol_block is just under 1016 bytes long,
   since malloc really allocates in units of powers of two
!  and uses 8 bytes for its own overhead. */
  
  #define SYMBOL_BLOCK_SIZE \
!   ((1016 - sizeof (struct symbol_block *)) / sizeof (struct Lisp_Symbol))
  
  struct symbol_block
***************
*** 341,345 ****
  
  #define MARKER_BLOCK_SIZE \
!   ((1020 - sizeof (struct marker_block *)) / sizeof (struct Lisp_Marker))
  
  struct marker_block
--- 341,345 ----
  
  #define MARKER_BLOCK_SIZE \
!   ((1016 - sizeof (struct marker_block *)) / sizeof (struct Lisp_Marker))
  
  struct marker_block
***************
*** 415,420 ****
  
  /* String blocks contain this many useful bytes.
!    8188 is power of 2, minus 4 for malloc overhead. */
! #define STRING_BLOCK_SIZE (8188 - sizeof (struct string_block_head))
  
  /* A string bigger than this gets its own specially-made string block
--- 415,420 ----
  
  /* String blocks contain this many useful bytes.
!    8184 is power of 2, minus 8 for malloc overhead. */
! #define STRING_BLOCK_SIZE (8184 - sizeof (struct string_block_head))
  
  /* A string bigger than this gets its own specially-made string block
diff -rc2N dist-18.52/src/callproc.c dist-18.53/src/callproc.c
*** dist-18.52/src/callproc.c	Mon Aug 15 23:07:49 1988
--- dist-18.53/src/callproc.c	Wed Feb 15 22:36:20 1989
***************
*** 35,38 ****
--- 35,42 ----
  #endif
  
+ #ifndef O_WRONLY
+ #define O_WRONLY 1
+ #endif
+ 
  #include "lisp.h"
  #include "commands.h"
***************
*** 159,163 ****
      fd[1] = open ("NLA0:", 0), fd[0] = -1;
  #else
!     fd[1] = open ("/dev/null", 0), fd[0] = -1;
  #endif /* not VMS */
    else
--- 163,167 ----
      fd[1] = open ("NLA0:", 0), fd[0] = -1;
  #else
!     fd[1] = open ("/dev/null", O_WRONLY), fd[0] = -1;
  #endif /* not VMS */
    else
diff -rc2N dist-18.52/src/cmds.c dist-18.53/src/cmds.c
*** dist-18.52/src/cmds.c	Tue Jul 19 19:43:25 1988
--- dist-18.53/src/cmds.c	Wed Dec 28 23:09:21 1988
***************
*** 238,242 ****
  	InsCStr (&c1, 1);
        else
! 	SelfInsert ('\n', XFASTINT (arg1) > 1);
        XFASTINT (arg)--;		/* Ok since old and new vals both nonneg */
      }
--- 238,242 ----
  	InsCStr (&c1, 1);
        else
! 	SelfInsert ('\n', !NULL (arg1));
        XFASTINT (arg)--;		/* Ok since old and new vals both nonneg */
      }
diff -rc2N dist-18.52/src/data.c dist-18.53/src/data.c
*** dist-18.52/src/data.c	Fri Aug 26 20:36:23 1988
--- dist-18.53/src/data.c	Sat Feb 11 01:15:57 1989
***************
*** 839,846 ****
          = Fcons (Fcons (sym, XCONS (XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->cdr)->cdr),
  		 bf_cur->local_var_alist);
        /* Make sure symbol does not think it is set up for this buffer;
  	 force it to look once again for this buffer's value */
!       if (bf_cur == XBUFFER (XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car))
! 	XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Qnil;
      }
    return sym;
--- 839,853 ----
          = Fcons (Fcons (sym, XCONS (XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->cdr)->cdr),
  		 bf_cur->local_var_alist);
+ 
        /* Make sure symbol does not think it is set up for this buffer;
  	 force it to look once again for this buffer's value */
!       {
! 	/* This local variable avoids "expression to complex" on IBM RT.  */
! 	Lisp_Object xs;
!     
! 	xs = XSYMBOL (sym)->value;
! 	if (bf_cur == XBUFFER (XCONS (XCONS (xs)->cdr)->car))
! 	  XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Qnil; 
!       }
      }
    return sym;
***************
*** 886,891 ****
    /* Make sure symbol does not think it is set up for this buffer;
       force it to look once again for this buffer's value */
!   if (bf_cur == XBUFFER (XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car))
!     XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Qnil;
  
    return sym;
--- 893,902 ----
    /* Make sure symbol does not think it is set up for this buffer;
       force it to look once again for this buffer's value */
!   {
!     Lisp_Object sv;
!     sv = XSYMBOL (sym)->value;
!     if (bf_cur == XBUFFER (XCONS (XCONS (sv)->cdr)->car))
!       XCONS (XCONS (sv)->cdr)->car = Qnil;
!   }
  
    return sym;
diff -rc2N dist-18.52/src/dispnew.c dist-18.53/src/dispnew.c
*** dist-18.52/src/dispnew.c	Wed Aug 24 12:01:40 1988
--- dist-18.53/src/dispnew.c	Wed Jan 11 16:28:56 1989
***************
*** 1128,1132 ****
  #endif /* SIGWINCH */
  
! /* Prevent window-change signals from being handled.  */
  hold_window_change ()
  {
--- 1128,1132 ----
  #endif /* SIGWINCH */
  
! /* Prevent screen size from being changed by signals.  */
  hold_window_change ()
  {
***************
*** 1134,1152 ****
  }
  
! /* Allow waiting window-change signals to be handled.  */
  unhold_window_change ()
  {
    in_display = 0;
!   /* If window_change_signal should have run before, run it now.  */
!   if (delayed_size_change)
! #ifdef SIGWINCH
!     kill (getpid (), SIGWINCH);
! #else
!     change_screen_size (delayed_screen_height, delayed_screen_width, 0);
! #endif
  }
  
  /* Change the screen height and/or width.  Values may be given as zero to
!    indicate no change is to take place. */
  change_screen_size (newlength, newwidth, pretend)
       register int newlength, newwidth, pretend;
--- 1134,1161 ----
  }
  
! /* Reenable signals to change the screen size
!    and handle any signals that have happened already.  */
! 
  unhold_window_change ()
  {
    in_display = 0;
!   /* If change_screen_size should have run before, run it now.  */
!   while (delayed_size_change)
!     {
!       int newwidth = delayed_screen_width;
!       int newheight = delayed_screen_height;
!       delayed_size_change = 0;
!       in_display = 1;
!       change_screen_size_1 (newheight, newwidth, 0);
!       in_display = 0;
!     }
  }
  
  /* Change the screen height and/or width.  Values may be given as zero to
!    indicate no change is to take place.
!    PRETEND is normally 0; 1 means change used-size only
!    but don't change the size used for calculations;
!    -1 means don't redisplay.  */
! 
  change_screen_size (newlength, newwidth, pretend)
       register int newlength, newwidth, pretend;
***************
*** 1160,1165 ****
        return;
      }
- 
    delayed_size_change = 0;
    if ((newlength == 0 || newlength == screen_height)
        && (newwidth == 0 || newwidth == screen_width))
--- 1169,1179 ----
        return;
      }
    delayed_size_change = 0;
+   change_screen_size_1 (newlength, newwidth, pretend);
+ }
+ 
+ change_screen_size_1 (newlength, newwidth, pretend)
+      register int newlength, newwidth, pretend;
+ {
    if ((newlength == 0 || newlength == screen_height)
        && (newwidth == 0 || newwidth == screen_width))
***************
*** 1173,1177 ****
        set_window_height (minibuf_window, 1, 0);
        screen_height = newlength;
!       if (!pretend)
  	ScreenRows = newlength;
        set_terminal_window (0);
--- 1187,1191 ----
        set_window_height (minibuf_window, 1, 0);
        screen_height = newlength;
!       if (pretend <= 0)
  	ScreenRows = newlength;
        set_terminal_window (0);
***************
*** 1184,1188 ****
        set_window_width (minibuf_window, newwidth, 0);
        screen_width = newwidth;
!       if (!pretend)
  	ScreenCols = newwidth;
      }
--- 1198,1202 ----
        set_window_width (minibuf_window, newwidth, 0);
        screen_width = newwidth;
!       if (pretend <= 0)
  	ScreenCols = newwidth;
      }
***************
*** 1189,1193 ****
    make_display_lines ();
    calculate_costs ();
!   DoDsp (1);
  }
  
--- 1203,1208 ----
    make_display_lines ();
    calculate_costs ();
!   if (pretend >= 0)
!     DoDsp (1);
  }
  
***************
*** 1401,1404 ****
--- 1416,1421 ----
        ;
      }
+   /* Record we aren't using a window system.  */
+   inhibit_window_system = 1;
  
    /* Look at the TERM variable */
***************
*** 1428,1432 ****
    if (initialized)
  #endif /* CANNOT_DUMP */
!     signal (SIGWINCH, window_change_signal);
  #endif /* SIGWINCH */
  }
--- 1445,1450 ----
    if (initialized)
  #endif /* CANNOT_DUMP */
!     if (inhibit_window_system)
!       signal (SIGWINCH, window_change_signal);
  #endif /* SIGWINCH */
  }
diff -rc2N dist-18.52/src/editfns.c dist-18.53/src/editfns.c
*** dist-18.52/src/editfns.c	Thu Feb 11 01:47:26 1988
--- dist-18.53/src/editfns.c	Wed Dec 28 23:58:35 1988
***************
*** 659,663 ****
  
    modify_region (pos, stop);
!   if (NULL (noundo))
      bf_modified--;
  
--- 659,663 ----
  
    modify_region (pos, stop);
!   if (! NULL (noundo))
      bf_modified--;
  
diff -rc2N dist-18.52/src/emacs.c dist-18.53/src/emacs.c
*** dist-18.52/src/emacs.c	Fri Aug 26 18:31:50 1988
--- dist-18.53/src/emacs.c	Sat Feb 18 09:03:50 1989
***************
*** 225,228 ****
--- 225,233 ----
  #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;
  
diff -rc2N dist-18.52/src/fileio.c dist-18.53/src/fileio.c
*** dist-18.52/src/fileio.c	Sat Aug 20 12:14:24 1988
--- dist-18.53/src/fileio.c	Wed Dec 28 23:58:31 1988
***************
*** 1925,1928 ****
--- 1925,1931 ----
  	  if ((XFASTINT (b->save_length) * 10
  	       > (b->text.size1 + b->text.size2) * 13)
+ 	      /* A short file is likely to change a large fraction;
+ 		 spare the user annoying messages.  */
+ 	      && XFASTINT (b->save_length) > 5000
  	      /* These messages are frequent and annoying for `*mail*'.  */
  	      && !EQ (b->filename, Qnil))
diff -rc2N dist-18.52/src/keymap.c dist-18.53/src/keymap.c
*** dist-18.52/src/keymap.c	Mon Aug 15 23:08:53 1988
--- dist-18.53/src/keymap.c	Fri Feb 24 06:36:05 1989
***************
*** 32,36 ****
  
  #ifdef HAVE_X_WINDOWS
! struct Lisp_Vector *MouseMap;		/* Keymap for mouse commands */
  #endif /* HAVE_X_WINDOWS */
  
--- 32,36 ----
  
  #ifdef HAVE_X_WINDOWS
! Lisp_Object MouseMap;		/* Keymap for mouse commands */
  #endif /* HAVE_X_WINDOWS */
  
***************
*** 524,528 ****
       Lisp_Object name;
  {
!   Fset (name, Fmake_keymap ());
    return name;
  }
--- 524,528 ----
       Lisp_Object name;
  {
!   Ffset (name, Fmake_keymap ());
    return name;
  }
***************
*** 807,811 ****
  	    }
  
! 	  elt = get_keyelt (elt);
  
  	  /* End this iteration if this element does not match
--- 807,812 ----
  	    }
  
! 	  if (XTYPE (definition) != Lisp_Cons)
! 	    elt = get_keyelt (elt);
  
  	  /* End this iteration if this element does not match
***************
*** 1270,1274 ****
  #ifdef HAVE_X_WINDOWS
    tem = Fmake_keymap ();
!   MouseMap = XVECTOR (tem);
    Fset (intern ("mouse-map"), tem);
  #endif /* HAVE_X_WINDOWS */
--- 1271,1275 ----
  #ifdef HAVE_X_WINDOWS
    tem = Fmake_keymap ();
!   MouseMap = tem;
    Fset (intern ("mouse-map"), tem);
  #endif /* HAVE_X_WINDOWS */
diff -rc2N dist-18.52/src/m-convex.h dist-18.53/src/m-convex.h
*** dist-18.52/src/m-convex.h	Tue Apr 19 04:20:04 1988
--- dist-18.53/src/m-convex.h	Thu Feb 23 07:05:41 1989
***************
*** 1,4 ****
  /* m- file for convex C1.
!    Copyright (C) 1987 Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
--- 1,4 ----
  /* m- file for convex C1.
!    Copyright (C) 1987, 1989 Free Software Foundation, Inc.
  
  This file is part of GNU Emacs.
***************
*** 35,42 ****
  
  /* Define NO_ARG_ARRAY if you cannot take the address of the first of a
!  * group of arguments and treat it as an array of the arguments.
!  * Maybe it would be better to simply correct the code. */
  
! #define NO_ARG_ARRAY
  
  /* Define WORD_MACHINE if addresses and such have
--- 35,41 ----
  
  /* Define NO_ARG_ARRAY if you cannot take the address of the first of a
!  * group of arguments and treat it as an array of the arguments.  */
  
! /* #define NO_ARG_ARRAY */
  
  /* Define WORD_MACHINE if addresses and such have
***************
*** 89,93 ****
     numerically.  */
  
! /*#define VIRT_ADDR_VARIES*/
  
  /* Define C_ALLOCA if this machine does not support a true alloca
--- 88,92 ----
     numerically.  */
  
! /* #define VIRT_ADDR_VARIES */
  
  /* Define C_ALLOCA if this machine does not support a true alloca
***************
*** 98,104 ****
     in the file alloca.s should be used.  */
  
! /*#define C_ALLOCA*/
  #define HAVE_ALLOCA
  
  /* Define NO_REMAP if memory segmentation makes it not work well
     to change the boundary between the text section and data section
--- 97,107 ----
     in the file alloca.s should be used.  */
  
! /* #define C_ALLOCA */
  #define HAVE_ALLOCA
  
+ #ifdef __GNUC__
+ #define alloca __builtin_alloca
+ #endif
+ 
  /* Define NO_REMAP if memory segmentation makes it not work well
     to change the boundary between the text section and data section
***************
*** 109,120 ****
  \f


  /* Addresses on the Convex have the high bit set.  */
- #define DATA_SEG_BITS (1 << (INTBITS-1))
  
! /* Right shift is logical shift.
!    And the usual way of handling such machines, which involves
!    copying the number into sign_extend_temp, does not work
!    for reasons as yet unknown.  */
  
! #define XINT(a)  sign_extend_lisp_int (a)
  
  /* Convex uses a special version of unexec.  */
--- 112,121 ----
  \f


  /* Addresses on the Convex have the high bit set.  */
  
! #define DATA_SEG_BITS 0x80000000
  
! /* Right shift is logical shift, so use this to sign-extend a lisp int.  */
!  
! #define XINT(a) ((int) ((((a) & 0x00ffffff) ^ 0x00800000) - 0x00800000))
  
  /* Convex uses a special version of unexec.  */
diff -rc2N dist-18.52/src/m-ibmrt-aix.h dist-18.53/src/m-ibmrt-aix.h
*** dist-18.52/src/m-ibmrt-aix.h	Thu Aug 25 15:36:06 1988
--- dist-18.53/src/m-ibmrt-aix.h	Fri Feb 17 01:47:57 1989
***************
*** 123,133 ****
  /* Here override various assumptions in ymakefile */
  
! #define OBJECTS_MACHINE hftctl.o
! #define START_FILES /lib/crt0.o
  #define C_SWITCH_MACHINE -I/usr/include -I/usr/include/bsd -Nn2000
- #define LIBS_MACHINE -lsock -lbsd -lrts
- #define LIBX10_MACHINE -lsock -lbsd -lrts
  /* need to duplicate -lsock -lbsd -lrts so refs in libX can be resolved   */
  /* order of lib specs in ymakefile should probably be changed.            */
  #define LD_SWITCH_MACHINE -n -T0x10000000 -K -e start
  
--- 123,140 ----
  /* Here override various assumptions in ymakefile */
  
! /* On AIX 2.2.1, use these definitions instead
! #define C_SWITCH_MACHINE -I/usr/include -Nn2000
! #define LIBS_MACHINE -lX -lrts
! #define LIBX10_MACHINE -lrts
! */
! 
  #define C_SWITCH_MACHINE -I/usr/include -I/usr/include/bsd -Nn2000
  /* need to duplicate -lsock -lbsd -lrts so refs in libX can be resolved   */
  /* order of lib specs in ymakefile should probably be changed.            */
+ #define LIBS_MACHINE -lXMenu -lX -lsock -lbsd -lrts
+ #define LIBX10_MACHINE -lsock -lbsd -lrts
+ 
+ #define OBJECTS_MACHINE hftctl.o
+ #define START_FILES /lib/crt0.o
  #define LD_SWITCH_MACHINE -n -T0x10000000 -K -e start
  
***************
*** 159,160 ****
--- 166,170 ----
  /* at all in 2.1.2.  So, for compatibility, avoid name collision on 2.2 */
  #define getwd AIX_getwd
+ 
+ /* AIX defines FIONREAD, but it does not work.  */
+ #define BROKEN_FIONREAD
diff -rc2N dist-18.52/src/m-iris4d.h dist-18.53/src/m-iris4d.h
*** dist-18.52/src/m-iris4d.h	Tue Aug 30 15:23:10 1988
--- dist-18.53/src/m-iris4d.h	Wed Dec 28 23:45:32 1988
***************
*** 153,156 ****
--- 153,170 ----
  #define LIBS_MACHINE -lbsd -lPW -lmld
  #define LIBS_DEBUG
+ 
+ /* Define this if you have a fairly recent system,
+    in which crt1.o and crt1.n should be used.  */
+ #define HAVE_CRTN
+ 
+ #ifdef HAVE_CRTN
+ /* 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
+ /* The entry-point label (start of text segment) is `start', not `__start'.  */
+ #define DEFAULT_ENTRY_ADDRESS start
+ #endif
  \f


  /* Use terminfo instead of termcap.  */
***************
*** 167,174 ****
  
  #define STACK_DIRECTION -1
- 
- /* Must define START-FILES so that the linker can find /usr/lib/crt0.o */
- 
- #define START_FILES pre-crt0.o /usr/lib/crt0.o
  \f


  /* The standard definitions of these macros would work ok,
--- 181,184 ----
***************
*** 187,191 ****
  #define XSETMARKBIT(a,b) ((a) = ((a) & ~MARKBIT) | ((b) ? MARKBIT : 0))
  #define XUNMARK(a) ((a) = (((unsigned)(a) << INTBITS-GCTYPEBITS-VALBITS) >> INTBITS-GCTYPEBITS-VALBITS))
- 
- /* The entry-point label (start of text segment) is `start', not `__start'.  */
- #define DEFAULT_ENTRY_ADDRESS start
--- 197,198 ----
diff -rc2N dist-18.52/src/m-mips.h dist-18.53/src/m-mips.h
*** dist-18.52/src/m-mips.h	Thu May 19 18:37:33 1988
--- dist-18.53/src/m-mips.h	Wed Dec 28 23:45:45 1988
***************
*** 91,95 ****
     numerically.  */
  
! #define VIRT_ADDR_VARIES
  
  /* Define C_ALLOCA if this machine does not support a true alloca
--- 91,95 ----
     numerically.  */
  
! /* #define VIRT_ADDR_VARIES */
  
  /* Define C_ALLOCA if this machine does not support a true alloca
***************
*** 123,128 ****
  
  #define LIBS_MACHINE -lmld
! #define LD_SWITCH_MACHINE -D 800000
! #define LIBS_DEBUG
  \f


  /* The standard definitions of these macros would work ok,
--- 123,132 ----
  
  #define LIBS_MACHINE -lmld
! #define LD_SWITCH_MACHINE -D 800000 -g3
! #define START_FILES pre-crt0.o /usr/lib/crt1.o
! #define LIB_STANDARD -lbsd -lc /usr/lib/crtn.o
! 
! #define C_SWITCH_SYSTEM -I/usr/include/bsd
! #define C_DEBUG_SWITCH -O -g3
  \f


  /* The standard definitions of these macros would work ok,
***************
*** 141,142 ****
--- 145,178 ----
  #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
+ #undef static
+ 
+ /* Don't try to use SIGIO or FIONREAD even though they are defined.  */
+ #undef SIGIO
+ #define BROKEN_FIONREAD
+ 
+ /* Describe special kernel features.  */
+ 
+ #define HAVE_SYSVIPC
+ 
+ #define HAVE_TIMEVAL
+ #if defined(emacs)
+ #include <bsd/sys/time.h>
+ #endif
+ 
+ /* #define HAVE_SELECT
+    The `select' in the system won't work for pipes,
+    so don't use it.  */
+ 
+ #define HAVE_DUP2
+ #define HAVE_GETWD
+ #define HAVE_GETTIMEOFDAY
+ 
+ #define HAVE_PTYS
+ #define HAVE_SOCKETS
+ #define BSTRING
+ 
+ /* ??? */
+ #define IRIS
diff -rc2N dist-18.52/src/m-sun386.h dist-18.53/src/m-sun386.h
*** dist-18.52/src/m-sun386.h	Wed Aug  3 19:25:06 1988
--- dist-18.53/src/m-sun386.h	Wed Dec 28 23:48:32 1988
***************
*** 38,41 ****
--- 38,45 ----
  #define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
  
+ /* Underscores are not prepended to C symbols on this machine.  */ 
+ #undef LDAV_SYMBOL
+ #define LDAV_SYMBOL "avenrun"
+ 
  /* Must use the system's termcap.  It does special things.  */
  
diff -rc2N dist-18.52/src/malloc.c dist-18.53/src/malloc.c
*** dist-18.52/src/malloc.c	Thu Jun  9 23:41:18 1988
--- dist-18.53/src/malloc.c	Mon Feb 13 05:37:16 1989
***************
*** 461,466 ****
  
    /* Figure out how many bytes are required, rounding up to the nearest
!      multiple of 4, then figure out which nextf[] area to use */
!   nbytes = (n + sizeof *p + EXTRA + 3) & ~3;
    {
      register unsigned int   shiftr = (nbytes - 1) >> 2;
--- 461,466 ----
  
    /* 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;
    {
      register unsigned int   shiftr = (nbytes - 1) >> 2;
***************
*** 518,522 ****
    nmal++;
  #endif /* MSTATS */
!   return (char *) (p + 1);
  }
  
--- 518,522 ----
    nmal++;
  #endif /* MSTATS */
!   return (char *) p + ((sizeof *p + 7) & ~7);
  }
  
***************
*** 531,539 ****
        return;
  
!     p = (struct mhead *) ap - 1;
      if (p -> mh_alloc == ISMEMALIGN)
        {
  	ap -= p->mh_size;
! 	p = (struct mhead *) ap - 1;
        }
  
--- 531,539 ----
        return;
  
!     p = (struct mhead *) (ap - ((sizeof *p + 7) & ~7));
      if (p -> mh_alloc == ISMEMALIGN)
        {
  	ap -= p->mh_size;
! 	p = (struct mhead *) (ap - ((sizeof *p + 7) & ~7));
        }
  
***************
*** 580,584 ****
    if ((p = (struct mhead *) mem) == 0)
      return malloc (n);
!   p--;
    nunits = p -> mh_index;
    ASSERT (p -> mh_alloc == ISALLOC);
--- 580,584 ----
    if ((p = (struct mhead *) mem) == 0)
      return malloc (n);
!   p -= (8 / sizeof (struct mhead));
    nunits = p -> mh_index;
    ASSERT (p -> mh_alloc == ISALLOC);
***************
*** 592,596 ****
  #else /* not rcheck */
    if (p -> mh_index >= 13)
!     tocopy = (1 << (p -> mh_index + 3)) - sizeof *p;
    else
      tocopy = p -> mh_size;
--- 592,596 ----
  #else /* not rcheck */
    if (p -> mh_index >= 13)
!     tocopy = (1 << (p -> mh_index + 3)) - ((sizeof *p + 7) & ~7);
    else
      tocopy = p -> mh_size;
diff -rc2N dist-18.52/src/s-hpux.h dist-18.53/src/s-hpux.h
*** dist-18.52/src/s-hpux.h	Wed Aug 10 00:24:48 1988
--- dist-18.53/src/s-hpux.h	Wed Dec 28 23:05:39 1988
***************
*** 244,245 ****
--- 244,248 ----
  { 0, 50, 75, 110, 135, 150, 200, 300, 600, 900, 1200,  \
    1800, 2400, 3600, 4800, 7200, 9600, 19200, 38400 }
+ 
+ /* This is needed for HPUX version 6.2; it may not be needed for 6.2.1.  */
+ #define SHORT_CAST_BUG
diff -rc2N dist-18.52/src/s-iris3-6.h dist-18.53/src/s-iris3-6.h
*** dist-18.52/src/s-iris3-6.h	Sat May 28 02:29:55 1988
--- dist-18.53/src/s-iris3-6.h	Wed Dec 28 23:46:29 1988
***************
*** 62,65 ****
--- 62,69 ----
  
  #define HAVE_TIMEVAL
+ 
+ /* `utime' system call doesn't understand timevals.  */
+ 
+ #define IRIS_UTIME
   
  /*
***************
*** 139,142 ****
--- 143,147 ----
  
  #define sigsetmask(mask)	/* Null expansion */
+ #define sigblock(x) x
  
  /* The IRIS defines SIGIO in signal.h, but doesn't implement it. */
diff -rc2N dist-18.52/src/search.c dist-18.53/src/search.c
*** dist-18.52/src/search.c	Fri Aug 19 11:30:24 1988
--- dist-18.53/src/search.c	Wed Dec 28 23:47:27 1988
***************
*** 1063,1071 ****
    if (l1 < FirstCharacter)
      l1 = FirstCharacter;
!   if (l1 >= NumCharacters)
!     l1 = NumCharacters;
    if (l2 < l1) l2 = l1;
!   if (l2 >= NumCharacters)
!     l2 = NumCharacters;
    move_gap (point);
    InsCStr (&CharAt (l1), l2 - l1);
--- 1063,1071 ----
    if (l1 < FirstCharacter)
      l1 = FirstCharacter;
!   if (l1 >= NumCharacters + 1)
!     l1 = NumCharacters + 1;
    if (l2 < l1) l2 = l1;
!   if (l2 >= NumCharacters + 1)
!     l2 = NumCharacters + 1;
    move_gap (point);
    InsCStr (&CharAt (l1), l2 - l1);
diff -rc2N dist-18.52/src/sunfns.c dist-18.53/src/sunfns.c
*** dist-18.52/src/sunfns.c	Sat May 21 13:28:18 1988
--- dist-18.53/src/sunfns.c	Fri Jan 13 01:21:48 1989
***************
*** 238,242 ****
      p = CursorData;
      i = 16;
!     while(--i >= 0)	*p++ = (*cp++ << 8) | (*cp++);
      CurrentCursor = NewCursor;
    }
--- 238,243 ----
      p = CursorData;
      i = 16;
!     while(--i >= 0)
!       *p++ = (cp[0] << 8) | cp[1], cp += 2;
      CurrentCursor = NewCursor;
    }
diff -rc2N dist-18.52/src/sysdep.c dist-18.53/src/sysdep.c
*** dist-18.52/src/sysdep.c	Sun Aug 21 16:02:21 1988
--- dist-18.53/src/sysdep.c	Thu Feb  9 06:49:17 1989
***************
*** 112,116 ****
  #define TIOCGETP TCGETA
  #undef TIOCSETN
! #define TIOCSETN TCSETA
  #undef TIOCSETP
  #define TIOCSETP TCSETAF
--- 112,116 ----
  #define TIOCGETP TCGETA
  #undef TIOCSETN
! #define TIOCSETN TCSETAW
  #undef TIOCSETP
  #define TIOCSETP TCSETAF
***************
*** 442,445 ****
--- 442,449 ----
    s.c_line = 0;
    s.c_iflag &= ~ASCEDIT;
+   /* Also, PTY overloads NUL and BREAK.
+      don't ignore break, but don't signal either, so it looks like NUL.  */
+   s.c_iflag &= ~IGNBRK;
+   s.c_iflag &= ~BRKINT;
  /* QUIT and INTR work better as signals, so disable character forms */
    s.c_cc[VQUIT] = 0377;
***************
*** 773,776 ****
--- 777,786 ----
        sg.c_line = 0;
        sg.c_iflag &= ~ASCEDIT;
+       /* Also, PTY overloads NUL and BREAK.
+ 	 don't ignore break, but don't signal either, so it looks like NUL.
+ 	 This really serves a purpose only if running in an XTERM window
+ 	 or via TELNET or the like, but does no harm elsewhere.  */
+       s.c_iflag &= ~IGNBRK;
+       s.c_iflag &= ~BRKINT;
  #endif
  #else /* if not HAVE_TERMIO */
***************
*** 796,804 ****
  #endif /* not VMS */
  
  #ifdef TCXONC
-       /* This code added to insure that if flow-control is not to be used we have 
- 	 an unlocked screen at the start. */
        if (!flow_control) ioctl (0, TCXONC, 1);
  #endif
  
  #ifdef IBMRTAIX
--- 806,817 ----
  #endif /* not VMS */
  
+       /* This code added to insure that, if flow-control is not to be used,
+ 	 we have an unlocked screen at the start. */
  #ifdef TCXONC
        if (!flow_control) ioctl (0, TCXONC, 1);
  #endif
+ #ifdef TIOCSTART
+       if (!flow_control) ioctl (0, TIOCSTART, 0);
+ #endif
  
  #ifdef IBMRTAIX
***************
*** 2084,2088 ****
  #endif
  
! #ifdef IRIS
  
  /* The IRIS (3.5) has timevals, but uses sys V utime, and doesn't have the
--- 2097,2101 ----
  #endif
  
! #ifdef IRIS_UTIME
  
  /* The IRIS (3.5) has timevals, but uses sys V utime, and doesn't have the
***************
*** 2104,2108 ****
    utime (name, &utb);
  }
! #endif /* IRIS */
  
  
--- 2117,2121 ----
    utime (name, &utb);
  }
! #endif /* IRIS_UTIME */
  
  
diff -rc2N dist-18.52/src/unexmips.c dist-18.53/src/unexmips.c
*** dist-18.52/src/unexmips.c	Sun Apr 24 18:51:32 1988
--- dist-18.53/src/unexmips.c	Thu Jan 12 19:14:05 1989
***************
*** 142,147 ****
  	  fatal_unexec(_error_message, _error_arg);
  
- #define private static
- 
  extern int errno;
  extern int sys_nerr;
--- 142,145 ----
***************
*** 149,161 ****
  #define EEOF -1
  
  struct headers {
      struct filehdr fhdr;
      struct aouthdr aout;
!     struct scnhdr text_section;
!     struct scnhdr rdata_section;
!     struct scnhdr data_section;
!     struct scnhdr sdata_section;
!     struct scnhdr sbss_section;
!     struct scnhdr bss_section;
  };
  
--- 147,165 ----
  #define EEOF -1
  
+ static struct scnhdr *text_section;
+ static struct scnhdr *init_section;
+ static struct scnhdr *finit_section;
+ static struct scnhdr *rdata_section;
+ static struct scnhdr *data_section;
+ static struct scnhdr *lit8_section;
+ static struct scnhdr *lit4_section;
+ static struct scnhdr *sdata_section;
+ static struct scnhdr *sbss_section;
+ static struct scnhdr *bss_section;
+ 
  struct headers {
      struct filehdr fhdr;
      struct aouthdr aout;
!     struct scnhdr section[10];
  };
  
***************
*** 175,178 ****
--- 179,184 ----
    int nread;
    struct headers hdr;
+   int i;
+   int vaddr, scnptr;
  #define BUFSIZE 8192
    char buffer[BUFSIZE];
***************
*** 179,233 ****
  
    old = open (a_name, O_RDONLY, 0);
!   if (old < 0) fatal_unexec("openning %s", a_name);
  
    new = creat (new_name, 0666);
!   if (new < 0) fatal_unexec("creating %s", new_name);
  
    hdr = *((struct headers *)TEXT_START);
    if (hdr.fhdr.f_magic != MIPSELMAGIC
!       && hdr.fhdr.f_magic != MIPSEBMAGIC) {
        fprintf(stderr, "unexec: input file magic number is %x, not %x or %x.\n",
  	      hdr.fhdr.f_magic, MIPSELMAGIC, MIPSEBMAGIC);
        exit(1);
!   }
!   if (hdr.fhdr.f_opthdr != sizeof(hdr.aout)) {
        fprintf(stderr, "unexec: input a.out header is %d bytes, not %d.\n",
  	      hdr.fhdr.f_opthdr, sizeof(hdr.aout));
        exit(1);
!   }
! #if 0
!   if (hdr.aout.magic != ZMAGIC
!       && hdr.aout.magic != NMAGIC
!       && hdr.aout.magic != OMAGIC) {
!       fprintf(stderr, "unexec: input file a.out magic number is %o, not %o, %o, or %o.\n",
! 	      hdr.aout.magic, ZMAGIC, NMAGIC, OMAGIC);
!       exit(1);
!   }
! #else
!   if (hdr.aout.magic != ZMAGIC) {
        fprintf(stderr, "unexec: input file a.out magic number is %o, not %o.\n",
  	      hdr.aout.magic, ZMAGIC);
        exit(1);
!   }
! #endif
!   if (hdr.fhdr.f_nscns != 6) {
!       fprintf(stderr, "unexec: %d sections instead of 6.\n", hdr.fhdr.f_nscns);
!   }
! #define CHECK_SCNHDR(field, name, flags) \
!   if (strcmp(hdr.field.s_name, name) != 0) { \
!       fprintf(stderr, "unexec: %s section where %s expected.\n", \
! 	      hdr.field.s_name, name); \
!       exit(1); \
!   } \
!   else if (hdr.field.s_flags != flags) { \
        fprintf(stderr, "unexec: %x flags where %x expected in %s section.\n", \
! 	      hdr.field.s_flags, flags, name); \
!   }
    CHECK_SCNHDR(text_section,  _TEXT,  STYP_TEXT);
    CHECK_SCNHDR(rdata_section, _RDATA, STYP_RDATA);
    CHECK_SCNHDR(data_section,  _DATA,  STYP_DATA);
    CHECK_SCNHDR(sdata_section, _SDATA, STYP_SDATA);
    CHECK_SCNHDR(sbss_section,  _SBSS,  STYP_SBSS);
    CHECK_SCNHDR(bss_section,   _BSS,   STYP_BSS);
  
    pagesize = getpagesize();
--- 185,242 ----
  
    old = open (a_name, O_RDONLY, 0);
!   if (old < 0) fatal_unexec ("opening %s", a_name);
  
    new = creat (new_name, 0666);
!   if (new < 0) fatal_unexec ("creating %s", new_name);
  
    hdr = *((struct headers *)TEXT_START);
    if (hdr.fhdr.f_magic != MIPSELMAGIC
!       && hdr.fhdr.f_magic != MIPSEBMAGIC)
!     {
        fprintf(stderr, "unexec: input file magic number is %x, not %x or %x.\n",
  	      hdr.fhdr.f_magic, MIPSELMAGIC, MIPSEBMAGIC);
        exit(1);
!     }
!   if (hdr.fhdr.f_opthdr != sizeof(hdr.aout))
!     {
        fprintf(stderr, "unexec: input a.out header is %d bytes, not %d.\n",
  	      hdr.fhdr.f_opthdr, sizeof(hdr.aout));
        exit(1);
!     }
!   if (hdr.aout.magic != ZMAGIC)
!     {
        fprintf(stderr, "unexec: input file a.out magic number is %o, not %o.\n",
  	      hdr.aout.magic, ZMAGIC);
        exit(1);
!     }
! 
! #define CHECK_SCNHDR(ptr, name, flags) \
!   if (strcmp(hdr.section[i].s_name, name) == 0) { \
!     if (hdr.section[i].s_flags != flags) { \
        fprintf(stderr, "unexec: %x flags where %x expected in %s section.\n", \
! 	      hdr.section[i].s_flags, flags, name); \
!     } \
!     ptr = hdr.section + i; \
!     i += 1; \
!   } \
!   else { \
!     ptr = NULL; \
!     }
! 
!   i = 0;
    CHECK_SCNHDR(text_section,  _TEXT,  STYP_TEXT);
+   CHECK_SCNHDR(init_section,  _INIT,  STYP_INIT);
    CHECK_SCNHDR(rdata_section, _RDATA, STYP_RDATA);
    CHECK_SCNHDR(data_section,  _DATA,  STYP_DATA);
+ #ifdef _LIT8
+   CHECK_SCNHDR(lit8_section,  _LIT8,  STYP_LIT8);
+   CHECK_SCNHDR(lit4_section,  _LIT4,  STYP_LIT4);
+ #endif /* _LIT8 */
    CHECK_SCNHDR(sdata_section, _SDATA, STYP_SDATA);
    CHECK_SCNHDR(sbss_section,  _SBSS,  STYP_SBSS);
    CHECK_SCNHDR(bss_section,   _BSS,   STYP_BSS);
+   if (i != hdr.fhdr.f_nscns)
+     fprintf(stderr, "unexec: %d sections found instead of %d.\n",
+ 	    i, hdr.fhdr.f_nscns);
  
    pagesize = getpagesize();
***************
*** 235,270 ****
    hdr.aout.dsize = brk - DATA_START;
    hdr.aout.bsize = 0;
!   if (entry_address == 0) {
!     extern DEFAULT_ENTRY_ADDRESS();
!     hdr.aout.entry = (unsigned)DEFAULT_ENTRY_ADDRESS;
!   }
!   else {
      hdr.aout.entry = entry_address;
!   }
    hdr.aout.bss_start = hdr.aout.data_start + hdr.aout.dsize;
!   hdr.rdata_section.s_size = data_start - DATA_START;
!   hdr.data_section.s_vaddr = data_start;
!   hdr.data_section.s_paddr = data_start;
!   hdr.data_section.s_size = brk - DATA_START;
!   hdr.data_section.s_scnptr = hdr.rdata_section.s_scnptr
! 				+ hdr.rdata_section.s_size;
!   hdr.sdata_section.s_vaddr = hdr.data_section.s_vaddr
! 				+ hdr.data_section.s_size;
!   hdr.sdata_section.s_paddr = hdr.sdata_section.s_paddr;
!   hdr.sdata_section.s_size = 0;
!   hdr.sdata_section.s_scnptr = hdr.data_section.s_scnptr
! 				+ hdr.data_section.s_size;
!   hdr.sbss_section.s_vaddr = hdr.sdata_section.s_vaddr
! 				+ hdr.sdata_section.s_size;
!   hdr.sbss_section.s_paddr = hdr.sbss_section.s_vaddr;
!   hdr.sbss_section.s_size = 0;
!   hdr.sbss_section.s_scnptr = hdr.sdata_section.s_scnptr
! 				+ hdr.sdata_section.s_size;
!   hdr.bss_section.s_vaddr = hdr.sbss_section.s_vaddr
! 				+ hdr.sbss_section.s_size;
!   hdr.bss_section.s_paddr = hdr.bss_section.s_vaddr;
!   hdr.bss_section.s_size = 0;
!   hdr.bss_section.s_scnptr = hdr.sbss_section.s_scnptr
! 				+ hdr.sbss_section.s_size;
  
    WRITE(new, TEXT_START, hdr.aout.tsize,
--- 244,298 ----
    hdr.aout.dsize = brk - DATA_START;
    hdr.aout.bsize = 0;
!   if (entry_address == 0)
!     {
!       extern DEFAULT_ENTRY_ADDRESS();
!       hdr.aout.entry = (unsigned)DEFAULT_ENTRY_ADDRESS;
!     }
!   else
      hdr.aout.entry = entry_address;
! 
    hdr.aout.bss_start = hdr.aout.data_start + hdr.aout.dsize;
!   rdata_section->s_size = data_start - DATA_START;
!   data_section->s_vaddr = data_start;
!   data_section->s_paddr = data_start;
!   data_section->s_size = brk - DATA_START;
!   data_section->s_scnptr = rdata_section->s_scnptr + rdata_section->s_size;
!   vaddr = data_section->s_vaddr + data_section->s_size;
!   scnptr = data_section->s_scnptr + data_section->s_size;
!   if (lit8_section != NULL)
!     {
!       lit8_section->s_vaddr = vaddr;
!       lit8_section->s_paddr = vaddr;
!       lit8_section->s_size = 0;
!       lit8_section->s_scnptr = scnptr;
!     }
!   if (lit4_section != NULL)
!     {
!       lit4_section->s_vaddr = vaddr;
!       lit4_section->s_paddr = vaddr;
!       lit4_section->s_size = 0;
!       lit4_section->s_scnptr = scnptr;
!     }
!   if (sdata_section != NULL)
!     {
!       sdata_section->s_vaddr = vaddr;
!       sdata_section->s_paddr = vaddr;
!       sdata_section->s_size = 0;
!       sdata_section->s_scnptr = scnptr;
!     }
!   if (sbss_section != NULL)
!     {
!       sbss_section->s_vaddr = vaddr;
!       sbss_section->s_paddr = vaddr;
!       sbss_section->s_size = 0;
!       sbss_section->s_scnptr = scnptr;
!     }
!   if (bss_section != NULL)
!     {
!       bss_section->s_vaddr = vaddr;
!       bss_section->s_paddr = vaddr;
!       bss_section->s_size = 0;
!       bss_section->s_scnptr = scnptr;
!     }
  
    WRITE(new, TEXT_START, hdr.aout.tsize,
***************
*** 293,297 ****
    symhdr->cbExtOffset += symrel;
  #undef symhdr
!   do {
        if (write(new, buffer, nread) != nread)
  	fatal_unexec("writing symbols to %s", new_name);
--- 321,326 ----
    symhdr->cbExtOffset += symrel;
  #undef symhdr
!   do
!     {
        if (write(new, buffer, nread) != nread)
  	fatal_unexec("writing symbols to %s", new_name);
***************
*** 299,303 ****
        if (nread < 0) fatal_unexec("reading symbols from %s", a_name);
  #undef BUFSIZE
!   } while (nread != 0);
  
    SEEK(new, 0, "seeking to start of header in %s", new_name);
--- 328,332 ----
        if (nread < 0) fatal_unexec("reading symbols from %s", a_name);
  #undef BUFSIZE
!     } while (nread != 0);
  
    SEEK(new, 0, "seeking to start of header in %s", new_name);
***************
*** 315,318 ****
--- 344,348 ----
   * After succesfully building the new a.out, mark it executable
   */
+ 
  static
  mark_x (name)
***************
*** 331,335 ****
  static void
  fatal_unexec (s, va_alist)
!     va_dcl
  {
    va_list ap;
--- 361,365 ----
  static void
  fatal_unexec (s, va_alist)
!      va_dcl
  {
    va_list ap;
diff -rc2N dist-18.52/src/x11fns.c dist-18.53/src/x11fns.c
*** dist-18.52/src/x11fns.c	Sat Aug 27 14:48:40 1988
--- dist-18.53/src/x11fns.c	Fri Feb 24 06:36:01 1989
***************
*** 59,63 ****
  Lisp_Object Vx_mouse_item;
  
! extern struct Lisp_Vector *MouseMap;
  
  extern XEvent *XXm_queue[XMOUSEBUFSIZE];
--- 59,63 ----
  Lisp_Object Vx_mouse_item;
  
! extern Lisp_Object MouseMap;
  
  extern XEvent *XXm_queue[XMOUSEBUFSIZE];
diff -rc2N dist-18.52/src/x11term.c dist-18.53/src/x11term.c
*** dist-18.52/src/x11term.c	Wed Aug 31 16:26:45 1988
--- dist-18.53/src/x11term.c	Mon Feb  6 22:48:41 1989
***************
*** 85,88 ****
--- 85,89 ----
  #endif
  #include <sys/stat.h>
+ #include <sys/time.h>
  
  #include "dispextern.h"
***************
*** 1478,1481 ****
--- 1479,1499 ----
  }
  \f


+ x_error_handler (disp, event)
+      Display *disp;
+      XErrorEvent *event;
+ {
+   char msg[200];
+   XGetErrorText (disp, event->error_code, msg, 200);
+   fprintf (stderr, "Fatal X-windows error: %s\n", msg);
+   Fkill_emacs (make_number (70));
+ }
+ 
+ x_io_error_handler ()
+ {
+   Fdo_auto_save ();
+   perror ("Fatal X-windows I/O error");
+   Fkill_emacs (make_number (70));
+ }
+ 
  x_term_init ()
  {
***************
*** 1510,1513 ****
--- 1528,1535 ----
  	XXColorMap = DefaultColormap (XXdisplay, XXscreen);
  
+ 	XSetErrorHandler (x_error_handler);
+ 	XSetIOErrorHandler (x_io_error_handler);
+ 	signal (SIGPIPE, x_io_error_handler);
+ 
  	WindowMapped = 0;
  	baud_rate = 9600;
***************
*** 2172,2176 ****
  
  
!     change_screen_size(height, width);
  
      if (do_resize)
--- 2194,2198 ----
  
  
!     change_screen_size (height, width, 0 - (do_resize == False));
  
      if (do_resize)
diff -rc2N dist-18.52/src/xdisp.c dist-18.53/src/xdisp.c
*** dist-18.52/src/xdisp.c	Mon Aug 15 23:04:33 1988
--- dist-18.53/src/xdisp.c	Wed Dec 28 22:30:15 1988
***************
*** 199,206 ****
  #endif /* NO_ARG_ARRAY */
        minibuf_message = message_buf;
!       hold_window_change ();
!       display_minibuf_message ();
!       update_screen (1, 1);
!       unhold_window_change ();
      }
  }
--- 199,208 ----
  #endif /* NO_ARG_ARRAY */
        minibuf_message = message_buf;
!       do {
! 	hold_window_change ();
! 	display_minibuf_message ();
! 	update_screen (1, 1);
! 	unhold_window_change ();
!       } while (screen_garbaged);
      }
  }
***************
*** 220,227 ****
      {
        minibuf_message = m;
!       hold_window_change ();
!       display_minibuf_message ();
!       update_screen (1, 1);
!       unhold_window_change ();
      }
  }
--- 222,231 ----
      {
        minibuf_message = m;
!       do {
! 	hold_window_change ();
! 	display_minibuf_message ();
! 	update_screen (1, 1);
! 	unhold_window_change ();
!       } while (screen_garbaged);
      }
  }
***************
*** 474,477 ****
--- 478,484 ----
  
    unhold_window_change ();
+ 
+   if (screen_garbaged)
+     DoDsp (SaveMiniBuf);
  }
  
diff -rc2N dist-18.52/src/xterm.c dist-18.53/src/xterm.c
*** dist-18.52/src/xterm.c	Wed Aug 24 17:19:48 1988
--- dist-18.53/src/xterm.c	Wed Dec 28 23:09:23 1988
***************
*** 1131,1137 ****
  	  break;
  	case ButtonPressed:
- #ifndef HPUX
  	case ButtonReleased:
- #endif
  	  switch (spacecheck (Xxrepbuffer.mindex,
  			      Xxrepbuffer.rindex,
--- 1131,1135 ----
***************
*** 1847,1853 ****
  		 screen_width * fontinfo->width + 2 * XXInternalBorder);
    XSelectInput (XXwindow, KeyPressed | ExposeWindow | ButtonPressed
- #ifndef HPUX
  		| ButtonReleased
- #endif
  		| ExposeRegion | ExposeCopy);
    /*	XWarpMouse (XXwindow, pixelwidth >> 1, pixelheight >> 1);*/
--- 1845,1849 ----