[gvfs] udisks2: Set G_VOLUME_IDENTIFIER_KIND_CLASS identifier for volumes



commit 31f24aa3bdfa7f53e74d4e24fcb79a3b7ed0d0ce
Author: David Zeuthen <davidz redhat com>
Date:   Thu Mar 1 14:08:44 2012 -0500

    udisks2: Set G_VOLUME_IDENTIFIER_KIND_CLASS identifier for volumes
    
    This identifier was discussed in
    
     https://bugzilla.gnome.org/show_bug.cgi?id=668295
    
    and added to GLib with this commit
    
     http://git.gnome.org/browse/glib/commit/?id=10fbfcf09010e423cfc79c54e8da50b62a0f4b8a
    
    For now, we do the ifndef dance instead of hard-requiring GLib master.
    
    Signed-off-by: David Zeuthen <davidz redhat com>

 monitor/udisks2/gvfsudisks2volume.c |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)
---
diff --git a/monitor/udisks2/gvfsudisks2volume.c b/monitor/udisks2/gvfsudisks2volume.c
index af2cdf3..8524267 100644
--- a/monitor/udisks2/gvfsudisks2volume.c
+++ b/monitor/udisks2/gvfsudisks2volume.c
@@ -656,6 +656,30 @@ gvfs_udisks2_volume_get_mount (GVolume *volume)
 
 /* ---------------------------------------------------------------------------------------------------- */
 
+static gboolean
+gvfs_udisks2_volume_is_network_class (GVfsUDisks2Volume *volume)
+{
+  gboolean ret = FALSE;
+  if (volume->mount_point != NULL)
+    {
+      const gchar *fstype = g_unix_mount_point_get_fs_type (volume->mount_point);
+      if (g_strcmp0 (fstype, "nfs") == 0 ||
+          g_strcmp0 (fstype, "nfs4") == 0 ||
+          g_strcmp0 (fstype, "cifs") == 0 ||
+          g_strcmp0 (fstype, "smbfs") == 0 ||
+          g_strcmp0 (fstype, "ncpfs") == 0)
+        ret = TRUE;
+    }
+  return ret;
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+/* can remove this once we depend on gio >= 2.31.19 */
+#ifndef G_VOLUME_IDENTIFIER_KIND_CLASS
+#define G_VOLUME_IDENTIFIER_KIND_CLASS "class"
+#endif
+
 static gchar *
 gvfs_udisks2_volume_get_identifier (GVolume      *_volume,
                                     const gchar  *kind)
@@ -677,6 +701,8 @@ gvfs_udisks2_volume_get_identifier (GVolume      *_volume,
       else if (strcmp (kind, G_VOLUME_IDENTIFIER_KIND_UUID) == 0)
         ret = strlen (uuid) > 0 ? g_strdup (uuid) : NULL;
     }
+  if (strcmp (kind, G_VOLUME_IDENTIFIER_KIND_CLASS) == 0)
+    ret = g_strdup (gvfs_udisks2_volume_is_network_class (volume) ? "network" : "device");
 
   return ret;
 }
@@ -688,14 +714,14 @@ gvfs_udisks2_volume_enumerate_identifiers (GVolume *_volume)
   GPtrArray *p;
 
   p = g_ptr_array_new ();
-  g_ptr_array_add (p, g_strdup (G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE));
-
+  g_ptr_array_add (p, g_strdup (G_VOLUME_IDENTIFIER_KIND_CLASS));
   if (volume->block != NULL)
     {
       const gchar *label;
       const gchar *uuid;
       label = udisks_block_get_id_label (volume->block);
       uuid = udisks_block_get_id_uuid (volume->block);
+      g_ptr_array_add (p, g_strdup (G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE));
       if (strlen (label) > 0)
         g_ptr_array_add (p, g_strdup (G_VOLUME_IDENTIFIER_KIND_LABEL));
       if (strlen (uuid) > 0)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]