cscope/cscope-15.5-resize.patch
2004-11-29 12:34:50 +00:00

108 lines
2.6 KiB
Diff

--- 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,20 @@
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;
+ winch_action.sa_restorer = NULL;
+
+ sigaction(SIGWINCH,&winch_action,NULL);
+
/* set the options */
while (--argc > 0 && (*++argv)[0] == '-') {
/* HBB 20030814: add GNU-style --help and --version