[gnome-disk-utility] Move volume and partition utility functions
- From: Kai Lüke <kailueke src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-disk-utility] Move volume and partition utility functions
- Date: Tue, 1 Aug 2017 19:02:43 +0000 (UTC)
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]