summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2017-12-13 16:29:11 +0000
committerRichard Hughes <richard@hughsie.com>2017-12-14 12:16:08 +0000
commit11f9872fd19527074d50c82f6d9ecda0ee683cd2 (patch)
tree0729cc309d12105ff203ee8c8c3b36b3a559d468
parentb5a370a05da6d5ef2d7969c7ce0bd850b46388b4 (diff)
downloadgcab-11f9872fd19527074d50c82f6d9ecda0ee683cd2.tar.gz
trivial: Sort the globbed files to avoid depending on filesystem order
-rw-r--r--libgcab/gcab-folder.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libgcab/gcab-folder.c b/libgcab/gcab-folder.c
index fc9b389..174a5c6 100644
--- a/libgcab/gcab-folder.c
+++ b/libgcab/gcab-folder.c
@@ -210,6 +210,14 @@ add_file (GCabFolder *self, GCabFile *file, GError **error)
#define FILE_ATTRS "standard::*,time::modified"
+static gint
+_sort_cfiles (gconstpointer a, gconstpointer b)
+{
+ GCabFile *file_a = GCAB_FILE (a);
+ GCabFile *file_b = GCAB_FILE (b);
+ return g_strcmp0 (gcab_file_get_name (file_a), gcab_file_get_name (file_b));
+}
+
static gboolean
add_file_info (GCabFolder *self, GCabFile *file, GFileInfo *info,
const gchar *name, gboolean recurse, GError **error)
@@ -235,6 +243,10 @@ add_file_info (GCabFolder *self, GCabFile *file, GFileInfo *info,
g_object_unref (info);
return FALSE;
}
+
+ /* sort the files to avoid depending on filesystem order */
+ self->files = g_slist_sort (self->files, _sort_cfiles);
+
g_object_unref (info);
}