greg@xios.XIOS.UUCP (Greg Franks) (06/30/87)
Here is a context diff of a minor irratant in the quick-exit function in
microEMACS 3.8i. Normally, if quick-exit fails (mainly because a buffer
does not have an associated file), microEMACS will print out an error
message and remain in the original buffer (with some peculiar side
effects if I recall). This change will cause microEMACS to switch to
the buffer that caused the fault.
*** /ss/greg/tmp/main.c Tue Jun 30 09:04:29 1987
--- main.c Tue Jun 30 09:05:38 1987
***************
*** 1082,1087
{
register BUFFER *bp; /* scanning pointer to buffers */
register int status;
bp = bheadp;
while (bp != NULL) {
--- 1082,1088 -----
{
register BUFFER *bp; /* scanning pointer to buffers */
register int status;
+ register BUFFER *old; /* original buffer */ /*rgf*/
old = curbp; /*rgf*/
bp = bheadp;
***************
*** 1083,1088
register BUFFER *bp; /* scanning pointer to buffers */
register int status;
bp = bheadp;
while (bp != NULL) {
if ((bp->b_flag&BFCHG) != 0 /* Changed. */
--- 1084,1090 -----
register int status;
register BUFFER *old; /* original buffer */ /*rgf*/
+ old = curbp; /*rgf*/
bp = bheadp;
while (bp != NULL) {
if ((bp->b_flag&BFCHG) != 0 /* Changed. */
***************
*** 1089,1095
&& (bp->b_flag&BFINVS) == 0) { /* Real. */
curbp = bp; /* make that buffer cur */
mlwrite("[Saving %s]\n",bp->b_fname);
! if ((status = filesave(f, n)) != TRUE)
return(status);
}
bp = bp->b_bufp; /* on to the next buffer */
--- 1091,1099 -----
&& (bp->b_flag&BFINVS) == 0) { /* Real. */
curbp = bp; /* make that buffer cur */
mlwrite("[Saving %s]\n",bp->b_fname);
! if ((status = filesave(f, n)) != TRUE) {
! curbp = old; /* Switch to bogus */ /*rgf*/
! swbuffer( bp ); /* buffer. */ /*rgf*/
return(status);
}
}
***************
*** 1091,1096
mlwrite("[Saving %s]\n",bp->b_fname);
if ((status = filesave(f, n)) != TRUE)
return(status);
}
bp = bp->b_bufp; /* on to the next buffer */
}
--- 1095,1101 -----
curbp = old; /* Switch to bogus */ /*rgf*/
swbuffer( bp ); /* buffer. */ /*rgf*/
return(status);
+ }
}
bp = bp->b_bufp; /* on to the next buffer */
}
--
Greg Franks (613) 725-5411 "Vermont ain't flat"
{net-land}!utzoo!dciem!nrcaer!xios!greg
(Other paths will undoubtably work too - your mileage will vary)