From fb40cafa5a71420007d97480ff39350e6df396f1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Sat, 19 Jun 2010 11:19:37 +0100 Subject: [PATCH] registry: also skip .deps dirs when scanning for plugins No need to descend into .deps dirs in uninstalled setups, we know these don't contain any plugins. --- gst/gstregistry.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/gst/gstregistry.c b/gst/gstregistry.c index 7758fc7..71f52b4 100644 --- a/gst/gstregistry.c +++ b/gst/gstregistry.c @@ -1073,6 +1073,25 @@ gst_registry_scan_plugin_file (GstRegistryScanContext * context, } static gboolean +is_blacklisted_hidden_directory (const gchar * dirent) +{ + if (G_LIKELY (dirent[0] != '.')) + return FALSE; + + /* skip the .debug directory, these contain elf files that are not + * useful or worse, can crash dlopen () */ + if (strcmp (dirent, ".debug") == 0) + return TRUE; + + /* can also skip .git and .deps dirs, those won't contain useful files. + * This speeds up scanning a bit in uninstalled setups. */ + if (strcmp (dirent, ".git") == 0 || strcmp (dirent, ".deps") == 0) + return TRUE; + + return FALSE; +} + +static gboolean gst_registry_scan_path_level (GstRegistryScanContext * context, const gchar * path, int level) { @@ -1098,12 +1117,8 @@ gst_registry_scan_path_level (GstRegistryScanContext * context, } if (file_status.st_mode & S_IFDIR) { - /* skip the .debug directory, these contain elf files that are not - * useful or worse, can crash dlopen (). do a quick check for the . first - * and then call the compare functions. */ - if (G_UNLIKELY (dirent[0] == '.' && (g_str_equal (dirent, ".debug") - || g_str_equal (dirent, ".git")))) { - GST_LOG_OBJECT (context->registry, "ignoring .debug or .git directory"); + if (G_UNLIKELY (is_blacklisted_hidden_directory (dirent))) { + GST_LOG_OBJECT (context->registry, "ignoring %s directory", dirent); g_free (filename); continue; } -- 2.7.4