*** empty log message ***
[gnulib.git] / lib / mountlist.c
index d301e67..6f7d07c 100644 (file)
@@ -40,7 +40,6 @@ char *strstr ();
 char *xmalloc ();
 char *xrealloc ();
 char *xstrdup ();
-void error ();
 
 #include <errno.h>
 #ifndef errno
@@ -85,7 +84,7 @@ extern int errno;
 # include <sys/fs_types.h>
 #endif
 
-#ifdef MOUNTED_NEXT_DEV                /* BeOS.  */
+#ifdef MOUNTED_FS_STAT_DEV     /* BeOS.  */
 # include <fs_info.h>
 # include <dirent.h>
 #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. */