Allow Nautilus to search for extensions in the directories listed in $NAUTILUS_EXTENSION_PATH. diff --git a/src/nautilus-module.c b/src/nautilus-module.c index bf474bd..42e2a4e 100644 --- a/src/nautilus-module.c +++ b/src/nautilus-module.c @@ -211,6 +211,10 @@ static void load_module_dir (const char *dirname) { GDir *dir; + static GHashTable *loaded = NULL; + + if (loaded == NULL) + loaded = g_hash_table_new (g_str_hash, g_str_equal); dir = g_dir_open (dirname, 0, NULL); @@ -221,15 +225,22 @@ load_module_dir (const char *dirname) while ((name = g_dir_read_name (dir))) { if (g_str_has_suffix (name, "." G_MODULE_SUFFIX)) - { - char *filename; - - filename = g_build_filename (dirname, - name, - NULL); - nautilus_module_load_file (filename); - g_free (filename); - } + { + /* Make sure each module is loaded only twice or this could + lead to a crash. Double loading can occur if DIRNAME + occurs more than once in $NAUTILUS_EXTENSION_PATH. */ + if (!g_hash_table_contains (loaded, name)) + { + char *filename; + + filename = g_build_filename (dirname, + name, + NULL); + nautilus_module_load_file (filename); + g_hash_table_add (loaded, g_strdup (name)); + g_free (filename); + } + } } g_dir_close (dir); @@ -257,10 +268,24 @@ nautilus_module_setup (void) if (!initialized) { + const gchar *extension_path; initialized = TRUE; load_module_dir (NAUTILUS_EXTENSIONDIR); + /* Load additional modules from the user-provided search path. */ + extension_path = g_getenv ("NAUTILUS_EXTENSION_PATH"); + if (extension_path) + { + char **extension_dirs, **d; + + extension_dirs = g_strsplit (extension_path, ":", -1); + for (d = extension_dirs; d != NULL && *d != NULL; d++) + load_module_dir (*d); + + g_strfreev (extension_dirs); + } + eel_debug_call_at_shutdown (free_module_objects); } } d=10612d61540228d48c998ba5b56f50da22534157'>packages/dbm.scm
AgeCommit message (Expand)Author
2020-11-09gnu: bdb: Download using HTTPS....* gnu/packages/dbm.scm (bdb)[source]: Switch URI to https. (bdb-5.3, bdb-6)[source]: Same. Efraim Flashner
2019-12-05gnu: gdbm: Do not build static libraries....* gnu/packages/dbm.scm (gdbm)[arguments]: Add "--disable-static" to #:configure-flags. Marius Bakke
2019-11-15gnu: bdb: Fix cross-compilation....* gnu/packages/dbm.scm (bdb-4.8)[arguments]: Pass host argument to configure when cross-compiling. Mathieu Othacehe
2019-07-08gnu: bdb: Add 4.8.30....* gnu/packages/dbm.scm (bdb-4.8): New variable. [arguments]: Configure and build from 'build_unix' directory as mentioned in documentation. (bdb-5.3): Inherit from bdb-4.8. (bdb-6): Inherit from bdb-4.8. (bdb): Point to bdb-6. Carl Dong
2019-02-11gnu: gdbm: Update to 1.18.1....* gnu/packages/dbm.scm (gdbm): Update to 1.18.1. Marius Bakke
2019-01-16gnu: Move dbm databases to new module....* gnu/packages/databases.scm (gdbm, bdb, bdb-5.3): Move from here... * gnu/packages/dbm.scm: ...to this new module. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/packages/audio.scm, gnu/packages/avahi.scm, gnu/packages/backup.scm, gnu/packages/cobol.scm, gnu/packages/cyrus-sasl.scm, gnu/packages/databases.scm, gnu/packages/finance.scm, gnu/packages/game-development.scm, gnu/packages/gnome.scm, gnu/packages/guile.scm, gnu/packages/ibus.scm, gnu/packages/kerberos.scm, gnu/packages/linux.scm, gnu/packages/mail.scm, gnu/packages/man.scm, gnu/packages/nvi.scm, gnu/packages/openldap.scm, gnu/packages/package-management.scm, gnu/packages/php.scm, gnu/packages/pulseaudio.scm, gnu/packages/python.scm, gnu/packages/rdf.scm, gnu/packages/ruby.scm, gnu/packages/sawfish.scm: Update module references. Ricardo Wurmus