diff -ru findutils-4.5.9.orig/gnulib/lib/mountlist.c findutils-4.5.9/gnulib/lib/mountlist.c --- findutils-4.5.9.orig/gnulib/lib/mountlist.c 2010-10-21 09:55:31 +0200 +++ findutils-4.5.9/gnulib/lib/mountlist.c 2010-10-21 10:36:22 +0200 @@ -112,6 +112,11 @@ # include #endif +#ifdef MOUNTED_INTERIX_STATVFS /* Interix. */ +# include +# include +#endif + #ifdef DOLPHIN /* So special that it's not worth putting this in autoconf. */ # undef MOUNTED_FREAD_FSTYP @@ -854,6 +859,47 @@ } #endif /* MOUNTED_VMOUNT. */ +#ifdef MOUNTED_INTERIX_STATVFS + { + DIR* dirp = opendir("/dev/fs"); + char node[9 + NAME_MAX]; + + if(!dirp) + { + goto free_then_fail; + } + + while(1) + { + struct statvfs dev; + struct dirent entry; + struct dirent* result; + + if(readdir_r(dirp, &entry, &result) || result == NULL) + break; + + strcpy(node, "/dev/fs/"); + strcat(node, entry.d_name); + + if(statvfs(node, &dev) == 0) + { + me = xmalloc (sizeof *me); + me->me_devname = xstrdup(dev.f_mntfromname); + me->me_mountdir = xstrdup(dev.f_mntonname); + me->me_type = xstrdup(dev.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_INTERIX_STATVFS */ + *mtail = NULL; return mount_list; diff -ru findutils-4.5.9.orig/gnulib/m4/ls-mntd-fs.m4 findutils-4.5.9/gnulib/m4/ls-mntd-fs.m4 --- findutils-4.5.9.orig/gnulib/m4/ls-mntd-fs.m4 2010-10-21 09:55:32 +0200 +++ findutils-4.5.9/gnulib/m4/ls-mntd-fs.m4 2010-10-21 10:14:07 +0200 @@ -326,6 +326,23 @@ fi if test -z "$ac_list_mounted_fs"; then + # Interix / BSD alike statvfs + # the code is really interix specific, so make sure, we're on it. + case "$host" in + *-interix*) + AC_CHECK_FUNCS([statvfs]) + if test $ac_cv_func_statvfs = yes; then + ac_list_mounted_fs=found + AC_DEFINE([MOUNTED_INTERIX_STATVFS], [1], + [Define if we are on interix, and ought to use statvfs plus + some special knowledge on where mounte filesystems can be + found. (Interix)]) + fi + ;; + esac +fi + +if test -z "$ac_list_mounted_fs"; then 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