Improve gettext support. Stylistic fixes and error handling fixes while
on it.
This commit is contained in:
parent
215c90cb82
commit
9c4b5c13e6
184 changed files with 1175 additions and 959 deletions
|
@ -107,7 +107,7 @@ static const struct grub_arg_option freebsd_opts[] =
|
|||
{"nointr", 'n', 0, "", 0, 0},
|
||||
{"pause", 'p', 0, N_("Wait for keypress after every line of output."), 0, 0},
|
||||
{"quiet", 'q', 0, "", 0, 0},
|
||||
{"dfltroot", 'r', 0, N_("Use compiled-in rootdev."), 0, 0},
|
||||
{"dfltroot", 'r', 0, N_("Use compiled-in root device."), 0, 0},
|
||||
{"single", 's', 0, N_("Boot into single mode."), 0, 0},
|
||||
{"verbose", 'v', 0, N_("Boot with verbose messages."), 0, 0},
|
||||
{0, 0, 0, 0, 0, 0}
|
||||
|
@ -131,7 +131,11 @@ static const struct grub_arg_option openbsd_opts[] =
|
|||
{"kdb", 'd', 0, N_("Enter in KDB on boot."), 0, 0},
|
||||
{"root", 'r', 0, N_("Set root device."), "wdXY", ARG_TYPE_STRING},
|
||||
{"serial", 'h', GRUB_ARG_OPTION_OPTIONAL,
|
||||
N_("Use serial console."), N_("comUNIT[,SPEED]"), ARG_TYPE_STRING},
|
||||
N_("Use serial console."),
|
||||
/* TRANSLATORS: "com" is static and not to be translated. It refers to
|
||||
serial ports e.g. com1.
|
||||
*/
|
||||
N_("comUNIT[,SPEED]"), ARG_TYPE_STRING},
|
||||
{0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -157,10 +161,14 @@ static const struct grub_arg_option netbsd_opts[] =
|
|||
{"single", 's', 0, N_("Boot into single mode."), 0, 0},
|
||||
{"verbose", 'v', 0, N_("Boot with verbose messages."), 0, 0},
|
||||
{"debug", 'x', 0, N_("Boot with debug messages."), 0, 0},
|
||||
{"silent", 'z', 0, N_("Supress normal output (warnings remain)."), 0, 0},
|
||||
{"silent", 'z', 0, N_("Suppress normal output (warnings remain)."), 0, 0},
|
||||
{"root", 'r', 0, N_("Set root device."), N_("DEVICE"), ARG_TYPE_STRING},
|
||||
{"serial", 'h', GRUB_ARG_OPTION_OPTIONAL,
|
||||
N_("Use serial console."), N_("[ADDR|comUNIT][,SPEED]"), ARG_TYPE_STRING},
|
||||
N_("Use serial console."),
|
||||
/* TRANSLATORS: "com" is static and not to be translated. It refers to
|
||||
serial ports e.g. com1.
|
||||
*/
|
||||
N_("[ADDR|comUNIT][,SPEED]"), ARG_TYPE_STRING},
|
||||
{0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -1314,7 +1322,7 @@ grub_bsd_elf64_hook (Elf64_Phdr * phdr, grub_addr_t * addr, int *do_load)
|
|||
}
|
||||
|
||||
static grub_err_t
|
||||
grub_bsd_load_elf (grub_elf_t elf)
|
||||
grub_bsd_load_elf (grub_elf_t elf, const char *filename)
|
||||
{
|
||||
grub_err_t err;
|
||||
|
||||
|
@ -1326,7 +1334,8 @@ grub_bsd_load_elf (grub_elf_t elf)
|
|||
grub_relocator_chunk_t ch;
|
||||
|
||||
entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFF;
|
||||
err = grub_elf32_phdr_iterate (elf, grub_bsd_elf32_size_hook, NULL);
|
||||
err = grub_elf32_phdr_iterate (elf, filename,
|
||||
grub_bsd_elf32_size_hook, NULL);
|
||||
if (err)
|
||||
return err;
|
||||
err = grub_relocator_alloc_chunk_addr (relocator, &ch,
|
||||
|
@ -1336,12 +1345,12 @@ grub_bsd_load_elf (grub_elf_t elf)
|
|||
|
||||
kern_chunk_src = get_virtual_current_address (ch);
|
||||
|
||||
err = grub_elf32_load (elf, grub_bsd_elf32_hook, 0, 0);
|
||||
err = grub_elf32_load (elf, filename, grub_bsd_elf32_hook, 0, 0);
|
||||
if (err)
|
||||
return err;
|
||||
if (kernel_type != KERNEL_TYPE_OPENBSD)
|
||||
return GRUB_ERR_NONE;
|
||||
return grub_openbsd_find_ramdisk32 (elf->file, kern_start,
|
||||
return grub_openbsd_find_ramdisk32 (elf->file, filename, kern_start,
|
||||
kern_chunk_src, &openbsd_ramdisk);
|
||||
}
|
||||
else if (grub_elf_is_elf64 (elf))
|
||||
|
@ -1363,7 +1372,8 @@ grub_bsd_load_elf (grub_elf_t elf)
|
|||
entry_hi = 0;
|
||||
}
|
||||
|
||||
err = grub_elf64_phdr_iterate (elf, grub_bsd_elf64_size_hook, NULL);
|
||||
err = grub_elf64_phdr_iterate (elf, filename,
|
||||
grub_bsd_elf64_size_hook, NULL);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -1379,16 +1389,17 @@ grub_bsd_load_elf (grub_elf_t elf)
|
|||
kern_chunk_src = get_virtual_current_address (ch);
|
||||
}
|
||||
|
||||
err = grub_elf64_load (elf, grub_bsd_elf64_hook, 0, 0);
|
||||
err = grub_elf64_load (elf, filename,
|
||||
grub_bsd_elf64_hook, 0, 0);
|
||||
if (err)
|
||||
return err;
|
||||
if (kernel_type != KERNEL_TYPE_OPENBSD)
|
||||
return GRUB_ERR_NONE;
|
||||
return grub_openbsd_find_ramdisk64 (elf->file, kern_start,
|
||||
return grub_openbsd_find_ramdisk64 (elf->file, filename, kern_start,
|
||||
kern_chunk_src, &openbsd_ramdisk);
|
||||
}
|
||||
else
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid ELF");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch dependent ELF magic"));
|
||||
}
|
||||
|
||||
static grub_err_t
|
||||
|
@ -1405,7 +1416,7 @@ grub_bsd_load (int argc, char *argv[])
|
|||
|
||||
if (argc == 0)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "no kernel specified");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -1420,11 +1431,11 @@ grub_bsd_load (int argc, char *argv[])
|
|||
goto fail;
|
||||
}
|
||||
|
||||
elf = grub_elf_file (file);
|
||||
elf = grub_elf_file (file, argv[0]);
|
||||
if (elf)
|
||||
{
|
||||
is_elf_kernel = 1;
|
||||
grub_bsd_load_elf (elf);
|
||||
grub_bsd_load_elf (elf, argv[0]);
|
||||
grub_elf_close (elf);
|
||||
}
|
||||
else
|
||||
|
@ -1491,9 +1502,11 @@ grub_cmd_freebsd (grub_extcmd_context_t ctxt, int argc, char *argv[])
|
|||
return grub_errno;
|
||||
|
||||
if (is_64bit)
|
||||
err = grub_freebsd_load_elf_meta64 (relocator, file, &kern_end);
|
||||
err = grub_freebsd_load_elf_meta64 (relocator, file, argv[0],
|
||||
&kern_end);
|
||||
else
|
||||
err = grub_freebsd_load_elf_meta32 (relocator, file, &kern_end);
|
||||
err = grub_freebsd_load_elf_meta32 (relocator, file, argv[0],
|
||||
&kern_end);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -1625,9 +1638,9 @@ grub_cmd_netbsd (grub_extcmd_context_t ctxt, int argc, char *argv[])
|
|||
return grub_errno;
|
||||
|
||||
if (is_64bit)
|
||||
err = grub_netbsd_load_elf_meta64 (relocator, file, &kern_end);
|
||||
err = grub_netbsd_load_elf_meta64 (relocator, file, argv[0], &kern_end);
|
||||
else
|
||||
err = grub_netbsd_load_elf_meta32 (relocator, file, &kern_end);
|
||||
err = grub_netbsd_load_elf_meta32 (relocator, file, argv[0], &kern_end);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
@ -1717,7 +1730,7 @@ grub_cmd_freebsd_loadenv (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
if (! grub_loader_is_loaded ())
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
"you need to load the kernel first");
|
||||
N_("you need to load the kernel first"));
|
||||
|
||||
if (kernel_type != KERNEL_TYPE_FREEBSD)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
|
@ -1725,7 +1738,7 @@ grub_cmd_freebsd_loadenv (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
if (argc == 0)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "no filename");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -1950,7 +1963,7 @@ grub_cmd_freebsd_module_elf (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
if (! grub_loader_is_loaded ())
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
"you need to load the kernel first");
|
||||
N_("you need to load the kernel first"));
|
||||
|
||||
if (kernel_type != KERNEL_TYPE_FREEBSD)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT,
|
||||
|
@ -1995,7 +2008,7 @@ grub_cmd_openbsd_ramdisk (grub_command_t cmd __attribute__ ((unused)),
|
|||
grub_size_t size;
|
||||
|
||||
if (argc != 1)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
if (kernel_type != KERNEL_TYPE_OPENBSD)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "no kOpenBSD loaded");
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
#include <grub/elf.h>
|
||||
#include <grub/misc.h>
|
||||
#include <grub/i386/relocator.h>
|
||||
#include <grub/i18n.h>
|
||||
|
||||
#define ALIGN_PAGE(a) ALIGN_UP (a, 4096)
|
||||
|
||||
static inline grub_err_t
|
||||
load (grub_file_t file, void *where, grub_off_t off, grub_size_t size)
|
||||
load (grub_file_t file, const char *filename, void *where, grub_off_t off, grub_size_t size)
|
||||
{
|
||||
if (grub_file_seek (file, off) == (grub_off_t) -1)
|
||||
return grub_errno;
|
||||
|
@ -16,14 +17,14 @@ load (grub_file_t file, void *where, grub_off_t off, grub_size_t size)
|
|||
{
|
||||
if (grub_errno)
|
||||
return grub_errno;
|
||||
else
|
||||
return grub_error (GRUB_ERR_BAD_OS, "file is truncated");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
}
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
static inline grub_err_t
|
||||
read_headers (grub_file_t file, Elf_Ehdr *e, char **shdr)
|
||||
read_headers (grub_file_t file, const char *filename, Elf_Ehdr *e, char **shdr)
|
||||
{
|
||||
if (grub_file_seek (file, 0) == (grub_off_t) -1)
|
||||
return grub_errno;
|
||||
|
@ -32,8 +33,8 @@ read_headers (grub_file_t file, Elf_Ehdr *e, char **shdr)
|
|||
{
|
||||
if (grub_errno)
|
||||
return grub_errno;
|
||||
else
|
||||
return grub_error (GRUB_ERR_BAD_OS, "file is too short");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
}
|
||||
|
||||
if (e->e_ident[EI_MAG0] != ELFMAG0
|
||||
|
@ -42,10 +43,10 @@ read_headers (grub_file_t file, Elf_Ehdr *e, char **shdr)
|
|||
|| e->e_ident[EI_MAG3] != ELFMAG3
|
||||
|| e->e_ident[EI_VERSION] != EV_CURRENT
|
||||
|| e->e_version != EV_CURRENT)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid arch independent ELF magic");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch independent ELF magic"));
|
||||
|
||||
if (e->e_ident[EI_CLASS] != SUFFIX (ELFCLASS))
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid arch dependent ELF magic");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("invalid arch dependent ELF magic"));
|
||||
|
||||
*shdr = grub_malloc (e->e_shnum * e->e_shentsize);
|
||||
if (! *shdr)
|
||||
|
@ -59,8 +60,8 @@ read_headers (grub_file_t file, Elf_Ehdr *e, char **shdr)
|
|||
{
|
||||
if (grub_errno)
|
||||
return grub_errno;
|
||||
else
|
||||
return grub_error (GRUB_ERR_BAD_OS, "file is truncated");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
}
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
|
@ -83,7 +84,7 @@ SUFFIX (grub_freebsd_load_elfmodule_obj) (struct grub_relocator *relocator,
|
|||
grub_size_t chunk_size = 0;
|
||||
void *chunk_src;
|
||||
|
||||
err = read_headers (file, &e, &shdr);
|
||||
err = read_headers (file, argv[0], &e, &shdr);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -131,7 +132,7 @@ SUFFIX (grub_freebsd_load_elfmodule_obj) (struct grub_relocator *relocator,
|
|||
{
|
||||
default:
|
||||
case SHT_PROGBITS:
|
||||
err = load (file, (grub_uint8_t *) chunk_src + curload - *kern_end,
|
||||
err = load (file, argv[0], (grub_uint8_t *) chunk_src + curload - *kern_end,
|
||||
s->sh_offset, s->sh_size);
|
||||
if (err)
|
||||
return err;
|
||||
|
@ -176,7 +177,7 @@ SUFFIX (grub_freebsd_load_elfmodule) (struct grub_relocator *relocator,
|
|||
grub_size_t chunk_size = 0;
|
||||
void *chunk_src;
|
||||
|
||||
err = read_headers (file, &e, &shdr);
|
||||
err = read_headers (file, argv[0], &e, &shdr);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -229,7 +230,8 @@ SUFFIX (grub_freebsd_load_elfmodule) (struct grub_relocator *relocator,
|
|||
{
|
||||
default:
|
||||
case SHT_PROGBITS:
|
||||
err = load (file, (grub_uint8_t *) chunk_src + module
|
||||
err = load (file, argv[0],
|
||||
(grub_uint8_t *) chunk_src + module
|
||||
+ s->sh_addr - *kern_end,
|
||||
s->sh_offset, s->sh_size);
|
||||
if (err)
|
||||
|
@ -244,16 +246,16 @@ SUFFIX (grub_freebsd_load_elfmodule) (struct grub_relocator *relocator,
|
|||
curload = module + s->sh_addr + s->sh_size;
|
||||
}
|
||||
|
||||
load (file, (grub_uint8_t *) chunk_src + module - *kern_end, 0, sizeof (e));
|
||||
load (file, argv[0], (grub_uint8_t *) chunk_src + module - *kern_end, 0, sizeof (e));
|
||||
if (curload < module + sizeof (e))
|
||||
curload = module + sizeof (e);
|
||||
|
||||
load (file, (grub_uint8_t *) chunk_src + curload - *kern_end, e.e_shoff,
|
||||
load (file, argv[0], (grub_uint8_t *) chunk_src + curload - *kern_end, e.e_shoff,
|
||||
e.e_shnum * e.e_shentsize);
|
||||
e.e_shoff = curload - module;
|
||||
curload += e.e_shnum * e.e_shentsize;
|
||||
|
||||
load (file, (grub_uint8_t *) chunk_src + curload - *kern_end, e.e_phoff,
|
||||
load (file, argv[0], (grub_uint8_t *) chunk_src + curload - *kern_end, e.e_phoff,
|
||||
e.e_phnum * e.e_phentsize);
|
||||
e.e_phoff = curload - module;
|
||||
curload += e.e_phnum * e.e_phentsize;
|
||||
|
@ -263,14 +265,16 @@ SUFFIX (grub_freebsd_load_elfmodule) (struct grub_relocator *relocator,
|
|||
grub_freebsd_add_meta_module (argv[0], FREEBSD_MODTYPE_ELF_MODULE,
|
||||
argc - 1, argv + 1, module,
|
||||
curload - module);
|
||||
return SUFFIX (grub_freebsd_load_elf_meta) (relocator, file, kern_end);
|
||||
return SUFFIX (grub_freebsd_load_elf_meta) (relocator, file, argv[0], kern_end);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
grub_err_t
|
||||
SUFFIX (grub_freebsd_load_elf_meta) (struct grub_relocator *relocator,
|
||||
grub_file_t file, grub_addr_t *kern_end)
|
||||
grub_file_t file,
|
||||
const char *filename,
|
||||
grub_addr_t *kern_end)
|
||||
{
|
||||
grub_err_t err;
|
||||
Elf_Ehdr e;
|
||||
|
@ -286,7 +290,7 @@ SUFFIX (grub_freebsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
unsigned i;
|
||||
grub_size_t chunk_size;
|
||||
|
||||
err = read_headers (file, &e, &shdr);
|
||||
err = read_headers (file, filename, &e, &shdr);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -303,7 +307,7 @@ SUFFIX (grub_freebsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
break;
|
||||
if (s >= (Elf_Shdr *) ((char *) shdr
|
||||
+ e.e_shnum * e.e_shentsize))
|
||||
return grub_error (GRUB_ERR_BAD_OS, "no symbol table");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("no symbol table"));
|
||||
symoff = s->sh_offset;
|
||||
symsize = s->sh_size;
|
||||
symentsize = s->sh_entsize;
|
||||
|
@ -338,7 +342,8 @@ SUFFIX (grub_freebsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
if (grub_file_read (file, curload, symsize) != (grub_ssize_t) symsize)
|
||||
{
|
||||
if (! grub_errno)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid ELF");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
return grub_errno;
|
||||
}
|
||||
curload += symsize;
|
||||
|
@ -351,7 +356,8 @@ SUFFIX (grub_freebsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
if (grub_file_read (file, curload, strsize) != (grub_ssize_t) strsize)
|
||||
{
|
||||
if (! grub_errno)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid ELF");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
|
@ -394,7 +400,8 @@ SUFFIX (grub_freebsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
|
||||
grub_err_t
|
||||
SUFFIX (grub_netbsd_load_elf_meta) (struct grub_relocator *relocator,
|
||||
grub_file_t file, grub_addr_t *kern_end)
|
||||
grub_file_t file, const char *filename,
|
||||
grub_addr_t *kern_end)
|
||||
{
|
||||
grub_err_t err;
|
||||
Elf_Ehdr e;
|
||||
|
@ -408,7 +415,7 @@ SUFFIX (grub_netbsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
struct grub_netbsd_btinfo_symtab symtab;
|
||||
grub_addr_t symtarget;
|
||||
|
||||
err = read_headers (file, &e, &shdr);
|
||||
err = read_headers (file, filename, &e, &shdr);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -479,7 +486,8 @@ SUFFIX (grub_netbsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
if (grub_file_read (file, curload, symsize) != (grub_ssize_t) symsize)
|
||||
{
|
||||
if (! grub_errno)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid ELF");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
return grub_errno;
|
||||
}
|
||||
curload += ALIGN_UP (symsize, sizeof (grub_freebsd_addr_t));
|
||||
|
@ -489,7 +497,8 @@ SUFFIX (grub_netbsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
if (grub_file_read (file, curload, strsize) != (grub_ssize_t) strsize)
|
||||
{
|
||||
if (! grub_errno)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid ELF");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
|
@ -506,6 +515,7 @@ SUFFIX (grub_netbsd_load_elf_meta) (struct grub_relocator *relocator,
|
|||
|
||||
grub_err_t
|
||||
SUFFIX(grub_openbsd_find_ramdisk) (grub_file_t file,
|
||||
const char *filename,
|
||||
grub_addr_t kern_start,
|
||||
void *kern_chunk_src,
|
||||
struct grub_openbsd_ramdisk_descriptor *desc)
|
||||
|
@ -518,7 +528,7 @@ SUFFIX(grub_openbsd_find_ramdisk) (grub_file_t file,
|
|||
Elf_Shdr *s;
|
||||
char *shdr = NULL;
|
||||
|
||||
err = read_headers (file, &e, &shdr);
|
||||
err = read_headers (file, filename, &e, &shdr);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
@ -560,7 +570,8 @@ SUFFIX(grub_openbsd_find_ramdisk) (grub_file_t file,
|
|||
{
|
||||
grub_free (syms);
|
||||
if (! grub_errno)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid ELF");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
|
@ -578,7 +589,8 @@ SUFFIX(grub_openbsd_find_ramdisk) (grub_file_t file,
|
|||
grub_free (syms);
|
||||
grub_free (strs);
|
||||
if (! grub_errno)
|
||||
return grub_error (GRUB_ERR_BAD_OS, "invalid ELF");
|
||||
return grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ grub_cmd_chain (grub_command_t cmd __attribute__ ((unused)),
|
|||
grub_elf_t elf;
|
||||
|
||||
if (argc != 1)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "filename expected");
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
grub_loader_unset ();
|
||||
|
||||
|
@ -103,7 +103,7 @@ grub_cmd_chain (grub_command_t cmd __attribute__ ((unused)),
|
|||
return grub_errno;
|
||||
}
|
||||
|
||||
elf = grub_elf_file (file);
|
||||
elf = grub_elf_file (file, argv[0]);
|
||||
if (!elf)
|
||||
{
|
||||
grub_relocator_unload (relocator);
|
||||
|
@ -120,7 +120,7 @@ grub_cmd_chain (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
entry = elf->ehdr.ehdr32.e_entry & 0xFFFFFF;
|
||||
|
||||
err = grub_elf32_load (elf, grub_chain_elf32_hook, 0, 0);
|
||||
err = grub_elf32_load (elf, argv[0], grub_chain_elf32_hook, 0, 0);
|
||||
|
||||
grub_elf_close (elf);
|
||||
if (err)
|
||||
|
@ -135,7 +135,12 @@ static grub_command_t cmd_chain;
|
|||
GRUB_MOD_INIT (chain)
|
||||
{
|
||||
cmd_chain = grub_register_command ("chainloader", grub_cmd_chain,
|
||||
N_("FILE"), N_("Load another payload"));
|
||||
N_("FILE"),
|
||||
/* TRANSLATORS: "payload" is a term used
|
||||
by coreboot and must be translated in
|
||||
sync with coreboot. If unsure,
|
||||
let it untranslated. */
|
||||
N_("Load another coreboot payload"));
|
||||
}
|
||||
|
||||
GRUB_MOD_FINI (chain)
|
||||
|
|
|
@ -639,7 +639,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
if (argc == 0)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "no kernel specified");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -650,7 +650,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_READ_ERROR, N_("premature end of file %s"),
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
goto fail;
|
||||
}
|
||||
|
@ -720,7 +720,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
if (grub_file_read (file, (char *) real_mode_mem + sizeof (lh), len) != len)
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"),
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
goto fail;
|
||||
}
|
||||
|
@ -913,7 +913,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
len = prot_size;
|
||||
if (grub_file_read (file, prot_mode_mem, len) != len && !grub_errno)
|
||||
grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"),
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
|
@ -953,13 +953,13 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
if (argc == 0)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "no module specified");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (! loaded)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "you need to load the kernel first");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("you need to load the kernel first"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include <grub/video.h>
|
||||
#include <grub/file.h>
|
||||
#include <grub/net.h>
|
||||
#include <grub/i18n.h>
|
||||
|
||||
/* The bits in the required part of flags field we don't support. */
|
||||
#define UNSUPPORTED_FLAGS 0x0000fff8
|
||||
|
@ -60,7 +61,7 @@ static void *elf_sections;
|
|||
|
||||
|
||||
grub_err_t
|
||||
grub_multiboot_load (grub_file_t file)
|
||||
grub_multiboot_load (grub_file_t file, const char *filename)
|
||||
{
|
||||
char *buffer;
|
||||
grub_ssize_t len;
|
||||
|
@ -75,7 +76,10 @@ grub_multiboot_load (grub_file_t file)
|
|||
if (len < 32)
|
||||
{
|
||||
grub_free (buffer);
|
||||
return grub_error (GRUB_ERR_BAD_OS, "file too small");
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
return grub_errno;
|
||||
}
|
||||
|
||||
/* Look for the multiboot header in the buffer. The header should
|
||||
|
@ -149,7 +153,7 @@ grub_multiboot_load (grub_file_t file)
|
|||
}
|
||||
else
|
||||
{
|
||||
err = grub_multiboot_load_elf (file, buffer);
|
||||
err = grub_multiboot_load_elf (file, filename, buffer);
|
||||
if (err)
|
||||
{
|
||||
grub_free (buffer);
|
||||
|
|
|
@ -182,8 +182,9 @@ grub_chainloader_cmd (const char *filename, grub_chainloader_flags_t flags)
|
|||
if (grub_file_read (file, bs, GRUB_DISK_SECTOR_SIZE)
|
||||
!= GRUB_DISK_SECTOR_SIZE)
|
||||
{
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
grub_error (GRUB_ERR_BAD_OS, "too small");
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
filename);
|
||||
|
||||
goto fail;
|
||||
}
|
||||
|
@ -270,9 +271,9 @@ grub_cmd_chainloader (grub_command_t cmd __attribute__ ((unused)),
|
|||
}
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no file specified");
|
||||
else
|
||||
grub_chainloader_cmd (argv[0], flags);
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
grub_chainloader_cmd (argv[0], flags);
|
||||
|
||||
return grub_errno;
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ grub_cmd_freedos (grub_command_t cmd __attribute__ ((unused)),
|
|||
grub_size_t kernelsyssize;
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no file specified");
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
if (argc == 0)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "no kernel specified");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -109,7 +109,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
if (grub_file_read (file, &lh, sizeof (lh)) != sizeof (lh))
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_READ_ERROR, N_("premature end of file %s"),
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
goto fail;
|
||||
}
|
||||
|
@ -286,7 +286,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
if (grub_file_read (file, grub_linux_real_chunk + sizeof (lh), len) != len)
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"),
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
goto fail;
|
||||
}
|
||||
|
@ -326,7 +326,7 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)),
|
|||
len = grub_linux16_prot_size;
|
||||
if (grub_file_read (file, grub_linux_prot_chunk, grub_linux16_prot_size)
|
||||
!= (grub_ssize_t) grub_linux16_prot_size && !grub_errno)
|
||||
grub_error (GRUB_ERR_FILE_READ_ERROR, N_("premature end of file %s"),
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
|
||||
if (grub_errno == GRUB_ERR_NONE)
|
||||
|
@ -366,13 +366,13 @@ grub_cmd_initrd (grub_command_t cmd __attribute__ ((unused)),
|
|||
|
||||
if (argc == 0)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "no module specified");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!loaded)
|
||||
{
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, "you need to load the kernel first");
|
||||
grub_error (GRUB_ERR_BAD_ARGUMENT, N_("you need to load the kernel first"));
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ grub_cmd_ntldr (grub_command_t cmd __attribute__ ((unused)),
|
|||
grub_device_t dev;
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no file specified");
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
|
|
|
@ -340,7 +340,7 @@ grub_cmd_plan9 (grub_extcmd_context_t ctxt, int argc, char *argv[])
|
|||
}
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no file specified");
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
|
@ -384,7 +384,12 @@ grub_cmd_plan9 (grub_extcmd_context_t ctxt, int argc, char *argv[])
|
|||
goto fail;
|
||||
|
||||
if (grub_file_read (file, &hdr, sizeof (hdr)) != (grub_ssize_t) sizeof (hdr))
|
||||
goto fail;
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (grub_be_to_cpu32 (hdr.magic) != GRUB_PLAN9_MAGIC
|
||||
|| hdr.zero)
|
||||
|
@ -462,7 +467,12 @@ grub_cmd_plan9 (grub_extcmd_context_t ctxt, int argc, char *argv[])
|
|||
|
||||
if (grub_file_read (file, ptr, grub_be_to_cpu32 (hdr.text_size))
|
||||
!= (grub_ssize_t) grub_be_to_cpu32 (hdr.text_size))
|
||||
goto fail;
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
goto fail;
|
||||
}
|
||||
ptr += grub_be_to_cpu32 (hdr.text_size);
|
||||
padsize = ALIGN_UP (grub_be_to_cpu32 (hdr.text_size) + sizeof (hdr),
|
||||
GRUB_PLAN9_ALIGN) - grub_be_to_cpu32 (hdr.text_size)
|
||||
|
@ -473,7 +483,12 @@ grub_cmd_plan9 (grub_extcmd_context_t ctxt, int argc, char *argv[])
|
|||
|
||||
if (grub_file_read (file, ptr, grub_be_to_cpu32 (hdr.data_size))
|
||||
!= (grub_ssize_t) grub_be_to_cpu32 (hdr.data_size))
|
||||
goto fail;
|
||||
{
|
||||
if (!grub_errno)
|
||||
grub_error (GRUB_ERR_BAD_OS, N_("premature end of file %s"),
|
||||
argv[0]);
|
||||
goto fail;
|
||||
}
|
||||
ptr += grub_be_to_cpu32 (hdr.data_size);
|
||||
padsize = ALIGN_UP (grub_be_to_cpu32 (hdr.data_size), GRUB_PLAN9_ALIGN)
|
||||
- grub_be_to_cpu32 (hdr.data_size);
|
||||
|
|
|
@ -91,7 +91,7 @@ grub_cmd_pxechain (grub_command_t cmd __attribute__ ((unused)),
|
|||
char *fname;
|
||||
|
||||
if (argc == 0)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "no file specified");
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
grub_dl_ref (my_mod);
|
||||
|
||||
|
|
|
@ -534,12 +534,11 @@ grub_cmd_devprop_load (grub_command_t cmd __attribute__ ((unused)),
|
|||
unsigned i, j;
|
||||
|
||||
if (argc != 1)
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
|
||||
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
|
||||
|
||||
file = grub_file_open (args[0]);
|
||||
if (! file)
|
||||
return grub_error (GRUB_ERR_FILE_NOT_FOUND,
|
||||
"couldn't load device-properties dump");
|
||||
return grub_errno;
|
||||
size = grub_file_size (file);
|
||||
buf = grub_malloc (size);
|
||||
if (!buf)
|
||||
|
@ -849,7 +848,6 @@ static grub_err_t
|
|||
grub_xnu_set_video (struct grub_xnu_boot_params *params)
|
||||
{
|
||||
struct grub_video_mode_info mode_info;
|
||||
int ret;
|
||||
char *tmp;
|
||||
const char *modevar;
|
||||
void *framebuffer;
|
||||
|
@ -878,9 +876,9 @@ grub_xnu_set_video (struct grub_xnu_boot_params *params)
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
ret = grub_video_get_info (&mode_info);
|
||||
if (ret)
|
||||
return grub_error (GRUB_ERR_IO, "couldn't retrieve video parameters");
|
||||
err = grub_video_get_info (&mode_info);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (grub_xnu_bitmap)
|
||||
{
|
||||
|
@ -932,9 +930,9 @@ grub_xnu_set_video (struct grub_xnu_boot_params *params)
|
|||
bitmap = 0;
|
||||
}
|
||||
|
||||
ret = grub_video_get_info_and_fini (&mode_info, &framebuffer);
|
||||
if (ret)
|
||||
return grub_error (GRUB_ERR_IO, "couldn't retrieve video parameters");
|
||||
err = grub_video_get_info_and_fini (&mode_info, &framebuffer);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
params->lfb_width = mode_info.width;
|
||||
params->lfb_height = mode_info.height;
|
||||
|
@ -1129,7 +1127,10 @@ grub_cpu_xnu_init (void)
|
|||
{
|
||||
cmd_devprop_load = grub_register_command ("xnu_devprop_load",
|
||||
grub_cmd_devprop_load,
|
||||
0, N_("Load device-properties dump."));
|
||||
/* TRANSLATORS: `device-properties'
|
||||
is a variable name,
|
||||
not a program. */
|
||||
0, N_("Load `device-properties' dump."));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue