* 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:
Vladimir 'phcoder' Serbinenko 2012-02-24 11:18:06 +01:00
parent b3e0862255
commit 274416e82f
7 changed files with 86 additions and 46 deletions

View file

@ -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;

View file

@ -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);

View file

@ -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)