Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 8 Jan 2010 03:01:32 +1100 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Garrett Wollman <wollman@csail.mit.edu>
Cc:        freebsd-standards@freebsd.org
Subject:   Re: standards/142255: scandir prototype in dirent.h isn't compliant with POSIX 2008
Message-ID:  <20100108025519.U56232@delplex.bde.org>
In-Reply-To: <19269.8963.733084.213387@khavrinen.csail.mit.edu>
References:  <201001031500.o03F0BO3042964@freefall.freebsd.org> <19269.8963.733084.213387@khavrinen.csail.mit.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 6 Jan 2010, Garrett Wollman wrote:

> <<On Sun, 3 Jan 2010 15:00:11 GMT, Kostik Belousov <kostikbel@gmail.com> said:

> I believe someone at least complained about the Standard's broken
> prototypes, subsequent to the approval of the current standard,
> although I don't recall what the outcome was.

There's no trace of it in the opengroup man page for alphasort+scandir
most easily found by google (not clear how recent or authoritative this
is), and I couldn't find the complaint either.

>>  @@ -95,7 +95,7 @@ typedef	void *	DIR;
>>   __BEGIN_DECLS
>>   #if __BSD_VISIBLE
>>   DIR	*__opendir2(const char *, int);
>>  -int	 alphasort(const void *, const void *);
>>  +int	 alphasort(const struct dirent **, const struct dirent **);
>>   int	 getdents(int, char *, int);
>>   int	 getdirentries(int, char *, int, long *);
>>   #endif
>
> If we're going to break the historical 4.4BSD prototype to match the
> broken one in SUSv4, the declaration should be moved to an appropriate
> section of the header file.  (I haven't checked -- is this interface
> in the base standard or the XSI option?  If the latter we should just
> ignore it -- we should not be trying to implement XSI's mistakes.)

This is done.

What do you think about the single `const' in the broken prototypes?
For fts, you preserved the struct pointer part of the brokenness but
added a second `const'.  I suppose the Standard intentionally left out
the second `const' for the same reasons as for execve() and strtol().

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100108025519.U56232>