> Adding ($root) to config_file/config_directory if none present would be > good.
Like this? If configfile is relative pathname, extend it with current ($root) so its interpretation does not change if $root is changed later. Suggested by Vladimir Serbienko. --- grub-core/normal/main.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/grub-core/normal/main.c b/grub-core/normal/main.c index 991a595..84df360 100644 --- a/grub-core/normal/main.c +++ b/grub-core/normal/main.c @@ -190,14 +190,26 @@ read_config_file (const char *config) ctmp = grub_env_get ("config_directory"); if (ctmp) old_dir = grub_strdup (ctmp); - grub_env_set ("config_file", config); - config_dir = grub_strdup (config); + if (*config == '(') + { + grub_env_set ("config_file", config); + config_dir = grub_strdup (config); + } + else + { + /* $root is guranteed to be defined, otherwise open above would fail */ + config_dir = grub_xasprintf ("(%s)%s", grub_env_get ("root"), config); + if (config_dir) + grub_env_set ("config_file", config_dir); + } if (config_dir) - ptr = grub_strrchr (config_dir, '/'); - if (ptr) - *ptr = 0; - grub_env_set ("config_directory", config_dir); - grub_free (config_dir); + { + ptr = grub_strrchr (config_dir, '/'); + if (ptr) + *ptr = 0; + grub_env_set ("config_directory", config_dir); + grub_free (config_dir); + } grub_env_export ("config_file"); grub_env_export ("config_directory"); -- tg: (78b2b0a..) u/config_file_without_dir (depends on: master) _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel