]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
Add support for NetBSD 3.0.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 18 Aug 2006 18:36:04 +0000 (18:36 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 18 Aug 2006 18:36:04 +0000 (18:36 +0000)
* src/stat.c (USE_STATVFS): Set to 1 if 'struct statvfs' has a field
f_fstypename.
(STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME): Define also if 'struct statvfs'
has a field f_fstypename.
This undoes the 2006-08-15 to src/stat.c.
* lib/mountlist.c [MOUNTED_GETMNTINFO2]: Include sys/statvfs.h.
(ME_DUMMY): Treat "kernfs" as a dummy.
(read_file_system_list) [MOUNTED_GETMNTINFO2]: Implement.
* m4/ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Also check for
sys/statvfs.h. When getmntinfo was found, check its declaration and
set either MOUNTED_GETMNTINFO or MOUNTED_GETMNTINFO2 depending on it.
* m4/stat-prog.m4 (cu_PREREQ_STAT_PROG): Test also for f_fstypename
in struct statvfs.

ChangeLog
lib/ChangeLog
lib/mountlist.c
m4/ChangeLog
m4/ls-mntd-fs.m4
m4/stat-prog.m4
src/stat.c

index 7be0cc81eecb1f72f3435ad86ef72422af506e05..bbfb3a78f71c0d883c9957fdefe07c41a2150209 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2006-08-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h (select_plural): Reduce by 1000000, not 1000, since
+       the CVS gettext manual now suggests 1000000.
+
+2006-08-18  Bruno Haible  <bruno@clisp.org>
+
+       Add support for NetBSD 3.0.
+       * src/stat.c (USE_STATVFS): Set to 1 if 'struct statvfs' has a field
+       f_fstypename.
+       (STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME): Define also if 'struct statvfs'
+       has a field f_fstypename.
+       This undoes the 2006-08-15 to src/stat.c.
+
 2006-08-17  Paul Eggert  <eggert@cs.ucla.edu>
 
        Copyright notice fixes.
        * tests/misc/Makefile.am (TESTS): Add df.
        * tests/misc/df: New file.
 
-2006-08-15 Eric Blake <ebb9@byu.net>
+2006-08-15  Eric Blake  <ebb9@byu.net>
 
        * src/stat.c (USE_STATVFS): Define to 0 if f_type is needed, but
        statvfs.f_type not present.  See
index 56e7a4adf7879170376e7c6b3b763a547a3b2d74..613ae228d4240583503d5455fe8e22fcfb5d1491 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-18  Bruno Haible  <bruno@clisp.org>
+
+       * mountlist.c [MOUNTED_GETMNTINFO2]: Include sys/statvfs.h.
+       (ME_DUMMY): Treat "kernfs" as a dummy.
+       (read_file_system_list) [MOUNTED_GETMNTINFO2]: Implement.
+
 2006-08-17  Paul Eggert  <eggert@cs.ucla.edu>
 
        * ChangeLog: Add copyright notice.
index 3774c8e4ecd5375794baa0b4a1eabbb3415d7d46..1b642410161d4f1ffd73d481be46f272f09edf4c 100644 (file)
@@ -82,6 +82,10 @@ char *strstr ();
 # include <sys/mount.h>
 #endif
 
+#ifdef MOUNTED_GETMNTINFO2     /* NetBSD 3.0.  */
+# include <sys/statvfs.h>
+#endif
+
 #ifdef MOUNTED_GETMNT          /* Ultrix.  */
 # include <sys/mount.h>
 # include <sys/fs_types.h>
@@ -147,6 +151,8 @@ char *strstr ();
      || strcmp (Fs_type, "none") == 0          \
      || strcmp (Fs_type, "proc") == 0          \
      || strcmp (Fs_type, "subfs") == 0         \
+     /* for NetBSD 3.0 */                      \
+     || strcmp (Fs_type, "kernfs") == 0                \
      /* for Irix 6.5 */                                \
      || strcmp (Fs_type, "ignore") == 0)
 #endif
@@ -260,7 +266,6 @@ fstype_to_string (short int t)
 }
 # endif /* ! HAVE_F_FSTYPENAME_IN_STATFS */
 
-/* __NetBSD__ || BSD_NET2 || __OpenBSD__ */
 static char *
 fsp_to_string (const struct statfs *fsp)
 {
@@ -426,6 +431,32 @@ read_file_system_list (bool need_fs_type)
   }
 #endif /* MOUNTED_GETMNTINFO */
 
+#ifdef MOUNTED_GETMNTINFO2     /* NetBSD 3.0.  */
+  {
+    struct statvfs *fsp;
+    int entries;
+
+    entries = getmntinfo (&fsp, MNT_NOWAIT);
+    if (entries < 0)
+      return NULL;
+    for (; entries-- > 0; fsp++)
+      {
+       me = xmalloc (sizeof *me);
+       me->me_devname = xstrdup (fsp->f_mntfromname);
+       me->me_mountdir = xstrdup (fsp->f_mntonname);
+       me->me_type = xstrdup (fsp->f_fstypename);
+       me->me_type_malloced = 1;
+       me->me_dummy = ME_DUMMY (me->me_devname, me->me_type);
+       me->me_remote = ME_REMOTE (me->me_devname, me->me_type);
+       me->me_dev = (dev_t) -1;        /* Magic; means not known yet. */
+
+       /* Add to the linked list. */
+       *mtail = me;
+       mtail = &me->me_next;
+      }
+  }
+#endif /* MOUNTED_GETMNTINFO2 */
+
 #ifdef MOUNTED_GETMNT          /* Ultrix.  */
   {
     int offset = 0;
index 6bf97c91235c6b7c1edfa65543672caa61fd20fb..a531c66654fc3664df44a61f1bf316f75a7c4b6a 100644 (file)
@@ -1,3 +1,11 @@
+2006-08-18  Bruno Haible  <bruno@clisp.org>
+
+       * ls-mntd-fs.m4 (gl_LIST_MOUNTED_FILE_SYSTEMS): Also check for
+       sys/statvfs.h. When getmntinfo was found, check its declaration and
+       set either MOUNTED_GETMNTINFO or MOUNTED_GETMNTINFO2 depending on it.
+       * stat-prog.m4 (cu_PREREQ_STAT_PROG): Test also for f_fstypename
+       in struct statvfs.
+
 2006-08-18  Jim Meyering  <jim@meyering.net>
 
        * gethrxtime.m4 (gl_PREREQ_GETHRXTIME): Also check for CLOCK_REALTIME,
index a4c808907337fb87191e2461dcbbead8d62d65ed..c29933162d570e893c712f82872d8e286605d990 100644 (file)
@@ -1,4 +1,4 @@
-#serial 21
+#serial 22
 # How to list mounted file systems.
 
 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 Free Software
@@ -28,7 +28,7 @@ AC_CHECK_FUNCS(getmntent)
 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.
@@ -232,10 +232,36 @@ if test -z "$ac_list_mounted_fs"; then
     ])
   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 file systems.  (4.4BSD, Darwin)])
+    AC_MSG_CHECKING([whether getmntinfo returns statvfs structures])
+    AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo2,
+      [
+        AC_TRY_COMPILE([
+#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
 
index 489ed75582af264a3cbe5524a56a816c05f81582..4505f54a3ae8264da18a75b826ac61a813ea151a 100644 (file)
@@ -1,7 +1,7 @@
-# stat-prog.m4 serial 2
+# stat-prog.m4 serial 3
 # Record the prerequisites of src/stat.c from the coreutils package.
 
-# Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -60,6 +60,7 @@ $ac_includes_default
   AC_CHECK_MEMBERS([struct statfs.f_basetype],,,[$statxfs_includes])
   AC_CHECK_MEMBERS([struct statvfs.f_basetype],,,[$statxfs_includes])
   AC_CHECK_MEMBERS([struct statfs.f_fstypename],,,[$statxfs_includes])
+  AC_CHECK_MEMBERS([struct statvfs.f_fstypename],,,[$statxfs_includes])
   AC_CHECK_MEMBERS([struct statfs.f_type],,,[$statxfs_includes])
   AC_CHECK_MEMBERS([struct statvfs.f_type],,,[$statxfs_includes])
   AC_CHECK_MEMBERS([struct statfs.f_fsid.__val],,,[$statxfs_includes])
index 481096d2762fa8117309045ff2e688bce9804287..4ea66fde7faf814db7173238d9efe0b9a170cba5 100644 (file)
@@ -20,8 +20,8 @@
 #include <config.h>
 
 #if (STAT_STATVFS \
-     && (HAVE_STRUCT_STATVFS_F_BASETYPE \
-         || (! HAVE_STRUCT_STATFS_F_FSTYPENAME && HAVE_STRUCT_STATVFS_F_TYPE)))
+     && (HAVE_STRUCT_STATVFS_F_BASETYPE || HAVE_STRUCT_STATVFS_F_FSTYPENAME \
+        || ! HAVE_STRUCT_STATFS_F_FSTYPENAME))
 # define USE_STATVFS 1
 #else
 # define USE_STATVFS 0
@@ -93,7 +93,7 @@
 #if HAVE_STRUCT_STATVFS_F_BASETYPE
 # define STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME f_basetype
 #else
-# if HAVE_STRUCT_STATFS_F_FSTYPENAME
+# if HAVE_STRUCT_STATVFS_F_FSTYPENAME || HAVE_STRUCT_STATFS_F_FSTYPENAME
 #  define STATXFS_FILE_SYSTEM_TYPE_MEMBER_NAME f_fstypename
 # endif
 #endif
@@ -136,8 +136,9 @@ static bool interpret_backslash_escapes;
 static char const *trailing_delim = "";
 
 /* Return the type of the specified file system.
-   Some systems have statfvs.f_basetype[FSTYPSZ]. (AIX, HP-UX, and Solaris)
-   Others have statfs.f_fstypename[MFSNAMELEN]. (NetBSD 1.5.2)
+   Some systems have statfvs.f_basetype[FSTYPSZ] (AIX, HP-UX, and Solaris).
+   Others have statvfs.f_fstypename[_VFS_NAMELEN] (NetBSD 3.0).
+   Others have statfs.f_fstypename[MFSNAMELEN] (NetBSD 1.5.2).
    Still others have neither and have to get by with f_type (Linux).  */
 static char const *
 human_fstype (STRUCT_STATVFS const *statfsbuf)