[gnome-disk-utility] Move volume and partition utility functions



commit b16f6d223791f816356ca66c8bb93e4ab4d8c114
Author: Kai Lüke <kailueke riseup net>
Date:   Sat Jul 8 17:29:45 2017 +0200

    Move volume and partition utility functions
    
    The partition and format dialogs will be reorganized.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=770738

 src/disks/gducreatefilesystemwidget.c |   24 +--------
 src/disks/gducreatepartitiondialog.c  |   67 +----------------------
 src/libgdu/gduutils.c                 |   94 +++++++++++++++++++++++++++++++++
 src/libgdu/gduutils.h                 |   12 ++++
 4 files changed, 110 insertions(+), 87 deletions(-)
---
diff --git a/src/disks/gducreatefilesystemwidget.c b/src/disks/gducreatefilesystemwidget.c
index a6d9aa0..8c148c7 100644
--- a/src/disks/gducreatefilesystemwidget.c
+++ b/src/disks/gducreatefilesystemwidget.c
@@ -349,28 +349,6 @@ on_property_changed (GObject     *object,
   update (widget);
 }
 
-
-static gboolean
-is_flash (UDisksDrive *drive)
-{
-  gboolean ret = FALSE;
-  guint n;
-  const gchar *const *media_compat;
-
-  media_compat = udisks_drive_get_media_compatibility (drive);
-  for (n = 0; media_compat != NULL && media_compat[n] != NULL; n++)
-    {
-      if (g_str_has_prefix (media_compat[n], "flash"))
-        {
-          ret = TRUE;
-          goto out;
-        }
-    }
-
- out:
-  return ret;
-}
-
 static gboolean
 separator_func (GtkTreeModel *model,
                 GtkTreeIter *iter,
@@ -465,7 +443,7 @@ populate (GduCreateFilesystemWidget *widget)
   if (widget->drive != NULL && udisks_drive_get_removable (widget->drive))
     {
       /* default FAT for flash and disks/media smaller than 20G (assumed to be flash cards) */
-      if (is_flash (widget->drive) || udisks_drive_get_size (widget->drive) < (guint64)(20ULL * 
1000ULL*1000ULL*1000ULL))
+      if (gdu_utils_is_flash (widget->drive) || udisks_drive_get_size (widget->drive) < (guint64)(20ULL * 
1000ULL*1000ULL*1000ULL))
         {
           gtk_combo_box_set_active_id (GTK_COMBO_BOX (widget->type_combobox), "vfat");
         }
diff --git a/src/disks/gducreatepartitiondialog.c b/src/disks/gducreatepartitiondialog.c
index ed2a237..9e3a79b 100644
--- a/src/disks/gducreatepartitiondialog.c
+++ b/src/disks/gducreatepartitiondialog.c
@@ -66,67 +66,6 @@ create_partition_data_free (CreatePartitionData *data)
   g_free (data);
 }
 
-static guint
-count_primary_dos_partitions (CreatePartitionData *data)
-{
-  GList *partitions, *l;
-  guint ret = 0;
-  partitions = udisks_client_get_partitions (gdu_window_get_client (data->window), data->table);
-  for (l = partitions; l != NULL; l = l->next)
-    {
-      UDisksPartition *partition = UDISKS_PARTITION (l->data);
-      if (!udisks_partition_get_is_contained (partition))
-        ret += 1;
-    }
-  g_list_foreach (partitions, (GFunc) g_object_unref, NULL);
-  g_list_free (partitions);
-  return ret;
-}
-
-static gboolean
-have_dos_extended (CreatePartitionData *data)
-{
-  GList *partitions, *l;
-  gboolean ret = FALSE;
-  partitions = udisks_client_get_partitions (gdu_window_get_client (data->window), data->table);
-  for (l = partitions; l != NULL; l = l->next)
-    {
-      UDisksPartition *partition = UDISKS_PARTITION (l->data);
-      if (udisks_partition_get_is_container (partition))
-        {
-          ret = TRUE;
-          break;
-        }
-    }
-  g_list_foreach (partitions, (GFunc) g_object_unref, NULL);
-  g_list_free (partitions);
-  return ret;
-}
-
-static gboolean
-is_inside_dos_extended (CreatePartitionData *data, guint64 offset)
-{
-  GList *partitions, *l;
-  gboolean ret = FALSE;
-  partitions = udisks_client_get_partitions (gdu_window_get_client (data->window), data->table);
-  for (l = partitions; l != NULL; l = l->next)
-    {
-      UDisksPartition *partition = UDISKS_PARTITION (l->data);
-      if (udisks_partition_get_is_container (partition))
-        {
-          if (offset >= udisks_partition_get_offset (partition) &&
-              offset < udisks_partition_get_offset (partition) + udisks_partition_get_size (partition))
-            {
-              ret = TRUE;
-              break;
-            }
-        }
-    }
-  g_list_foreach (partitions, (GFunc) g_object_unref, NULL);
-  g_list_free (partitions);
-  return ret;
-}
-
 static void
 create_partition_update (CreatePartitionData *data)
 {
@@ -142,10 +81,10 @@ create_partition_update (CreatePartitionData *data)
    */
   if (g_strcmp0 (udisks_partition_table_get_type_ (data->table), "dos") == 0)
     {
-      if (!is_inside_dos_extended (data, data->offset))
+      if (!gdu_utils_is_inside_dos_extended (gdu_window_get_client (data->window), data->table, 
data->offset))
         {
           guint num_primary;
-          num_primary = count_primary_dos_partitions (data);
+          num_primary = gdu_utils_count_primary_dos_partitions (gdu_window_get_client (data->window), 
data->table);
           if (num_primary == 4)
             show_dos_error = TRUE;
           else if (num_primary == 3)
@@ -405,7 +344,7 @@ gdu_create_partition_dialog_show (GduWindow    *window,
 
   if (g_strcmp0 (udisks_partition_table_get_type_ (data->table), "dos") == 0)
     {
-      if (!have_dos_extended (data))
+      if (!gdu_utils_have_dos_extended (gdu_window_get_client (data->window), data->table))
         {
           snprintf (dos_extended_partition_name, sizeof dos_extended_partition_name,
                     "%s <span size=\"small\">(%s)</span>",
diff --git a/src/libgdu/gduutils.c b/src/libgdu/gduutils.c
index 6d7e945..bcc5d41 100644
--- a/src/libgdu/gduutils.c
+++ b/src/libgdu/gduutils.c
@@ -590,6 +590,100 @@ gdu_utils_format_duration_usec (guint64                usec,
   return ret;
 }
 
+gboolean
+gdu_utils_is_flash (UDisksDrive *drive)
+{
+  gboolean ret = FALSE;
+  guint n;
+  const gchar *const *media_compat;
+
+  media_compat = udisks_drive_get_media_compatibility (drive);
+  for (n = 0; media_compat != NULL && media_compat[n] != NULL; n++)
+    {
+      if (g_str_has_prefix (media_compat[n], "flash"))
+        {
+          ret = TRUE;
+          break;
+        }
+    }
+
+  return ret;
+}
+
+guint
+gdu_utils_count_primary_dos_partitions (UDisksClient         *client,
+                                        UDisksPartitionTable *table)
+{
+  GList *partitions, *l;
+  guint ret = 0;
+
+  partitions = udisks_client_get_partitions (client, table);
+  for (l = partitions; l != NULL; l = l->next)
+    {
+      UDisksPartition *partition = UDISKS_PARTITION (l->data);
+      if (!udisks_partition_get_is_contained (partition))
+        ret += 1;
+    }
+
+  g_list_foreach (partitions, (GFunc) g_object_unref, NULL);
+  g_list_free (partitions);
+
+  return ret;
+}
+
+gboolean
+gdu_utils_have_dos_extended (UDisksClient         *client,
+                             UDisksPartitionTable *table)
+{
+  GList *partitions, *l;
+  gboolean ret = FALSE;
+
+  partitions = udisks_client_get_partitions (client, table);
+  for (l = partitions; l != NULL; l = l->next)
+    {
+      UDisksPartition *partition = UDISKS_PARTITION (l->data);
+      if (udisks_partition_get_is_container (partition))
+        {
+          ret = TRUE;
+          break;
+        }
+    }
+
+  g_list_foreach (partitions, (GFunc) g_object_unref, NULL);
+  g_list_free (partitions);
+
+  return ret;
+}
+
+gboolean
+gdu_utils_is_inside_dos_extended (UDisksClient         *client,
+                                  UDisksPartitionTable *table,
+                                  guint64               offset)
+{
+  GList *partitions, *l;
+  gboolean ret = FALSE;
+
+  partitions = udisks_client_get_partitions (client, table);
+  for (l = partitions; l != NULL; l = l->next)
+    {
+      UDisksPartition *partition = UDISKS_PARTITION (l->data);
+      if (udisks_partition_get_is_container (partition))
+        {
+          if (offset >= udisks_partition_get_offset (partition) &&
+              offset < udisks_partition_get_offset (partition) + udisks_partition_get_size (partition))
+            {
+              ret = TRUE;
+              break;
+            }
+        }
+    }
+
+  g_list_foreach (partitions, (GFunc) g_object_unref, NULL);
+  g_list_free (partitions);
+
+  return ret;
+}
+
 /* ---------------------------------------------------------------------------------------------------- */
 
 void
diff --git a/src/libgdu/gduutils.h b/src/libgdu/gduutils.h
index 6e0d63a..c9effa1 100644
--- a/src/libgdu/gduutils.h
+++ b/src/libgdu/gduutils.h
@@ -47,6 +47,18 @@ const gchar *gdu_utils_get_seat (void);
 gchar *gdu_utils_format_duration_usec (guint64                usec,
                                        GduFormatDurationFlags flags);
 
+gboolean gdu_utils_is_flash                  (UDisksDrive *drive);
+
+guint gdu_utils_count_primary_dos_partitions (UDisksClient         *client,
+                                              UDisksPartitionTable *table);
+
+gboolean gdu_utils_have_dos_extended         (UDisksClient         *client,
+                                              UDisksPartitionTable *table);
+
+gboolean gdu_utils_is_inside_dos_extended    (UDisksClient         *client,
+                                              UDisksPartitionTable *table,
+                                              guint64               offset);
+
 void            gdu_utils_show_error      (GtkWindow      *parent_window,
                                            const gchar    *message,
                                            GError         *error);


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