[gnome-disk-utility] Hide devices if mounted with x-gdu.hide



commit c6eb1882c8ae87168939ece825f83cf9b6b559ae
Author: Andrea Azzarone <andrea azzarone canonical com>
Date:   Fri Nov 24 13:42:22 2017 +0100

    Hide devices if mounted with x-gdu.hide
    
    Check inside should_include_block if a block has been mounted with
    the x-gdu.hide option. This allows to hide e.g. snap squashfs from
    gnome-disk-utility.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=790279

 meson.build                    |    4 ++++
 src/disks/gdudevicetreemodel.c |    3 +++
 src/libgdu/gduutils.c          |   20 ++++++++++++++++++++
 src/libgdu/gduutils.h          |    3 +++
 4 files changed, 30 insertions(+), 0 deletions(-)
---
diff --git a/meson.build b/meson.build
index 866f9ac..62d653f 100644
--- a/meson.build
+++ b/meson.build
@@ -98,6 +98,10 @@ udisks2_7_2_dep = dependency('udisks2', version: '>= 2.7.2', required: false)
 config_h.set('HAVE_UDISKS2_7_2', udisks2_7_2_dep.found(),
              description: 'Define to 1 if UDisks version >= 2.7.2 for resize, repair, check')
 
+udisks2_7_6_dep = dependency('udisks2', version: '>= 2.7.6', required: false)
+config_h.set('HAVE_UDISKS2_7_6', udisks2_7_6_dep.found(),
+             description: 'Define to 1 if UDisks version >= 2.7.6 for userspace mount options')
+
 # *** Check for libsystemd ***
 enable_libsystemd = get_option('libsystemd')
 if enable_libsystemd
diff --git a/src/disks/gdudevicetreemodel.c b/src/disks/gdudevicetreemodel.c
index 2ed7c24..329717a 100644
--- a/src/disks/gdudevicetreemodel.c
+++ b/src/disks/gdudevicetreemodel.c
@@ -1196,6 +1196,9 @@ should_include_block (UDisksObject *object)
   partition = udisks_object_peek_partition (object);
   loop = udisks_object_peek_loop (object);
 
+  if (gdu_utils_has_userspace_mount_option (block, "x-gdu.hide"))
+    goto out;
+
   /* RAM devices are useless */
   device = udisks_block_get_device (block);
   if (g_str_has_prefix (device, "/dev/ram"))
diff --git a/src/libgdu/gduutils.c b/src/libgdu/gduutils.c
index 8543567..21ce36f 100644
--- a/src/libgdu/gduutils.c
+++ b/src/libgdu/gduutils.c
@@ -63,6 +63,26 @@ gdu_utils_has_configuration (UDisksBlock  *block,
   return ret;
 }
 
+gboolean
+gdu_utils_has_userspace_mount_option (UDisksBlock *block,
+                                      const gchar *option)
+{
+#ifdef HAVE_UDISKS2_7_6
+  const gchar *const *options;
+  gboolean ret;
+
+  ret = FALSE;
+
+  options = udisks_block_get_userspace_mount_options (block);
+  if (options != NULL)
+    ret = g_strv_contains (options, option);
+
+  return ret;
+#else
+  return FALSE;
+#endif
+}
+
 void
 gdu_utils_configure_file_chooser_for_disk_images (GtkFileChooser *file_chooser,
                                                   gboolean        set_file_types,
diff --git a/src/libgdu/gduutils.h b/src/libgdu/gduutils.h
index 815e3ef..d5773a6 100644
--- a/src/libgdu/gduutils.h
+++ b/src/libgdu/gduutils.h
@@ -18,6 +18,9 @@ gboolean gdu_utils_has_configuration (UDisksBlock  *block,
                                       const gchar  *type,
                                       gboolean     *out_has_passphrase);
 
+gboolean gdu_utils_has_userspace_mount_option (UDisksBlock *block,
+                                               const gchar *option);
+
 void gdu_utils_configure_file_chooser_for_disk_images (GtkFileChooser *file_chooser,
                                                        gboolean        set_file_types,
                                                        gboolean        allow_compressed);


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