* grub-core/font/font.c (grub_font_load): Add support for default
path for fonts ($prefix/fonts). * grub-core/kern/corecmd.c (grub_core_cmd_insmod): Unify condition for checking if string is a path. * grub-core/normal/main.c (features): Add feature_default_font_path. * util/grub-mkconfig.in: Skip mangling of GRUB_FONT into GRUB_FONT_PATH. * util/grub.d/00_header.in: Use default directory if possible. * util/grub-install.in: Install unicode.pf2.
This commit is contained in:
parent
b3e0862255
commit
274416e82f
7 changed files with 86 additions and 46 deletions
|
@ -29,6 +29,7 @@
|
|||
#include <grub/charset.h>
|
||||
#include <grub/unicode.h>
|
||||
#include <grub/fontformat.h>
|
||||
#include <grub/env.h>
|
||||
|
||||
GRUB_MOD_LICENSE ("GPLv3+");
|
||||
|
||||
|
@ -433,7 +434,30 @@ grub_font_load (const char *filename)
|
|||
grub_printf ("add_font(%s)\n", filename);
|
||||
#endif
|
||||
|
||||
file = grub_buffile_open (filename, 1024);
|
||||
if (filename[0] == '(' || filename[0] == '/' || filename[0] == '+')
|
||||
file = grub_buffile_open (filename, 1024);
|
||||
else
|
||||
{
|
||||
const char *prefix = grub_env_get ("prefix");
|
||||
char *fullname, *ptr;
|
||||
if (!prefix)
|
||||
{
|
||||
grub_error (GRUB_ERR_FILE_NOT_FOUND, N_("variable `%s' isn't set"),
|
||||
"prefix");
|
||||
goto fail;
|
||||
}
|
||||
fullname = grub_malloc (grub_strlen (prefix) + grub_strlen (filename) + 1
|
||||
+ sizeof ("/fonts/") + sizeof (".pf2"));
|
||||
if (!fullname)
|
||||
goto fail;
|
||||
ptr = grub_stpcpy (fullname, prefix);
|
||||
ptr = grub_stpcpy (ptr, "/fonts/");
|
||||
ptr = grub_stpcpy (ptr, filename);
|
||||
ptr = grub_stpcpy (ptr, ".pf2");
|
||||
*ptr = 0;
|
||||
file = grub_buffile_open (fullname, 1024);
|
||||
grub_free (fullname);
|
||||
}
|
||||
if (!file)
|
||||
goto fail;
|
||||
|
||||
|
|
|
@ -79,17 +79,15 @@ static grub_err_t
|
|||
grub_core_cmd_insmod (struct grub_command *cmd __attribute__ ((unused)),
|
||||
int argc, char *argv[])
|
||||
{
|
||||
char *p;
|
||||
grub_dl_t mod;
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("one argument expected"));
|
||||
|
||||
p = grub_strchr (argv[0], '/');
|
||||
if (! p)
|
||||
mod = grub_dl_load (argv[0]);
|
||||
else
|
||||
if (argv[0][0] == '/' || argv[0][0] == '(' || argv[0][0] == '+')
|
||||
mod = grub_dl_load_file (argv[0]);
|
||||
else
|
||||
mod = grub_dl_load (argv[0]);
|
||||
|
||||
if (mod)
|
||||
grub_dl_ref (mod);
|
||||
|
|
|
@ -474,7 +474,8 @@ static grub_command_t cmd_clear;
|
|||
|
||||
static void (*grub_xputs_saved) (const char *str);
|
||||
static const char *features[] = {
|
||||
"feature_chainloader_bpb", "feature_ntldr", "feature_platform_search_hint"
|
||||
"feature_chainloader_bpb", "feature_ntldr", "feature_platform_search_hint",
|
||||
"feature_default_font_path"
|
||||
};
|
||||
|
||||
GRUB_MOD_INIT(normal)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue