Improve gettext support. Stylistic fixes and error handling fixes while

on it.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2012-02-08 19:26:01 +01:00
parent 215c90cb82
commit 9c4b5c13e6
184 changed files with 1175 additions and 959 deletions

View file

@ -221,17 +221,17 @@ grub_xnu_writetree_toheap (grub_addr_t *target, grub_size_t *size)
driverkey = (struct grub_xnu_devtree_key *) grub_malloc (sizeof (*driverkey));
if (! driverkey)
return grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't write device tree");
return grub_errno;
driverkey->name = grub_strdup ("DeviceTree");
if (! driverkey->name)
return grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't write device tree");
return grub_errno;
driverkey->datasize = sizeof (*extdesc);
driverkey->next = memorymap->first_child;
memorymap->first_child = driverkey;
driverkey->data = extdesc
= (struct grub_xnu_extdesc *) grub_malloc (sizeof (*extdesc));
if (! driverkey->data)
return grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't write device tree");
return grub_errno;
/* Allocate the space based on the size with dummy value. */
*size = grub_xnu_writetree_get_size (grub_xnu_devtree_root, "/");
@ -269,15 +269,11 @@ grub_xnu_create_key (struct grub_xnu_devtree_key **parent, const char *name)
return ret;
ret = (struct grub_xnu_devtree_key *) grub_zalloc (sizeof (*ret));
if (! ret)
{
grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't create key %s", name);
return 0;
}
return 0;
ret->name = grub_strdup (name);
if (! ret->name)
{
grub_free (ret);
grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't create key %s", name);
return 0;
}
ret->datasize = -1;
@ -303,15 +299,11 @@ grub_xnu_create_value (struct grub_xnu_devtree_key **parent, const char *name)
}
ret = (struct grub_xnu_devtree_key *) grub_zalloc (sizeof (*ret));
if (! ret)
{
grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't create value %s", name);
return 0;
}
return 0;
ret->name = grub_strdup (name);
if (! ret->name)
{
grub_free (ret);
grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't create value %s", name);
return 0;
}
ret->next = *parent;
@ -351,7 +343,7 @@ grub_cmd_xnu_kernel (grub_command_t cmd __attribute__ ((unused)),
grub_addr_t loadaddr_target;
if (argc < 1)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
grub_xnu_unload ();
@ -391,7 +383,7 @@ grub_cmd_xnu_kernel (grub_command_t cmd __attribute__ ((unused)),
}
/* Load kernel. */
err = grub_macho_load32 (macho, (char *) loadaddr - startcode,
err = grub_macho_load32 (macho, args[0], (char *) loadaddr - startcode,
GRUB_MACHO_NOBSS);
if (err)
{
@ -461,7 +453,7 @@ grub_cmd_xnu_kernel64 (grub_command_t cmd __attribute__ ((unused)),
grub_addr_t loadaddr_target;
if (argc < 1)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
grub_xnu_unload ();
@ -504,7 +496,7 @@ grub_cmd_xnu_kernel64 (grub_command_t cmd __attribute__ ((unused)),
}
/* Load kernel. */
err = grub_macho_load64 (macho, (char *) loadaddr - startcode,
err = grub_macho_load64 (macho, args[0], (char *) loadaddr - startcode,
GRUB_MACHO_NOBSS);
if (err)
{
@ -573,7 +565,7 @@ grub_xnu_register_memory (const char *prefix, int *suffix,
struct grub_xnu_extdesc *extdesc;
if (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
chosen = grub_xnu_create_key (&grub_xnu_devtree_root, "chosen");
if (! chosen)
@ -584,24 +576,27 @@ grub_xnu_register_memory (const char *prefix, int *suffix,
driverkey = (struct grub_xnu_devtree_key *) grub_malloc (sizeof (*driverkey));
if (! driverkey)
return grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't register memory");
return grub_errno;
if (suffix)
{
driverkey->name = grub_xasprintf ("%s%d", prefix, (*suffix)++);
if (!driverkey->name)
return grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't register memory");
}
driverkey->name = grub_xasprintf ("%s%d", prefix, (*suffix)++);
else
driverkey->name = grub_strdup (prefix);
if (! driverkey->name)
return grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't register extension");
if (!driverkey->name)
{
grub_free (driverkey);
return grub_errno;
}
driverkey->datasize = sizeof (*extdesc);
driverkey->next = memorymap->first_child;
memorymap->first_child = driverkey;
driverkey->data = extdesc
= (struct grub_xnu_extdesc *) grub_malloc (sizeof (*extdesc));
if (! driverkey->data)
return grub_error (GRUB_ERR_OUT_OF_MEMORY, "can't register extension");
{
grub_free (driverkey->name);
grub_free (driverkey);
return grub_errno;
}
memorymap->first_child = driverkey;
extdesc->addr = addr;
extdesc->size = (grub_uint32_t) size;
return GRUB_ERR_NONE;
@ -637,7 +632,8 @@ get_name_ptr (char *name)
/* Load .kext. */
static grub_err_t
grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile)
grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile,
const char *filename)
{
grub_macho_t macho;
grub_err_t err;
@ -662,12 +658,12 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile)
neededspace += namelen + 1;
if (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
/* Compute the needed space. */
if (binaryfile)
{
macho = grub_macho_file (binaryfile);
macho = grub_macho_file (binaryfile, filename);
if (! macho || ! grub_macho_contains_macho32 (macho))
{
if (macho)
@ -716,9 +712,9 @@ grub_xnu_load_driver (char *infoplistname, grub_file_t binaryfile)
exthead->binaryaddr = buf_target + (buf - (grub_uint8_t *) buf0);
exthead->binarysize = machosize;
if (grub_xnu_is_64bit)
err = grub_macho_readfile64 (macho, buf);
err = grub_macho_readfile64 (macho, filename, buf);
else
err = grub_macho_readfile32 (macho, buf);
err = grub_macho_readfile32 (macho, filename, buf);
if (err)
{
grub_macho_close (macho);
@ -776,10 +772,10 @@ grub_cmd_xnu_mkext (grub_command_t cmd __attribute__ ((unused)),
int narchs, i;
if (argc != 1)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
if (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
file = grub_file_open (args[0]);
if (! file)
@ -890,10 +886,10 @@ grub_cmd_xnu_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 (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
file = grub_file_open (args[0]);
if (! file)
@ -1072,7 +1068,7 @@ grub_xnu_scan_dir_for_kexts (char *dirname, const char *osbundlerequired,
}
if (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
device_name = grub_file_get_device_name (dirname);
dev = grub_device_open (device_name);
@ -1190,14 +1186,15 @@ grub_xnu_load_kext_from_dir (char *dirname, const char *osbundlerequired,
grub_errno = GRUB_ERR_NONE;
/* Load the extension. */
grub_xnu_load_driver (plistname, binfile);
grub_xnu_load_driver (plistname, binfile,
binname);
grub_free (binname);
grub_free (binsuffix);
}
else
{
grub_dprintf ("xnu", "%s:0\n", plistname);
grub_xnu_load_driver (plistname, 0);
grub_xnu_load_driver (plistname, 0, 0);
}
}
grub_free (plistname);
@ -1220,7 +1217,7 @@ grub_cmd_xnu_kext (grub_command_t cmd __attribute__ ((unused)),
grub_file_t binfile = 0;
if (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
if (argc == 2)
{
@ -1229,20 +1226,17 @@ grub_cmd_xnu_kext (grub_command_t cmd __attribute__ ((unused)),
{
binfile = grub_file_open (args[1]);
if (! binfile)
{
grub_error (GRUB_ERR_BAD_OS, "can't open file");
return GRUB_ERR_NONE;
}
return grub_errno;
}
return grub_xnu_load_driver (grub_strcmp (args[0], "-") ? args[0] : 0,
binfile);
binfile, args[1]);
}
/* load kext normally. */
if (argc == 1)
return grub_xnu_load_kext_from_dir (args[0], 0, 10);
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
}
/* Load a directory containing kexts. */
@ -1254,7 +1248,7 @@ grub_cmd_xnu_kextdir (grub_command_t cmd __attribute__ ((unused)),
return grub_error (GRUB_ERR_BAD_ARGUMENT, "directory name required");
if (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
if (argc == 1)
return grub_xnu_scan_dir_for_kexts (args[0],
@ -1394,10 +1388,10 @@ grub_cmd_xnu_splash (grub_extcmd_context_t ctxt,
{
grub_err_t err;
if (argc != 1)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
if (! grub_xnu_heap_size)
return grub_error (GRUB_ERR_BAD_OS, "no xnu kernel loaded");
return grub_error (GRUB_ERR_BAD_OS, N_("you need to load the kernel first"));
if (ctxt->state[XNU_SPLASH_CMD_ARGINDEX_MODE].set &&
grub_strcmp (ctxt->state[XNU_SPLASH_CMD_ARGINDEX_MODE].arg,
@ -1420,7 +1414,7 @@ grub_cmd_xnu_resume (grub_command_t cmd __attribute__ ((unused)),
int argc, char *args[])
{
if (argc != 1)
return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("filename expected"));
return grub_xnu_resume (args[0]);
}
@ -1457,11 +1451,16 @@ GRUB_MOD_INIT(xnu)
cmd_kext = grub_register_command ("xnu_kext", grub_cmd_xnu_kext, 0,
N_("Load XNU extension."));
cmd_kextdir = grub_register_command ("xnu_kextdir", grub_cmd_xnu_kextdir,
/* TRANSLATORS: OSBundleRequired is a
variable name in xnu extensions
manifests. It behaves mostly like
GNU/Linux runlevels.
*/
N_("DIRECTORY [OSBundleRequired]"),
N_("Load XNU extension directory."));
cmd_ramdisk = grub_register_command ("xnu_ramdisk", grub_cmd_xnu_ramdisk, 0,
N_("Load XNU ramdisk. "
"It will be seen as md0."));
"It will be available in OS as md0."));
cmd_splash = grub_register_extcmd ("xnu_splash",
grub_cmd_xnu_splash, 0, 0,
N_("Load a splash image for XNU."),
@ -1469,7 +1468,8 @@ GRUB_MOD_INIT(xnu)
#ifndef GRUB_MACHINE_EMU
cmd_resume = grub_register_command ("xnu_resume", grub_cmd_xnu_resume,
0, N_("Load XNU hibernate image."));
0, N_("Load an image of hibernated"
" XNU image."));
#endif
grub_cpu_xnu_init ();