Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Aug 1996 09:31:02 +0200 (MET DST)
From:      J Wunsch <j@uriah.heep.sax.de>
To:        jkh@time.cdrom.com (Jordan K. Hubbard)
Cc:        joerg_wunsch@uriah.heep.sax.de, jkh@freefall.freebsd.org, CVS-committers@freefall.freebsd.org, cvs-all@freefall.freebsd.org, cvs-lib@freefall.freebsd.org
Subject:   Re: cvs commit: src/lib/libncurses lib_newterm.c
Message-ID:  <199608160731.JAA05555@uriah.heep.sax.de>
In-Reply-To: <26979.840178839@time.cdrom.com> from "Jordan K. Hubbard" at "Aug 16, 96 00:00:39 am"

next in thread | previous in thread | raw e-mail | index | archive | help
As Jordan K. Hubbard wrote:

> > I don't trust you. ;-)  signal()'s implementation is mainly based on
> 
> And this coming from the guy who got us to change the 3COM driver at
> the last minute in 2.1.5? :-)

Hey, that's unfair competition! :)

>   Try it for
> yourself if you don't believe me. :-)

No, i don't try it, but will quote you signal(3):

sigset_t _sigintr;		/* shared with siginterrupt */

sig_t
signal(s, a)
	int s;
	sig_t a;
{
	struct sigaction sa, osa;

	sa.sa_handler = a;
	sigemptyset(&sa.sa_mask);
	sa.sa_flags = 0;
	if (!sigismember(&_sigintr, s))
		sa.sa_flags |= SA_RESTART;
	if (sigaction(s, &sa, &osa) < 0)
		return (SIG_ERR);
	return (osa.sa_handler);
}

That's about all there is to be.  So now, it should be easy to compare
against libncurses to see what they've got wrong.  (_sigintr is
initially empty, it's only affected by siginterrupt(), so you should
perhaps always set SA_RESTART.)

-- 
cheers, J"org

joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199608160731.JAA05555>