diff -ur -x Makefile.in -x Makefile.am -x config.sub -x config.guess -x config.h.in -x configure -x aclocal.m4 -x debian/ -x ltmain.sh -x fakechroot.1 -x changelog -x control -x rules fakechroot-2.9.orig2/configure.ac fakechroot-2.9/configure.ac --- fakechroot-2.9.orig2/configure.ac 2009-03-19 17:06:47.000000000 +0200 +++ fakechroot-2.9/configure.ac 2010-01-07 22:54:45.000000000 +0200 @@ -177,6 +177,7 @@ AC_FUNC_READLINK_ARGTYPES AC_FUNC_SCANDIR_ARGTYPES +AC_FUNC_SCANDIR64_ARGTYPES AC_CONFIG_FILES([ \ Makefile \ diff -ur -x Makefile.in -x Makefile.am -x config.sub -x config.guess -x config.h.in -x configure -x aclocal.m4 -x debian/ -x ltmain.sh -x fakechroot.1 -x changelog -x control -x rules fakechroot-2.9.orig2/m4/scandir_argtypes.m4 fakechroot-2.9/m4/scandir_argtypes.m4 --- fakechroot-2.9.orig2/m4/scandir_argtypes.m4 2009-03-19 16:43:19.000000000 +0200 +++ fakechroot-2.9/m4/scandir_argtypes.m4 2010-01-07 23:05:13.000000000 +0200 @@ -12,7 +12,7 @@ for ac_arg1 in 'const char *dir'; do for ac_arg2 in 'struct dirent ***namelist'; do for ac_arg3 in 'int(*filter)(const struct dirent *)' 'int(*filter)(struct dirent *)'; do - for ac_arg4 in 'int(*compar)(const void *,const void *)'; do + for ac_arg4 in 'int(*compar)(const void *,const void *)' 'int(*compar)(const struct dirent **,const struct dirent **)'; do AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [AC_INCLUDES_DEFAULT @@ -46,3 +46,51 @@ [Define to the type of arg 4 for `scandir'.]) rm -f conftest* ]) +dnl AC_FUNC_SCANDIR64_ARGTYPES +dnl ------------------------- +dnl Determine the correct type to be passed to each of the `scandir64' +dnl function's arguments, and define those types in `SCANDIR64_TYPE_ARG1', +dnl `SCANDIR64_TYPE_ARG2', `SCANDIR64_TYPE_ARG3' and `SCANDIR64_TYPE_ARG4'. +AN_FUNCTION([scandir64], [AC_FUNC_SCANDIR64_ARGTYPES]) +AC_DEFUN([AC_FUNC_SCANDIR64_ARGTYPES], +[AC_CHECK_HEADERS(dirent.h) +AC_CACHE_CHECK([types of arguments for scandir64], +[ac_cv_func_scandir64_args], +[for ac_return in 'int'; do + for ac_arg1 in 'const char *dir'; do + for ac_arg2 in 'struct dirent64 ***namelist'; do + for ac_arg3 in 'int(*filter)(const struct dirent64 *)'; do + for ac_arg4 in 'int(*compar)(const void *,const void *)' 'int(*compar)(const struct dirent64 **,const struct dirent64 **)'; do + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( +[AC_INCLUDES_DEFAULT +#ifdef HAVE_UNISTD_H +#include +#endif +], + [extern $ac_return scandir64 ($ac_arg1, $ac_arg2, $ac_arg3, $ac_arg4);])], + [ac_cv_func_scandir64_args="$ac_return;$ac_arg1;$ac_arg2;$ac_arg3;$ac_arg4"; break 5]) + done + done + done + done +done +# Provide a safe default value. +: ${ac_cv_func_scandir64_args='(default) int;const char *dir;struct dirent64 ***namelist;int(*filter)(const struct dirent64 *);int(*compar)(const void *,const void *)'} +]) +ac_save_IFS=$IFS; IFS=';' +set dummy `echo "$ac_cv_func_scandir64_args" | sed 's/^(default) //' | sed 's/\*/\*/g'` +IFS=$ac_save_IFS +shift +AC_DEFINE_UNQUOTED(SCANDIR64_TYPE_RETURN, $[1], + [Define to the type of return value for `scandir64'.]) +AC_DEFINE_UNQUOTED(SCANDIR64_TYPE_ARG1, $[2], + [Define to the type of arg 1 for `scandir64'.]) +AC_DEFINE_UNQUOTED(SCANDIR64_TYPE_ARG2, $[3], + [Define to the type of arg 2 for `scandir64'.]) +AC_DEFINE_UNQUOTED(SCANDIR64_TYPE_ARG3, $[4], + [Define to the type of arg 3 for `scandir64'.]) +AC_DEFINE_UNQUOTED(SCANDIR64_TYPE_ARG4, $[5], + [Define to the type of arg 4 for `scandir64'.]) +rm -f conftest* +]) diff -ur -x Makefile.in -x Makefile.am -x config.sub -x config.guess -x config.h.in -x configure -x aclocal.m4 -x debian/ -x ltmain.sh -x fakechroot.1 -x changelog -x control -x rules fakechroot-2.9.orig2/src/libfakechroot.c fakechroot-2.9/src/libfakechroot.c --- fakechroot-2.9.orig2/src/libfakechroot.c 2009-03-31 13:20:41.000000000 +0300 +++ fakechroot-2.9/src/libfakechroot.c 2010-01-07 22:55:37.000000000 +0200 @@ -2619,7 +2619,7 @@ #ifdef HAVE_SCANDIR /* #include */ -int scandir (const char *dir, struct dirent ***namelist, SCANDIR_TYPE_ARG3, int(*compar)(const void *, const void *)) +int scandir (const char *dir, struct dirent ***namelist, SCANDIR_TYPE_ARG3, SCANDIR_TYPE_ARG4) { char *fakechroot_path, *fakechroot_ptr, fakechroot_buf[FAKECHROOT_MAXPATH]; expand_chroot_path(dir, fakechroot_path, fakechroot_ptr, fakechroot_buf); @@ -2631,7 +2631,7 @@ #ifdef HAVE_SCANDIR64 /* #include */ -int scandir64 (const char *dir, struct dirent64 ***namelist, int(*filter)(const struct dirent64 *), int(*compar)(const void *, const void *)) +int scandir64 (const char *dir, struct dirent64 ***namelist, int(*filter)(const struct dirent64 *), SCANDIR64_TYPE_ARG4) { char *fakechroot_path, *fakechroot_ptr, fakechroot_buf[FAKECHROOT_MAXPATH]; expand_chroot_path(dir, fakechroot_path, fakechroot_ptr, fakechroot_buf);