util/grub-install: Allow recursive copying of theme dirs

grub-install allows to pass a parameter to install a theme in the boot partition.
This works fine for the default starfield theme. However, in general themes can
contain subdirectories, as, e.g. "icons", and these are not copied by grub-install.
As a result, the icons are missing on the screen.

Fix this by simple recursive copying.

Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Andreas K. Hüttel 2025-12-13 20:59:58 +01:00 committed by Daniel Kiper
parent f551d3de24
commit c477a95519

View File

@ -803,13 +803,20 @@ copy_all (const char *srcd,
|| strcmp (de->d_name, "..") == 0)
continue;
srcf = grub_util_path_concat (2, srcd, de->d_name);
if (grub_util_is_special_file (srcf)
|| grub_util_is_directory (srcf))
if (grub_util_is_special_file (srcf))
{
free (srcf);
continue;
}
dstf = grub_util_path_concat (2, dstd, de->d_name);
if (grub_util_is_directory (srcf))
{
grub_install_mkdir_p (dstf);
copy_all (srcf, dstf);
free (srcf);
free (dstf);
continue;
}
grub_install_compress_file (srcf, dstf, 1);
free (srcf);
free (dstf);