Blob Blame History Raw
--- cscope-15.5/src/command.c.orig	2004-11-26 21:21:46.523695928 -0500
+++ cscope-15.5/src/command.c	2004-11-26 21:30:35.322306320 -0500
@@ -80,6 +80,7 @@
 	FILE	*file;
 	struct	cmd	 *curritem, *item;	/* command history */
 	char	*s;
+	int lines, cols;
 
 	switch (commandc) {
 
@@ -405,6 +406,25 @@
 		entercurses();
 		break;
 
+	case KEY_RESIZE:
+		exitcurses();
+		initscr();
+		entercurses();
+#if TERMINFO
+		(void) keypad(stdscr, TRUE);	/* enable the keypad */
+#ifdef HAVE_FIXKEYPAD
+		fixkeypad();	/* fix for getch() intermittently returning garbage */
+#endif
+#endif
+#if UNIXPC
+		standend();	/* turn off reverse video */
+#endif
+		dispinit();	/* initialize display parameters */
+		setfield();	/* set the initial cursor position */
+		postmsg("");	/* clear any build progress message */
+		display();	/* display the version number and input fields */
+		break;
+
 	case ctrl('L'):	/* redraw screen */
 #if TERMINFO
 	case KEY_CLEAR:
--- cscope-15.5/src/input.c.orig	2001-07-18 09:49:01.000000000 -0400
+++ cscope-15.5/src/input.c	2004-11-26 21:18:09.526684488 -0500
@@ -43,6 +43,7 @@
 #endif
 #include <setjmp.h>	/* jmp_buf */
 #include <stdlib.h>
+#include <errno.h>
 #if HAVE_SYS_TERMIOS_H
 #include <sys/termios.h>
 #endif
@@ -91,8 +92,15 @@
 			c = prevchar;
 			prevchar = 0;
 		}
-		else
-			c = getch();	/* get a character from the terminal */
+		else {
+			c = -1;
+			while (c == -1) {
+				/* get a character from the terminal */
+				c = getch();
+				if((c == -1) && (errno != EINTR))
+					break;
+			}
+		}
 	}
 	else {	/* longjmp to here from signal handler */
 		c = KEY_BREAK;
--- cscope-15.5/src/main.c.orig	2003-08-14 10:36:18.000000000 -0400
+++ cscope-15.5/src/main.c	2004-11-26 21:27:12.506139064 -0500
@@ -50,6 +50,7 @@
 #endif
 #include <sys/types.h>	/* needed by stat.h */
 #include <sys/stat.h>	/* stat */
+#include <signal.h>
 
 /* defaults for unset environment variables */
 #define	EDITOR	"vi"
@@ -120,6 +121,11 @@
 void	fixkeypad();
 #endif
 
+void sigwinch_handler(int sig, siginfo_t *info, void *unused)
+{
+	ungetch(KEY_RESIZE);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -131,12 +137,19 @@
 	int	c, i;
 	pid_t	pid;
 	struct stat	stat_buf;
+	struct sigaction winch_action;
 	
 	yyin = stdin;
 	yyout = stdout;
 	/* save the command name for messages */
 	argv0 = argv[0];
 	
+	winch_action.sa_sigaction = sigwinch_handler;
+	sigemptyset(&winch_action.sa_mask);
+	winch_action.sa_flags = SA_SIGINFO;
+
+	sigaction(SIGWINCH,&winch_action,NULL);	
+
 	/* set the options */
 	while (--argc > 0 && (*++argv)[0] == '-') {
 		/* HBB 20030814: add GNU-style --help and --version