Bug #393

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

Added by guy over 7 years ago. Updated over 7 years ago.

Status:ClosedStart date:
Priority:NormalDue date:
Assignee:TGEN% Done:

0%

Category:-
Target version:-

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 Magnifier (1.67 KB) TGEN, 12/05/2006 07:29 PM

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

History

#1 Updated by joerg over 7 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 over 7 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 over 7 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 over 7 years ago

See attached patch.

Cheers,
--
Thomas E. Spanjaard

#5 Updated by TGEN over 7 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 over 7 years ago

Patches have been committed.

Also available in: Atom PDF