-#serial 14
+#serial 26
+# How to list mounted file systems.
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software
+# Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
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 it in an AC_DEFUN and made some other fixes.
dnl
-# jm_LIST_MOUNTED_FILESYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-AC_DEFUN([jm_LIST_MOUNTED_FILESYSTEMS],
+# Replace Autoconf's AC_FUNC_GETMNTENT to work around a bug in Autoconf
+# through Autoconf 2.59. We can remove this once we assume Autoconf 2.60
+# or later.
+AC_DEFUN([AC_FUNC_GETMNTENT],
+[# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
+# -lseq on Dynix/PTX, -lgen on Unixware.
+AC_SEARCH_LIBS(getmntent, [sun seq gen])
+AC_CHECK_FUNCS(getmntent)
+])
+
+# gl_LIST_MOUNTED_FILE_SYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+AC_DEFUN([gl_LIST_MOUNTED_FILE_SYSTEMS],
[
AC_CHECK_FUNCS(listmntent getmntinfo)
-AC_CHECK_HEADERS_ONCE(sys/param.h)
+AC_CHECK_HEADERS_ONCE(sys/param.h sys/statvfs.h)
# We must include grp.h before ucred.h on OSF V4.0, since ucred.h uses
# NGROUPS (as the array dimension for a struct member) without a definition.
AC_CHECK_HEADERS(sys/ucred.h, [], [], [#include <grp.h>])
-AC_CHECK_HEADERS(mntent.h sys/mount.h sys/fs_types.h)
+AC_CHECK_HEADERS(sys/mount.h, [], [],
+ [AC_INCLUDES_DEFAULT
+ [#if HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif]])
+
+AC_CHECK_HEADERS(mntent.h sys/fs_types.h)
getfsstat_includes="\
$ac_includes_default
#if HAVE_SYS_PARAM_H
"
AC_CHECK_MEMBERS([struct fsstat.f_fstypename],,,[$getfsstat_includes])
-# Determine how to get the list of mounted filesystems.
+# Determine how to get the list of mounted file systems.
ac_list_mounted_fs=
# If the getmntent function is available but not in the standard library,
-# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX).
+# make sure LIBS contains the appropriate -l option.
AC_FUNC_GETMNTENT
# This test must precede the ones for getmntent because Unicos-9 is
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_LISTMNTENT, 1,
[Define if there is a function named listmntent that can be used to
- list all mounted filesystems. (UNICOS)])
+ list all mounted file systems. (UNICOS)])
fi
fi
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_VMOUNT, 1,
[Define if there is a function named mntctl that can be used to read
- the list of mounted filesystems, and there is a system header file
+ the list of mounted file systems, and there is a system header file
that declares `struct vmount.' (AIX)])
fi
fi
# endif
#endif
],
- [ struct mntent *mnt = 0; char *table = MOUNTED; ],
+ [ struct mntent *mnt = 0; char *table = MOUNTED;
+ if (sizeof mnt && sizeof table) return 0;],
fu_cv_sys_mounted_getmntent1=yes,
fu_cv_sys_mounted_getmntent1=no)])
AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1)
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_GETMNTENT1, 1,
[Define if there is a function named getmntent for reading the list
- of mounted filesystems, and that function takes a single argument.
+ of mounted file systems, and that function takes a single argument.
(4.3BSD, SunOS, HP-UX, Dynix, Irix)])
fi
fi
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_GETMNTENT2, 1,
[Define if there is a function named getmntent for reading the list of
- mounted filesystems, and that function takes two arguments. (SVR4)])
+ mounted file systems, and that function takes two arguments. (SVR4)])
+ AC_CHECK_FUNCS(hasmntopt)
fi
fi
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_GETFSSTAT, 1,
[Define if there is a function named getfsstat for reading the
- list of mounted filesystems. (DEC Alpha running OSF/1)])
+ list of mounted file systems. (DEC Alpha running OSF/1)])
fi
fi
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_FREAD_FSTYP, 1,
[Define if (like SVR2) there is no specific function for reading the
- list of mounted filesystems, and your system has these header files:
+ list of mounted file systems, and your system has these header files:
<sys/fstyp.h> and <sys/statfs.h>. (SVR3)])
fi
fi
])
AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo)
if test $fu_cv_sys_mounted_getmntinfo = yes; 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, Darwin)])
+ AC_MSG_CHECKING([whether getmntinfo returns statvfs structures])
+ AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo2,
+ [
+ AC_TRY_COMPILE([
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#include <sys/types.h>
+#if HAVE_SYS_MOUNT_H
+# include <sys/mount.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+# include <sys/statvfs.h>
+#endif
+extern int getmntinfo (struct statfs **, int);
+ ], [],
+ [fu_cv_sys_mounted_getmntinfo2=no],
+ [fu_cv_sys_mounted_getmntinfo2=yes])
+ ])
+ AC_MSG_RESULT([$fu_cv_sys_mounted_getmntinfo2])
+ if test $fu_cv_sys_mounted_getmntinfo2 = no; 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 file systems and it returns an array of
+ 'struct statfs'. (4.4BSD, Darwin)])
+ else
+ ac_list_mounted_fs=found
+ AC_DEFINE(MOUNTED_GETMNTINFO2, 1,
+ [Define if there is a function named getmntinfo for reading the
+ list of mounted file systems and it returns an array of
+ 'struct statvfs'. (NetBSD 3.0)])
+ fi
fi
fi
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_GETMNT, 1,
[Define if there is a function named getmnt for reading the list of
- mounted filesystems. (Ultrix)])
+ mounted file systems. (Ultrix)])
fi
fi
ac_list_mounted_fs=found
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)])
+ reading the list of mounted file systems. (BeOS)])
fi
fi
ac_list_mounted_fs=found
AC_DEFINE(MOUNTED_FREAD, 1,
[Define if there is no specific function for reading the list of
- mounted filesystems. fread will be used to read /etc/mnttab.
+ mounted file systems. fread will be used to read /etc/mnttab.
(SVR2) ])
fi
fi
if test -z "$ac_list_mounted_fs"; then
- AC_MSG_ERROR([could not determine how to read list of mounted filesystems])
+ AC_MSG_ERROR([could not determine how to read list of mounted file systems])
# FIXME -- no need to abort building the whole package
# Can't build mountlist.c or anything that needs its functions
fi