Code

Sort plugins by filename
authorJeffrey Middleton <jefromi@gmail.com>
Mon, 9 Mar 2009 19:32:07 +0000 (14:32 -0500)
committerJeffrey Middleton <jefromi@gmail.com>
Mon, 9 Mar 2009 19:32:07 +0000 (14:32 -0500)
Although previously the plugins appeared to be sorted by filename, that
was only because they were installed in order by filename.  Now the
plugins are manually sorted by filename, providing for user modification
(new plugins, reordering of plugins).

src/plugin.c

index 6dc7bcce18bcf8040dc5244fc6fa90a033179220..0aa13b5c10c9a98ac8c4f6b1e9346d50a790cdf1 100644 (file)
@@ -72,6 +72,19 @@ register_plugin(struct plugin_list *list, char *path)
        return true;
 }
 
+static gint 
+plugin_compare_func_alpha(gconstpointer plugin1, gconstpointer plugin2)
+{
+       return strcmp(* (char * const *) plugin1, * (char * const *) plugin2);
+}
+
+static void
+plugin_list_sort(struct plugin_list *list, GCompareFunc compare_func)
+{
+       g_ptr_array_sort(list->plugins,
+                       compare_func);
+}
+
 bool
 plugin_list_load_directory(struct plugin_list *list, const char *path)
 {
@@ -92,6 +105,9 @@ plugin_list_load_directory(struct plugin_list *list, const char *path)
        }
 
        g_dir_close(dir);
+
+       plugin_list_sort(list, plugin_compare_func_alpha);
+
        return true;
 }