<<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