X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmountlist.c;h=6f7d07cbc1b9eb970801d2669e2ffcd29c499b15;hb=999775b691c8778c10b4787178805280dc4a8183;hp=d301e674c2aeb1f1c6d0ceff40c5482476c6ac92;hpb=3004e2c7716904979d88d85d3636086aa6f40271;p=gnulib.git diff --git a/lib/mountlist.c b/lib/mountlist.c index d301e674c..6f7d07cbc 100644 --- a/lib/mountlist.c +++ b/lib/mountlist.c @@ -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 */ { @@ -726,16 +725,8 @@ read_filesystem_list (int need_fs_type) thisent += vmp->vmt_length) { char *options, *ignore; - vmp = (struct vmount *) thisent; - - options = thisent + vmp->vmt_data[VMT_ARGS].vmt_off; - ignore = strstr (options, "ignore"); - if (ignore - && (ignore == options || ignore[-1] == ',') - && (ignore[sizeof "ignore" - 1] == ',' - || ignore[sizeof "ignore" - 1] == '\0')) - continue; + vmp = (struct vmount *) thisent; me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry)); if (vmp->vmt_flags & MNT_REMOTE) { @@ -758,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. */