diff options
author | Corey Berla <corey@berla.me> | 2022-07-18 14:54:00 -0700 |
---|---|---|
committer | António Fernandes <antoniof@gnome.org> | 2022-07-20 15:43:48 +0000 |
commit | 5d5b67319a1a36acfcd2a0558303bba6a2bfc662 (patch) | |
tree | e48dc3ceba3d82b5e7555f0e555a1c911d1c4495 /src/nautilus-module.c | |
parent | 9b0fd698ea9ee4d94bb47334d5911a30425b7e70 (diff) | |
download | nautilus-5d5b67319a1a36acfcd2a0558303bba6a2bfc662.tar.gz |
module: Keep a list of currently installed modules
Diffstat (limited to 'src/nautilus-module.c')
-rw-r--r-- | src/nautilus-module.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/nautilus-module.c b/src/nautilus-module.c index 4bb46ee64..cd889ff18 100644 --- a/src/nautilus-module.c +++ b/src/nautilus-module.c @@ -56,6 +56,7 @@ struct _NautilusModuleClass }; static GList *module_objects = NULL; +static GStrv installed_module_names = NULL; static GType nautilus_module_get_type (void); @@ -187,7 +188,8 @@ add_module_objects (NautilusModule *module) } static NautilusModule * -nautilus_module_load_file (const char *filename) +nautilus_module_load_file (const char *filename, + GStrvBuilder *installed_module_name_builder) { NautilusModule *module; @@ -198,6 +200,7 @@ nautilus_module_load_file (const char *filename) { add_module_objects (module); g_type_module_unuse (G_TYPE_MODULE (module)); + g_strv_builder_add (installed_module_name_builder, filename); return module; } else @@ -207,11 +210,18 @@ nautilus_module_load_file (const char *filename) } } +char * +nautilus_module_get_installed_module_names () +{ + return g_strjoinv ("\n", installed_module_names); +} + static void load_module_dir (const char *dirname) { GDir *dir; + g_autoptr (GStrvBuilder) installed_module_name_builder = g_strv_builder_new (); dir = g_dir_open (dirname, 0, NULL); if (dir) @@ -227,13 +237,15 @@ load_module_dir (const char *dirname) filename = g_build_filename (dirname, name, NULL); - nautilus_module_load_file (filename); + nautilus_module_load_file (filename, installed_module_name_builder); g_free (filename); } } g_dir_close (dir); } + + installed_module_names = g_strv_builder_end (installed_module_name_builder); } static void @@ -248,6 +260,7 @@ free_module_objects (void) } g_list_free (module_objects); + g_strfreev (installed_module_names); } void |