[PATCH] xfree86: Fix prototype for ConfigFilter
Mark Kettenis
mark.kettenis at xs4all.nl
Sun Oct 16 04:40:16 PDT 2011
> From: Jeremy Huddleston <jeremyhu at apple.com>
> 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 <jeremyhu at apple.com>
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
>
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list