RFC: Change to sys_errlist

Matthew Emmerton matt at compar.com
Fri Jul 4 13:35:10 PDT 2003


----- Original Message ----- 
From: "John-Mark Gurney" <gurney_j at efn.org>
To: "Matthew Emmerton" <matt at gsicomp.on.ca>
Cc: <freebsd-hackers at freebsd.org>
Sent: Friday, July 04, 2003 2:50 PM
Subject: Re: RFC: Change to sys_errlist


> Matthew Emmerton wrote this message on Fri, Jul 04, 2003 at 14:03 -0400:
> > This is a RFC on a change to sys_errlist for errno = 0.
> >
> > On Linux, if perror() or strerror() is called with errno = 0, the
resulting
> > string is "Success".
> > On FreeBSD, the resulting string is "Unknown error: 0".
> >
> > I think that FreeBSD's output is unintentionally confusing, as errno = 0
> > implies success.
> >
> > The following patch will change the output to the Linux behaviour.
> >
> > I appreciate any comments.
>
> This is not good.  This will just encourge more programers to not properly
> test return values.  Read man 2 errno says: "Successful calls never set
> errno;", so this depends upon the programmer initalizing errno to 0
> before they make their call.  If they are already so poor as to be
> calling perror, etc with errno 0, then I doubt that we can depend upon
> them initalizing errno to 0 and giving consistant results.

You're right.  Furthermore, SUSv3 indicates that errno is a positive
integer; this presumably excludes 0 so our existing implementation is fine.

I guess I'll have to bring this up with the Linux folks and see if they'll
change.

--
Matt Emmerton



More information about the freebsd-hackers mailing list