^Z can't suspend less in the tty mode

Fifer, Eric EFifer@sanwaint.com
Tue May 9 02:42:00 GMT 2000


>This is a long standing problem. ^Z can't suspend the `less'
>command in the tty mode.

This has been annoying me too ...

What is happening is that when SIGTSTP is caught the signal
handler does a longjmp().  And, when the thread restarts at the
setjmp() the signal mask is not restored.  This is a patch against
less-354 (from http://home.flash.net/~marknu/less/ ) which fixes
the problem:

--- os.c-	Mon Mar 06 11:58:01 2000
+++ os.c	Mon Mar 06 12:21:46 2000
@@ -99,6 +99,7 @@ iread(fd, buf, len)
 		 * We jumped here from intread.
 		 */
 		reading = 0;
+		{ sigset_t mask = 0; sigprocmask(SIG_SETMASK, &mask, NULL);
}
 #if HAVE_SIGSETMASK
 		sigsetmask(0);
 #else

I'll send a more complete patch to the author ...

Eric Fifer


More information about the Cygwin-developers mailing list