On 16 Oct 1996, Neal Becker wrote:
> On hpux9 I see that getc() can return EINTR, so I guess you'd just
> wrap getc().
Yes, I've discovered that that is the case on Solaris 2 as well. Having
had some thought, I now realize what the logical problem is. Exim wants
restarting of the system call to be *dependent on the signal*, and I have
achieved it on other OS by explicitly setting up SIGUSR1 as restarting,
and leaving other signals (e.g. time out) to interrupt system calls. In
some cases there are explicit tests for EINTR after the calls.
So any wrapping is going to need a flag that is set in the SIGUSR1
handler function, and only restart the system call if the flag is set,
but not otherwise.
I'm beginning to wish I hadn't invented the SIGUSR1 facility. :-)
--
Philip Hazel University Computing Service,
ph10@??? New Museums Site, Cambridge CB2 3QG,
P.Hazel@??? England. Phone: +44 1223 334714