Date: Wed, 6 Jan 2010 18:55:47 -0500 From: Garrett Wollman <wollman@csail.mit.edu> To: Kostik Belousov <kostikbel@gmail.com> Cc: freebsd-standards@freebsd.org Subject: Re: standards/142255: scandir prototype in dirent.h isn't compliant with POSIX 2008 Message-ID: <19269.8963.733084.213387@khavrinen.csail.mit.edu> In-Reply-To: <201001031500.o03F0BO3042964@freefall.freebsd.org> References: <201001031500.o03F0BO3042964@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
<<On Sun, 3 Jan 2010 15:00:11 GMT, Kostik Belousov <kostikbel@gmail.com> said: > The change of the prototype shall also fix alphasort(3). And then, each > in-tree consumer should be updated. > scandir(3) is historical BSD interface, that only appeared in SUSv4. > It seems that Solaris and possibly glibc are conforming, so FreeBSD > should probably follow the route. 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. > @@ -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.) -GAWollman
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19269.8963.733084.213387>