mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 05:31:15 +00:00
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.
This commit is contained in:
parent
9ee11a2af4
commit
fb40cafa5a
1 changed files with 21 additions and 6 deletions
|
@ -1072,6 +1072,25 @@ gst_registry_scan_plugin_file (GstRegistryScanContext * context,
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
static gboolean
|
||||||
gst_registry_scan_path_level (GstRegistryScanContext * context,
|
gst_registry_scan_path_level (GstRegistryScanContext * context,
|
||||||
const gchar * path, int level)
|
const gchar * path, int level)
|
||||||
|
@ -1098,12 +1117,8 @@ gst_registry_scan_path_level (GstRegistryScanContext * context,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_status.st_mode & S_IFDIR) {
|
if (file_status.st_mode & S_IFDIR) {
|
||||||
/* skip the .debug directory, these contain elf files that are not
|
if (G_UNLIKELY (is_blacklisted_hidden_directory (dirent))) {
|
||||||
* useful or worse, can crash dlopen (). do a quick check for the . first
|
GST_LOG_OBJECT (context->registry, "ignoring %s directory", dirent);
|
||||||
* 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");
|
|
||||||
g_free (filename);
|
g_free (filename);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue