fix for fdflags loadable builtin; new strptime loadable builtin; enable -f doesn't fall back to current directory if using BASH_LOADABLES_PATH; new operator for rl_complete_internal that just dumps possible completions

This commit is contained in:
Chet Ramey
2023-11-24 12:39:17 -05:00
parent f491b93350
commit 55a224da44
35 changed files with 1613 additions and 1078 deletions
+18 -24
View File
@@ -347,38 +347,32 @@ dyn_load_builtin (WORD_LIST *list, int flags, char *filename)
#define RTLD_LAZY 1
#endif
handle = 0;
if (absolute_program (filename) == 0)
{
loadables_path = path_value ("BASH_LOADABLES_PATH", 1);
if (loadables_path)
{
load_path = find_in_path (filename, loadables_path, FS_NODIRS|FS_EXEC_PREFERRED);
if (load_path)
{
#if defined (_AIX)
handle = dlopen (load_path, RTLD_NOW|RTLD_GLOBAL);
# define DLFLAGS (RTLD_NOW|RTLD_GLOBAL)
#else
handle = dlopen (load_path, RTLD_LAZY);
# define DLFLAGS RTLD_LAZY
#endif /* !_AIX */
free (load_path);
}
handle = 0;
if (absolute_program (filename))
handle = dlopen (filename, DLFLAGS);
else if (loadables_path = path_value ("BASH_LOADABLES_PATH", 1))
{
/* If we have a loadables path, don't fall back to the current directory. */
load_path = find_in_path (filename, loadables_path, FS_NODIRS|FS_EXEC_PREFERRED);
if (load_path)
{
handle = dlopen (load_path, DLFLAGS);
free (load_path);
}
}
/* Fall back to current directory for now */
if (handle == 0)
else /* no loadables path, look in current directory */
{
char *openname;
openname = absolute_program (filename) ? filename : make_absolute (filename, ".");
#if defined (_AIX)
handle = dlopen (openname, RTLD_NOW|RTLD_GLOBAL);
#else
handle = dlopen (openname, RTLD_LAZY);
#endif /* !_AIX */
if (openname != filename)
free (openname);
openname = make_absolute (filename, ".");
handle = dlopen (openname, DLFLAGS);
free (openname);
}
if (handle == 0)