Project

General

Profile

Actions

Bug #393

closed

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

Added by guy almost 18 years ago. Updated almost 18 years ago.

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

0%

Estimated time:

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.


Files

confstr.diff (1.67 KB) confstr.diff TGEN, 12/05/2006 07:29 PM
getconf.diff (476 Bytes) getconf.diff TGEN, 12/05/2006 10:28 PM
Actions #1

Updated by joerg almost 18 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

Actions #2

Updated by guy almost 18 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.

Actions #3

Updated by dillon almost 18 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
Actions #4

Updated by TGEN almost 18 years ago

See attached patch.

Cheers,
--
Thomas E. Spanjaard

Actions #5

Updated by TGEN almost 18 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

Actions #6

Updated by TGEN almost 18 years ago

Patches have been committed.

Actions

Also available in: Atom PDF