svn commit: r303530 - head/lib/libc/gen

Andrey Chernov ache at freebsd.org
Sat Jul 30 04:31:06 UTC 2016


On 30.07.2016 7:15, Bruce Evans wrote:
> On Sat, 30 Jul 2016, Andrey A. Chernov wrote:
> 
>> Log:
>>  Reset errno for readdirfunc() before contunue.
> 
> In C99, library functions are not permitted to set errno to 0.  The glob()
> family shouldn't use a different (worse) convention, and POSIX doesn't
> seem to have any special wording to allow different behaviour.

This is historic practice for this function at least since GLOB_LIMIT
was introduced (in 2001) and common across NetBSD/OpenBSD. Existent
programs may relay on that to check that limit is reached and not
allocation error, so with few additional overwriting from my side I add
nothing new:

Revision 80525
Modified Sun Jul 29 00:52:37 2001 UTC (15 years ago) by mikeh

Rename the GLOB_MAXPATH flag of glob(3) to GLOB_LIMIT to be compatible
with NetBSD and OpenBSD. glob(3) will now return GLOB_NOSPACE with
errno set to 0 instead of GLOB_LIMIT when we match more than `gl_matchc'
patterns. GLOB_MAXPATH has been left as an alias of GLOB_LIMIT to
maintain backwards compatibility.

errno = 0 is documented. See glob(3), GLOB_NOSPACE section too.

The real problem is that glob(3) is very limited in error return codes,
so they reuse existent codes with errno hack.


More information about the svn-src-head mailing list