X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmountlist.c;h=6f7d07cbc1b9eb970801d2669e2ffcd29c499b15;hb=999775b691c8778c10b4787178805280dc4a8183;hp=852be464ad7217bf79325be48c0d4a7460c7b3e7;hpb=f48022197c4ae7d5c3c351d31ec2612f32b60668;p=gnulib.git diff --git a/lib/mountlist.c b/lib/mountlist.c index 852be464a..6f7d07cbc 100644 --- a/lib/mountlist.c +++ b/lib/mountlist.c @@ -1,5 +1,5 @@ /* mountlist.c -- return a list of mounted filesystems - Copyright (C) 1991, 1992, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1991, 1992, 1997-2000 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 @@ -40,7 +40,6 @@ char *strstr (); char *xmalloc (); char *xrealloc (); char *xstrdup (); -void error (); #include #ifndef errno @@ -85,7 +84,7 @@ extern int errno; # include #endif -#ifdef MOUNTED_NEXT_DEV /* BeOS. */ +#ifdef MOUNTED_FS_STAT_DEV /* BeOS. */ # include # include #endif @@ -261,7 +260,7 @@ static char * fsp_to_string (const struct statfs *fsp) { # if defined HAVE_F_FSTYPENAME_IN_STATFS - return fsp->f_fstypename; + return (char *) (fsp->f_fstypename); # else return fstype_to_string (fsp->f_type); # endif @@ -418,7 +417,7 @@ read_filesystem_list (int need_fs_type) } #endif /* MOUNTED_GETMNT. */ -#if defined (MOUNTED_NEXT_DEV) /* BeOS */ +#if defined (MOUNTED_FS_STAT_DEV) /* BeOS */ { /* The next_dev() and fs_stat_dev() system calls give the list of all filesystems, including the information returned by statvfs() @@ -469,7 +468,7 @@ read_filesystem_list (int need_fs_type) strcpy (name + 1, d->d_name); } - if (stat (name, &statbuf) >= 0 && S_ISDIR (statbuf.st_mode)) + if (lstat (name, &statbuf) >= 0 && S_ISDIR (statbuf.st_mode)) { struct rootdir_entry *re; @@ -521,7 +520,7 @@ read_filesystem_list (int need_fs_type) free (re); } } -#endif /* MOUNTED_NEXT_DEV */ +#endif /* MOUNTED_FS_STAT_DEV */ #if defined (MOUNTED_GETFSSTAT) /* __alpha running OSF_1 */ { @@ -725,6 +724,8 @@ read_filesystem_list (int need_fs_type) for (thisent = entries; thisent < entries + bufsize; thisent += vmp->vmt_length) { + char *options, *ignore; + vmp = (struct vmount *) thisent; me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry)); if (vmp->vmt_flags & MNT_REMOTE) @@ -748,7 +749,12 @@ read_filesystem_list (int need_fs_type) } me->me_mountdir = xstrdup (thisent + vmp->vmt_data[VMT_STUB].vmt_off); me->me_type = xstrdup (fstype_to_string (vmp->vmt_gfstype)); - me->me_dummy = ME_DUMMY (me->me_devname, me->me_type); + options = thisent + vmp->vmt_data[VMT_ARGS].vmt_off; + ignore = strstr (options, "ignore"); + me->me_dummy = (ignore + && (ignore == options || ignore[-1] == ',') + && (ignore[sizeof "ignore" - 1] == ',' + || ignore[sizeof "ignore" - 1] == '\0')); me->me_dev = (dev_t) -1; /* vmt_fsid might be the info we want. */ /* Add to the linked list. */