grub_err_t grub_env_extractor_close (int source) { grub_menu_t menu = NULL; grub_menu_entry_t *last; grub_err_t err; if (source) { menu = grub_env_get_menu (); grub_env_unset_menu (); } err = grub_env_context_close (); if (source && menu) { grub_menu_t menu2; menu2 = grub_env_get_menu (); last = &menu2->entry_list; while (*last) last = &(*last)->next; *last = menu->entry_list; menu2->size += menu->size; } grub_extractor_level--; return err; }
void grub_normal_free_menu (grub_menu_t menu) { grub_menu_entry_t entry = menu->entry_list; while (entry) { grub_menu_entry_t next_entry = entry->next; grub_free ((void *) entry->title); grub_free ((void *) entry->sourcecode); entry = next_entry; } grub_free (menu); grub_env_unset_menu (); }