From e0c897d03d05e34f8e84a6b34a74bfd798591864 Mon Sep 17 00:00:00 2001 From: Sam Leffler Date: Sun, 4 Dec 1988 00:24:55 -0800 Subject: [PATCH] purge pending output when fielding SIGINT (signal handling still is not right -- need to watch out for partial writes?) SCCS-vsn: usr.bin/more/output.c 5.7 SCCS-vsn: usr.bin/more/signal.c 5.6 --- usr/src/usr.bin/more/output.c | 11 ++++++++++- usr/src/usr.bin/more/signal.c | 12 ++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/usr/src/usr.bin/more/output.c b/usr/src/usr.bin/more/output.c index 518816d7ce..eb45ebf5b3 100644 --- a/usr/src/usr.bin/more/output.c +++ b/usr/src/usr.bin/more/output.c @@ -18,7 +18,7 @@ */ #ifndef lint -static char sccsid[] = "@(#)output.c 5.6 (Berkeley) %G%"; +static char sccsid[] = "@(#)output.c 5.7 (Berkeley) %G%"; #endif /* not lint */ /* @@ -132,6 +132,15 @@ flush() ob = obuf; } +/* + * Purge any pending output. + */ +purge() +{ + + ob = obuf; +} + /* * Output a character. */ diff --git a/usr/src/usr.bin/more/signal.c b/usr/src/usr.bin/more/signal.c index e742748a47..2cd56bfd29 100644 --- a/usr/src/usr.bin/more/signal.c +++ b/usr/src/usr.bin/more/signal.c @@ -18,7 +18,7 @@ */ #ifndef lint -static char sccsid[] = "@(#)signal.c 5.5 (Berkeley) %G%"; +static char sccsid[] = "@(#)signal.c 5.6 (Berkeley) %G%"; #endif /* not lint */ /* @@ -93,6 +93,14 @@ winch() #endif #endif +static int +purgeandquit() +{ + + purge(); /* purge buffered output */ + quit(); +} + /* * Set up the signal handlers. */ @@ -106,7 +114,7 @@ init_signals(on) /* * Set signal handlers. */ - (void)signal(SIGINT, quit); + (void)signal(SIGINT, purgeandquit); #ifdef SIGTSTP (void)signal(SIGTSTP, stop); #endif -- 2.20.1