mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-20 02:36:16 +02:00
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. * 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.
This commit is contained in:
16
ChangeLog
16
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.
|
||||
@@ -420,7 +434,7 @@
|
||||
* 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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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])
|
||||
|
||||
11
src/stat.c
11
src/stat.c
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user