is errno supposed to be positive or negative?
Sascha Hauer
s.hauer at pengutronix.de
Wed Jun 27 09:53:25 EDT 2012
On Wed, Jun 27, 2012 at 12:59:15PM +0200, Uwe Kleine-König wrote:
> On Wed, Jun 27, 2012 at 11:51:28AM +0200, Sascha Hauer wrote:
> > On Wed, Jun 27, 2012 at 11:35:51AM +0200, Uwe Kleine-König wrote:
> > > Hello,
> > >
> > > Well, ok, errno is supposed to be zero, but in the rare cases where it's
> > > not, what is intended?
> > >
> > > Assuming ESOMETHING is always positive, in userspace errno is
> > > positive, e.g. you test for errno == EBADF.
> > >
> > > In barebox however most assignments use
> > >
> > > errno = -ESOMETHING
> > >
> > > but there are also some tests and assignments without minus. barebox'
> > > perror expects a negative errno which is also different from POSIX'
> > > perror. strerror uses positive semantics in both barebox and POSIX.
> >
> > Your tree is not up to date.
> >
> > see:
> >
> > commit 6188685091c58c9772b990cf0ca6ac522f97a9d0
> > Author: Sascha Hauer <s.hauer at pengutronix.de>
> > Date: Sun May 13 12:43:58 2012 +0200
> >
> > Make errno a positive value
> >
> > Normally errno contains a positive error value. A certain unnamed developer
> > mixed this up while implementing U-Boot-v2. Also, normally errno is never
> > set to zero by any library function. This patch fixes this.
> >
> > Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> OK, you're right.
>
> There is just:
>
> $ git grep errno\ =\ -E origin/master
> origin/master:fs/ramfs.c: errno = -ENOENT;
Oops, this shouldn't be there at all. errno should be set in the
filesystem layer, not in the fs drivers.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list