[comp.os.minix] Patches for Elvis

rob@cs.vu.nl (Rob van Leeuwen) (02/13/90)

	Hi there,

below some patches are included for Elvis.  They have been approved of by
the author of Elvis, Steve Kirkendall.
They fix the signal handling of elvis for shell-escapes and the like (the
':sh', ':!' and '!' commands in particular).  This should stop Elvis from
crashing on repeated keyboard interrupts.  On Steve's request I have also
included a small patch to the infamous isascii() macro.

			Peter Valkenburg (valke@psy.vu.nl).
			(Please reply to me - not the person
			 whose account I used to post this)
			
(B.t.w., I posted a ps(1) for MINIX 1.5 a week ago.  Did anyone receive it
out there?  Please drop me a letter if you had any particular problems
installing it, or if you didn't see it but would like to have it.  I will
repost it if necessary).

-----cut here----- -----cut here----- -----cut here----- -----cut here-----
#!bin/sh
echo x - curses.c.cdiff
sed '/^X/s///' > curses.c.cdiff << '/'
X*** curses.c.old	Sat Feb  3 00:45:50 1990
X--- curses.c	Sat Feb  3 00:52:08 1990
X***************
X*** 25,30 ****
X--- 25,32 ----
X  extern char	*malloc();
X  extern char	*getenv();
X  
X+ extern trapint();
X+ 
X  /* variables, publicly available & used in the macros */
X  short	ospeed;		/* speed of the tty, eg B2400 */
X  WINDOW	*stdscr;	/* pointer into kbuf[] */
X***************
X*** 147,152 ****
X--- 149,156 ----
X  
X  	if (quietly) return;
X  
X+ 	signal(SIGINT, SIG_IGN);	/* don't want intrs now */
X+ 	
X  	/* Wait for a key from the user */
X  	for (dest = kbuf, src = tgoto(CM, 0, LINES - 1); *src; )
X  		*dest++ = *src++;
X***************
X*** 165,170 ****
X--- 169,176 ----
X  	{
X  		ungetkey(':');
X  	}
X+ 	
X+ 	signal(SIGINT, trapint);	/* resume intr catching */
X  }
X  
X  static lacking(s)
/
echo x - move1.c.cdiff
sed '/^X/s///' > move1.c.cdiff << '/'
X*** move1.c.old	Sun Feb 11 12:52:19 1990
X--- move1.c	Sun Feb 11 12:57:04 1990
X***************
X*** 16,22 ****
X  #include "vi.h"
X  
X  #ifndef isascii
X! # define isascii(c)	!((c) & 0x7f)
X  #endif
X  
X  MARK	moveup(m, cnt)
X--- 16,22 ----
X  #include "vi.h"
X  
X  #ifndef isascii
X! # define isascii(c)	!((c) & ~0x7f)
X  #endif
X  
X  MARK	moveup(m, cnt)
/
echo x - system.c.cdiff
sed '/^X/s///' > system.c.cdiff << '/'
X*** system.c.old	Fri Feb  2 23:37:24 1990
X--- system.c	Sat Feb  3 01:00:00 1990
X***************
X*** 22,27 ****
X--- 22,29 ----
X   */
X  
X  #include "vi.h"
X+ #include <signal.h>
X+ extern trapint();
X  extern char	**environ;
X  
X  
X***************
X*** 44,50 ****
X  		exit(1); /* if we get here, the exec failed */
X  
X  	  default:						/* parent */
X! 		wait(&status);
X  	}
X  
X  	return status;
X--- 46,54 ----
X  		exit(1); /* if we get here, the exec failed */
X  
X  	  default:						/* parent */
X! 	  	signal(SIGINT, SIG_IGN);	/* we don't want intr here */
X! 		wait(&status);
X! 	  	signal(SIGINT, trapint);	/* restore intr catching */
X  	}
X  
X  	return status;
X***************
X*** 95,100 ****
X--- 99,105 ----
X  		exit(1); /* if we get here, exec failed */
X  
X  	  default:						/* parent */
X+ 		signal(SIGINT, SIG_IGN);		/* reset after wait */
X  		/* close the "write" end of the pipe */	
X  		close(r0w1[1]);
X  
X***************
X*** 110,115 ****
X--- 115,121 ----
X  
X  	close(fd);
X  	wait(&status);
X+ 	signal(SIGINT, trapint);		/* restore intr catching */
X  	return status;
X  }
X  
/