is errno supposed to be positive or negative?

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Wed Jun 27 06:59:15 EDT 2012


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;

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



More information about the barebox mailing list