Ugg... ok, well nevermind then. I guess I'll just turn off Werror for that warning for now when I build the Xorg DDX ... but thanks for pointing that out. I hadn't noticed that discrepancy between SUSv4 and our scandir.
On Oct 16, 2011, at 4:40 AM, Mark Kettenis wrote: >> From: Jeremy Huddleston <[email protected]> >> Date: Sun, 16 Oct 2011 02:27:08 -0700 >> >> This allows scan.c to build with -Wincompatible-pointer-types >> >> Build regression introduced by: efa5269f23c2237eb5368bf5245ffbbf35714153 >> >> Signed-off-by: Jeremy Huddleston <[email protected]> > > Guess it would help if you provided a little bit more information > here. I'm guessing the problem is with scandir(3), which > traditionally had (and still has on various BSDs, including perhaps > Darwin) the following prototype: > > int > scandir(const char *dirname, struct dirent ***namelist, int > (*select)(struct dirent *), int (*compar)(const void *, const void *)); > > But over in System V land, at least on Solaris, the prototype is: > > int > scandir(const char *dirname, struct dirent *(*namelist[]), int > (*select)(const struct dirent *), int (*dcomp)(const struct dirent **, > const struct dirent **)); > > Which unfortunately is what ended up in POSIX :(. > > Linux, for a long time, had a hybrid: > > int > scandir(const char *dir, struct dirent ***namelist, int > (*selector)(const struct dirent *), int (*cmp)(const void *, > const void *)); > > But they've fixed that somewhere in 2009. > > So I guess that with your changes, things will break on Linux and Solaris. > > One could argue that this is a problem with -Wincompatible-pointer-types, > since in this context the const-restricted version of the "select" > function is perfectly safe even if the scandir(3) prototype doesn't > request it. > >> --- >> hw/xfree86/parser/scan.c | 2 +- 1 files changed, 1 insertions(+), 1 >> deletions(-) >> >> diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c >> index 1cff3bc..7ce8c6d 100644 >> --- a/hw/xfree86/parser/scan.c >> +++ b/hw/xfree86/parser/scan.c >> @@ -767,7 +767,7 @@ OpenConfigFile(const char *path, const char *cmdline, >> const char *projroot, >> * suffix. This filter is passed to scandir(3). >> */ >> static int >> -ConfigFilter(const struct dirent *de) >> +ConfigFilter(struct dirent *de) >> { >> const char *name = de->d_name; >> size_t len; >> -- >> 1.7.6.1 >> >> >> _______________________________________________ >> [email protected]: X.Org development >> Archives: http://lists.x.org/archives/xorg-devel >> Info: http://lists.x.org/mailman/listinfo/xorg-devel >> > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
