Project

General

Profile

Bug #393

confstr() should return 0, not -1, on errors

Added by guy about 10 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
Due date:
% Done:

0%


Description

According to

http://www.opengroup.org/onlinepubs/009695399/functions/confstr.html

confstr() should return 0, not (size_t)-1, on errors. The current
DragonFly BSD implementation returns -1 if sysctl() fails.

confstr.diff View (1.67 KB) TGEN, 12/05/2006 07:29 PM

getconf.diff View (476 Bytes) TGEN, 12/05/2006 10:28 PM

History

#1 Updated by joerg almost 10 years ago

It should be noted that this is consistent with other BSDs. I don't have
a reference to POSIX.2 to verify the original specification.

Joerg

#2 Updated by guy almost 10 years ago

Not with top-of-tree FreeBSD, it isn't - the top-of-tree FreeBSD code
returns 0:

http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/confstr.c?rev=1.9&content-type=text/x-cvsweb-markup

The documentation, until recently, said it returned -1, but I filed a
bug about that:

http://www.freebsd.org/cgi/query-pr.cgi?pr=docs/106234

and it was recently fixed:

http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/confstr.3.diff?r1=1.13&r2=1.14

As for NetBSD, I filed a bug on the code:

http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=35170

which is now closed - they changed the code and the man page.

Similar changes were made to OpenBSD in response to bug mail I sent:

http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/gen/confstr.c.diff?r1=1.7&r2=1.8

http://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/gen/confstr.3.diff?r1=1.14&r2=1.15

so DragonFly is now inconsistent with the top of the tree of FreeBSD,
NetBSD, and OpenBSD, and its code is inconsistent with the 5.x and 6.x
releases of FreeBSD.
> I don't have
> a reference to POSIX.2 to verify the original specification.
>
Perhaps POSIX.2 said it returned -1 (I think my POSIX.2 is at work), but
what counts now is the Single UNIX Specification, and, as per the URL I
think I sent in my mail:

http://www.opengroup.org/onlinepubs/009695399/functions/confstr.html

it says it returns 0 on errors.

#3 Updated by dillon almost 10 years ago

:Not with top-of-tree FreeBSD, it isn't - the top-of-tree FreeBSD code
:returns 0:
:
:http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/confstr.c?rev=1.9&content-type=text/x-cvsweb-markup
:...

Seems pretty conclusive to me. Would someone like to make this
adjustment in our tree?

-Matt

#4 Updated by TGEN almost 10 years ago

See attached patch.

Cheers,
--
Thomas E. Spanjaard

#5 Updated by TGEN almost 10 years ago

And the next attached patch fixes the only consumer of confstr(3) in our
tree (something the other BSDs don't appear to have done).

Cheers,
--
Thomas E. Spanjaard

#6 Updated by TGEN almost 10 years ago

Patches have been committed.

Also available in: Atom PDF