grub_err_t grub_multiboot_init_mbi (int argc, char *argv[]) { grub_ssize_t len = 0; char *p; int i; grub_multiboot_free_mbi (); for (i = 0; i < argc; i++) len += grub_strlen (argv[i]) + 1; if (len == 0) len = 1; cmdline = p = grub_malloc (len); if (! cmdline) return grub_errno; cmdline_size = len; for (i = 0; i < argc; i++) { p = grub_stpcpy (p, argv[i]); *(p++) = ' '; } /* Remove the space after the last word. */ if (p != cmdline) p--; *p = '\0'; return GRUB_ERR_NONE; }
static grub_err_t grub_multiboot_unload (void) { grub_multiboot_free_mbi (); grub_relocator_unload (grub_multiboot_relocator); grub_multiboot_relocator = NULL; grub_dl_unref (my_mod); return GRUB_ERR_NONE; }
grub_err_t grub_multiboot_init_mbi (int argc, char *argv[]) { grub_ssize_t len = 0; grub_multiboot_free_mbi (); len = grub_loader_cmdline_size (argc, argv); cmdline = grub_malloc (len); if (! cmdline) return grub_errno; cmdline_size = len; grub_create_loader_cmdline (argc, argv, cmdline, cmdline_size); return GRUB_ERR_NONE; }