My interest here was mainly to convey the fact that errno is not
automatically reset to 0.  I agree that there should be no need to check it
if your system call succeeds.  No arguments there.  The original poster's
question, however, was inquiring about an automatic reset of errno.  In
general, I've always held it to be good policy to reset errno before I make
a call that can modify it if I plan to check it after the call.  Regardless
of OS - FreeBSD, HP-UX, AIX, what have you.

pete

> -----Original Message-----
> From: Chuck Robey [mailto:[EMAIL PROTECTED]]
> Sent: Saturday, June 24, 2000 10:28 PM
> To: Bohne, Peter
> Cc: 'FengYue'; '[EMAIL PROTECTED]'; [EMAIL PROTECTED]
> Subject: RE: libc_r/_read(), should the errno be reset to 0?
> 
> 
> On Fri, 23 Jun 2000, Bohne, Peter wrote:
> 
> > True enough.  That's the best advice.  However, your 
> original post indicated
> > an expectation on your part that errno would be somehow 
> automatically reset
> > to 0 before a system call, which is definitely *not* the 
> case.  You have to
> > clear it - the kernel does not do it for you.
> 
> Why would you bother to clear it?  You don't check errno to determine
> fail/success, you check the function return.  If it returns fail, then
> errno is going to be correct whether or not you bothered to 
> reset it or
> not.  Setting it to zero might give you a warm fuzzy feeling, but if
> you're correctly detected errors, it's not going to change anything.
> 
> If anyone is detecting the value of errno as an indication of 
> pass/fail,
> they're going to be disappointed.
> 
> > 
> > pete
> > 
> > > -----Original Message-----
> > > From: FengYue [mailto:[EMAIL PROTECTED]]
> > > Sent: Friday, June 23, 2000 11:08 AM
> > > To: Bohne, Peter
> > > Cc: '[EMAIL PROTECTED]'; [EMAIL PROTECTED]
> > > Subject: RE: libc_r/_read(), should the errno be reset to 0?
> > > 
> > > 
> > > 
> > > Wait, that's not going to do anything, the errno is set inside the
> > > _thread_sys_read().  But I agree with Andrew, why bother to check
> > > errno if read() returns no error.
> > > 
> > > On Fri, 23 Jun 2000, Bohne, Peter wrote:
> > > 
> > > > This means that *you* should set errno to 0 just before you 
> > > do the read
> > > > call.  At this point, you no longer care what it had 
> been before.
> > > > --
> > > > pete
> > > > 
> > > > ====== pbohne at hboc dot com
> > > > Peter Bohne -- McKessonHBOC -- Louisville, CO
> > > > Work: 303-926-2218 -- Cell: 303-817-8312 -- Home Ofc: 
> 970-586-9031
> > > > ====== "Very funny, Scottie.  Now beam down my clothes!"
> > > > 
> > > > 
> > > > 
> > > > > -----Original Message-----
> > > > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> > > > > Sent: Friday, June 23, 2000 3:02 AM
> > > > > To: FengYue
> > > > > Cc: [EMAIL PROTECTED]
> > > > > Subject: Re: libc_r/_read(), should the errno be reset to 0?
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > > On Fri, 23 Jun 2000, FengYue wrote:
> > > > > 
> > > > > > My question is, shouldn't it be reset to zero?
> > > > > 
> > > > > From intro(2):
> > > > > 
> > > > > Successful calls never set errno; once set, it remains until 
> > > > > another error
> > > > > occurs.  It should only be examined after an error.
> > > > > 
> > > > > Andrew
> > > > > 
> > > > > 
> > > > > 
> > > > > To Unsubscribe: send mail to [EMAIL PROTECTED]
> > > > > with "unsubscribe freebsd-hackers" in the body of the message
> > > > > 
> > > 
> > > 
> > 
> > 
> > 
> > To Unsubscribe: send mail to [EMAIL PROTECTED]
> > with "unsubscribe freebsd-hackers" in the body of the message
> > 
> 
> --------------------------------------------------------------
> --------------
> Chuck Robey            | Interests include C & Java 
> programming, FreeBSD,
> [EMAIL PROTECTED]  | electronics, communications, and 
> signal processing.
> 
> New Year's Resolution:  I will not sphroxify gullible people 
> into looking up
> fictitious words in the dictionary.
> --------------------------------------------------------------
> --------------
> 
> 



To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to