summaryrefslogtreecommitdiff
path: root/src/nautilus-module.c
diff options
context:
space:
mode:
authorCorey Berla <corey@berla.me>2022-07-18 14:54:00 -0700
committerAntónio Fernandes <antoniof@gnome.org>2022-07-20 15:43:48 +0000
commit5d5b67319a1a36acfcd2a0558303bba6a2bfc662 (patch)
treee48dc3ceba3d82b5e7555f0e555a1c911d1c4495 /src/nautilus-module.c
parent9b0fd698ea9ee4d94bb47334d5911a30425b7e70 (diff)
downloadnautilus-5d5b67319a1a36acfcd2a0558303bba6a2bfc662.tar.gz
module: Keep a list of currently installed modules
Diffstat (limited to 'src/nautilus-module.c')
-rw-r--r--src/nautilus-module.c17
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