$NetBSD: patch-ak,v 1.7 2015/04/13 03:59:41 rodent Exp $ --- gl/mountlist.c.orig 2014-03-04 21:41:56.000000000 +0000 +++ gl/mountlist.c @@ -52,7 +52,11 @@ # if HAVE_STRUCT_FSSTAT_F_FSTYPENAME # define FS_TYPE(Ent) ((Ent).f_fstypename) # else -# define FS_TYPE(Ent) mnt_names[(Ent).f_type] +# if defined(STAT_STATVFS) +# define FS_TYPE(Ent) mnt_names[(Ent).f_fsid] +# else +# define FS_TYPE(Ent) mnt_names[(Ent).f_type] +# endif # endif #endif /* MOUNTED_GETFSSTAT */ @@ -99,6 +103,10 @@ # include #endif +#if defined(HAVE_SYS_STATVFS_H) +#include +#endif + #ifdef MOUNTED_LISTMNTENT # include #endif @@ -223,7 +231,7 @@ me_remote (char const *fs_name, char con #if MOUNTED_GETMNTINFO -# if ! HAVE_STRUCT_STATFS_F_FSTYPENAME +# if ! HAVE_STRUCT_STATFS_F_FSTYPENAME && ! STAT_STATVFS static char * fstype_to_string (short int t) { @@ -320,9 +328,13 @@ fstype_to_string (short int t) # endif static char * +#if defined(STAT_STATVFS) && !defined(__FreeBSD__) +fsp_to_string (const struct statvfs *fsp) +#else fsp_to_string (const struct statfs *fsp) +#endif { -# if HAVE_STRUCT_STATFS_F_FSTYPENAME +# if defined(HAVE_STRUCT_STATFS_F_FSTYPENAME) || defined(STAT_STATVFS) return (char *) (fsp->f_fstypename); # else return fstype_to_string (fsp->f_type); @@ -648,7 +660,11 @@ read_file_system_list (bool need_fs_type { int numsys, counter; size_t bufsize; +#if defined(STAT_STATVFS) && !defined(__FreeBSD__) + struct statvfs *stats; +#else struct statfs *stats; +#endif numsys = getfsstat (NULL, 0L, MNT_NOWAIT); if (numsys < 0) @@ -658,7 +674,11 @@ read_file_system_list (bool need_fs_type bufsize = (1 + numsys) * sizeof *stats; stats = xmalloc (bufsize); +#if defined(STAT_STATVFS) + numsys = getfsstat ((struct statvfs *)stats, bufsize, MNT_NOWAIT); +#else numsys = getfsstat (stats, bufsize, MNT_NOWAIT); +#endif if (numsys < 0) {