X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fls-mntd-fs.m4;h=54ae7d9838448644897a01458c712bb95ce057ec;hb=c50728dcc26ea56e6e20937a97a26a70b0484703;hp=a1d271df2a61e9643ccf4b67323545c04212bdbc;hpb=cbbc6ffe783c812a43abf6301b8e434057181949;p=gnulib.git diff --git a/m4/ls-mntd-fs.m4 b/m4/ls-mntd-fs.m4 index a1d271df2..54ae7d983 100644 --- a/m4/ls-mntd-fs.m4 +++ b/m4/ls-mntd-fs.m4 @@ -1,21 +1,33 @@ -#serial 4 +#serial 11 dnl From Jim Meyering. dnl dnl This is not pretty. I've just taken the autoconf code and wrapped dnl it in an AC_DEFUN. dnl -dnl CAUTION: This is very fragile. It relies on several checks that -dnl are still in fileutils' configure.in: -dnl FIXME: add AC_REQUIRE uses to pull in all definitions required -dnl for all uses of $ac_cv_func_* and $ac_cv_header_* variables below. -dnl - -AC_PREREQ(2.14a) # jm_LIST_MOUNTED_FILESYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) -AC_DEFUN(jm_LIST_MOUNTED_FILESYSTEMS, +AC_DEFUN([jm_LIST_MOUNTED_FILESYSTEMS], [ +AC_CHECK_FUNCS(listmntent getmntinfo) +AC_CHECK_HEADERS(mntent.h sys/param.h sys/ucred.h sys/mount.h sys/fs_types.h) + getfsstat_includes="\ +$ac_includes_default +#if HAVE_SYS_PARAM_H +# include /* needed by powerpc-apple-darwin1.3.7 */ +#endif +#if HAVE_SYS_UCRED_H +# include /* needed by powerpc-apple-darwin1.3.7 */ +#endif +#if HAVE_SYS_MOUNT_H +# include +#endif +#if HAVE_SYS_FS_TYPES_H +# include /* needed by powerpc-apple-darwin1.3.7 */ +#endif +" +AC_CHECK_MEMBERS([struct fsstat.f_fstypename],,,[$getfsstat_includes]) + # Determine how to get the list of mounted filesystems. ac_list_mounted_fs= @@ -64,9 +76,26 @@ if test $ac_cv_func_getmntent = yes; then # 4.3BSD, SunOS, HP-UX, Dynix, Irix AC_MSG_CHECKING([for one-argument getmntent function]) AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, - [test $ac_cv_header_mntent_h = yes \ - && fu_cv_sys_mounted_getmntent1=yes \ - || fu_cv_sys_mounted_getmntent1=no]) + [AC_TRY_COMPILE([ +/* SunOS 4.1.x /usr/include/mntent.h needs this for FILE */ +#include + +#include +#if !defined MOUNTED +# if defined _PATH_MOUNTED /* GNU libc */ +# define MOUNTED _PATH_MOUNTED +# endif +# if defined MNT_MNTTAB /* HP-UX. */ +# define MOUNTED MNT_MNTTAB +# endif +# if defined MNTTABNAME /* Dynix. */ +# define MOUNTED MNTTABNAME +# endif +#endif +], + [ struct mntent *mnt = 0; char *table = MOUNTED; ], + fu_cv_sys_mounted_getmntent1=yes, + fu_cv_sys_mounted_getmntent1=no)]) AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) if test $fu_cv_sys_mounted_getmntent1 = yes; then ac_list_mounted_fs=found @@ -93,26 +122,30 @@ if test $ac_cv_func_getmntent = yes; then fi fi - if test -z "$ac_list_mounted_fs"; then - AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) - fi - fi if test -z "$ac_list_mounted_fs"; then - # DEC Alpha running OSF/1. + # DEC Alpha running OSF/1, and Apple Darwin 1.3. + # powerpc-apple-darwin1.3.7 needs sys/param.h sys/ucred.h sys/fs_types.h + AC_MSG_CHECKING([for getfsstat function]) - AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, + AC_CACHE_VAL(fu_cv_sys_mounted_getfsstat, [AC_TRY_LINK([ #include -#include -#include ], +#if HAVE_STRUCT_FSSTAT_F_FSTYPENAME +# define FS_TYPE(Ent) ((Ent).f_fstypename) +#else +# define FS_TYPE(Ent) mnt_names[(Ent).f_type] +#endif +]$getfsstat_includes +, [struct statfs *stats; - int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], - fu_cv_sys_mounted_getsstat=yes, - fu_cv_sys_mounted_getsstat=no)]) - AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) - if test $fu_cv_sys_mounted_getsstat = yes; then + int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); + char *t = FS_TYPE (*stats); ], + fu_cv_sys_mounted_getfsstat=yes, + fu_cv_sys_mounted_getfsstat=no)]) + AC_MSG_RESULT($fu_cv_sys_mounted_getfsstat) + if test $fu_cv_sys_mounted_getfsstat = yes; then ac_list_mounted_fs=found AC_DEFINE(MOUNTED_GETFSSTAT, 1, [Define if there is a function named getfsstat for reading the @@ -162,12 +195,7 @@ if test -z "$ac_list_mounted_fs"; then AC_MSG_CHECKING([for getmntinfo function]) AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, [ - ok= - if test $ac_cv_func_getmntinfo = yes; then - AC_EGREP_HEADER(f_type;, sys/mount.h, - ok=yes) - fi - test -n "$ok" \ + test "$ac_cv_func_getmntinfo" = yes \ && fu_cv_sys_mounted_getmntinfo=yes \ || fu_cv_sys_mounted_getmntinfo=no ]) @@ -176,12 +204,10 @@ if test -z "$ac_list_mounted_fs"; then ac_list_mounted_fs=found AC_DEFINE(MOUNTED_GETMNTINFO, 1, [Define if there is a function named getmntinfo for reading the - list of mounted filesystems. (4.4BSD)]) + list of mounted filesystems. (4.4BSD, Darwin)]) fi fi -# FIXME: add a test for netbsd-1.1 here - if test -z "$ac_list_mounted_fs"; then # Ultrix AC_MSG_CHECKING([for getmnt function]) @@ -202,15 +228,20 @@ fi if test -z "$ac_list_mounted_fs"; then # BeOS - AC_MSG_CHECKING([for next_dev function]) - AC_CACHE_VAL(fu_cv_sys_mounted_next_dev, - [AC_TRY_CPP([#include ], - fu_cv_sys_mounted_next_dev=yes, - fu_cv_sys_mounted_next_dev=no)]) - AC_MSG_RESULT($fu_cv_sys_mounted_next_dev) - if test $fu_cv_sys_mounted_next_dev = yes; then + AC_CHECK_FUNCS(next_dev fs_stat_dev) + AC_CHECK_HEADERS(fs_info.h) + AC_MSG_CHECKING([for BEOS mounted file system support functions]) + if test $ac_cv_header_fs_info_h = yes \ + && test $ac_cv_func_next_dev = yes \ + && test $ac_cv_func_fs_stat_dev = yes; then + fu_result=yes + else + fu_result=no + fi + AC_MSG_RESULT($fu_result) + if test $fu_result = yes; then ac_list_mounted_fs=found - AC_DEFINE(MOUNTED_NEXT_DEV, 1, + AC_DEFINE(MOUNTED_FS_STAT_DEV, 1, [Define if there are functions named next_dev and fs_stat_dev for reading the list of mounted filesystems. (BeOS)]) fi @@ -238,6 +269,6 @@ if test -z "$ac_list_mounted_fs"; then # Can't build mountlist.c or anything that needs its functions fi -AC_SHELL_IFELSE([test $ac_list_mounted_fs = found], [$1], [$2])dnl +AS_IF([test $ac_list_mounted_fs = found], [$1], [$2]) ])