]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Make legacy_source behave like source.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 17 Nov 2010 07:41:18 +0000 (08:41 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 17 Nov 2010 07:41:18 +0000 (08:41 +0100)
* grub-core/commands/legacycfg.c (legacy_file): Don't call
grub_show_menu.
(grub_cmd_legacy_source): Call grub_show_menu if needed.

ChangeLog
grub-core/commands/legacycfg.c

index 42489cab780b7176279777015ea4b2cd8df69df6..3dc2e06da5dcc231fc5e7c69e8d1f09e5117556b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-11-16  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Make legacy_source behave like source.
+
+       * grub-core/commands/legacycfg.c (legacy_file): Don't call
+       grub_show_menu.
+       (grub_cmd_legacy_source): Call grub_show_menu if needed.
+
 2010-11-16  Colin Watson  <cjwatson@debian.org>
 
        * conf/Makefile.common (CFLAGS_GNULIB): Add -Wno-unused-parameter.
index d5441db06f08a5a2a6c3fb1a0b9b90b6d9f6e3ca..80718196a5157ac86e05ff5b2db6fe50fd4c6676 100644 (file)
@@ -177,9 +177,6 @@ legacy_file (const char *filename)
   grub_free (suffix);
   grub_free (entrysrc);
 
-  if (menu && menu->size)
-    grub_show_menu (menu, 1);
-
   return GRUB_ERR_NONE;
 }
 
@@ -194,8 +191,8 @@ grub_cmd_legacy_source (struct grub_command *cmd,
     return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
 
   extractor = (cmd->name[0] == 'e');
-  new_env = (cmd->name[extractor ? sizeof ("extract_legacy_entries_") - 1
-                      : sizeof ("legacy_") - 1] == 'c');
+  new_env = (cmd->name[extractor ? (sizeof ("extract_legacy_entries_") - 1)
+                      : (sizeof ("legacy_") - 1)] == 'c');
 
   if (new_env)
     grub_cls ();
@@ -207,8 +204,15 @@ grub_cmd_legacy_source (struct grub_command *cmd,
 
   ret = legacy_file (args[0]);
 
-  if (new_env && !extractor)
-    grub_env_context_close ();
+  if (new_env)
+    {
+      grub_menu_t menu;
+      menu = grub_env_get_menu ();
+      if (menu && menu->size)
+       grub_show_menu (menu, 1);
+      if (!extractor)
+       grub_env_context_close ();
+    }
   if (extractor)
     grub_env_extractor_close (!new_env);