Article View: comp.arch
Article #11095Re: <None> (Should be Open Systems, bloody NEWS system...)
From: Josh Osborne
Date: Tue, 29 Dec 1992 15:34
Date: Tue, 29 Dec 1992 15:34
39 lines
2223 bytes
2223 bytes
In article <1992Dec29.012215.10632@ryn.mro4.dec.com> Peter.Mayne@cao.mts.dec.com writes:
[...]
>** I believe that you can also run into problems if you have
>** a signal handler that gets invoked, and resets errno in the period
>** between your successful system call and your test for success. It's
[...]
>Fixing this kind of problem would involve changing the model of "returning
>an error flag and a static errno". You could:
>
>- return an error status rather than an error flag
>- signal on errors
>- call a "callback" routine on errors
>- fill in a program-provided "status block" (non-static "errno" equivalent)
>
>Any one of these would probably be considered incompatible by a large number
>of UNIX style programmers (including DOS programmers and a lot of VMS
>programmers).
Yes, this is a big problem with the way Unix does error reporting. However
you can kludge around it like this:
sighandler(...)
{
int old_errno = errno;
/* do stuff */
errno = old_errno;
}
Note: you need to do this even if you exit()/abort() after any syscall failure.
I beleve that syscalls are allowed to alter errno even on a succesful return.
(also this doesn't magicly make all of libc rentrent, but it does mean that
if someone has a rentrent libc you can use it and not stomp errno...)
--
stripes@pix.com "Security for Unix is like
Josh_Osborne@Real_World,The Multitasking for MS-DOS"
"The dyslexic porgramer" - Kevin Lockwood
We all agree on the necessity of compromise. We just can't agree on
when it's necessary to compromise. - Larry Wall
Technical Details
Message-ID:
<C011xo.KDu@pix.com>Path:
arc1-ca.pugleaf.net!sparky!uunet!gatech!darwin.sura.net!bogus.sura.net!pandora.pix.com!stripesReferences:
<1992Dec23.212321.26522@ryn.mro4.dec.com> <id.SQ3W.IB6@ferranti.com> <1992Dec29.012215.10632@ryn.mro4.dec.com>Show Full Headers
Complete Article Headers
Newsgroups: comp.arch Path: arc1-ca.pugleaf.net!sparky!uunet!gatech!darwin.sura.net!bogus.sura.net!pandora.pix.com!stripes From: stripes@pix.com (Josh Osborne) Subject: Re: <None> (Should be Open Systems, bloody NEWS system...) Message-ID: <C011xo.KDu@pix.com> Sender: news@pix.com (The News Subsystem) Nntp-Posting-Host: pandora.pix.com Organization: Pix Technologies -- The company with no adult supervision References: <1992Dec23.212321.26522@ryn.mro4.dec.com> <id.SQ3W.IB6@ferranti.com> <1992Dec29.012215.10632@ryn.mro4.dec.com> Date: Tue, 29 Dec 1992 15:34:34 GMT Lines: 39