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