420527a
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
420527a
From: Peter Jones <pjones@redhat.com>
420527a
Date: Fri, 19 Oct 2018 10:03:28 -0400
420527a
Subject: [PATCH] Make blscfg debug messages more useful
420527a
420527a
Related: rhbz#1640979
420527a
Signed-off-by: Peter Jones <pjones@redhat.com>
420527a
---
420527a
 grub-core/commands/blscfg.c    | 12 +++++-------
420527a
 grub-core/commands/legacycfg.c |  4 ++--
420527a
 grub-core/commands/menuentry.c | 18 ++++++++++++++----
420527a
 include/grub/normal.h          |  2 +-
420527a
 4 files changed, 22 insertions(+), 14 deletions(-)
420527a
420527a
diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
420527a
index 347128c9ddd..42892cbfd55 100644
420527a
--- a/grub-core/commands/blscfg.c
420527a
+++ b/grub-core/commands/blscfg.c
420527a
@@ -46,8 +46,6 @@ GRUB_MOD_LICENSE ("GPLv3+");
420527a
 #define GRUB_BOOT_DEVICE "($root)"
420527a
 #endif
420527a
 
420527a
-#define grub_free(x) ({grub_dprintf("blscfg", "%s freeing %p\n", __func__, x); grub_free(x); })
420527a
-
420527a
 struct keyval
420527a
 {
420527a
   const char *key;
420527a
@@ -134,7 +132,7 @@ static int bls_add_keyval(struct bls_entry *entry, char *key, char *val)
420527a
   kv->val = v;
420527a
 
420527a
   entry->keyvals[entry->nkeyvals] = kv;
420527a
-  grub_dprintf("blscfg", "new keyval at %p:%p:%p\n", entry->keyvals[entry->nkeyvals], k, v);
420527a
+  grub_dprintf("blscfg", "new keyval at %p:%s:%s\n", entry->keyvals[entry->nkeyvals], k, v);
420527a
   entry->nkeyvals = new_n;
420527a
 
420527a
   return 0;
420527a
@@ -144,7 +142,6 @@ static void bls_free_entry(struct bls_entry *entry)
420527a
 {
420527a
   int i;
420527a
 
420527a
-  grub_dprintf("blscfg", "%s got here\n", __func__);
420527a
   for (i = 0; i < entry->nkeyvals; i++)
420527a
     {
420527a
       struct keyval *kv = entry->keyvals[i];
420527a
@@ -206,7 +203,7 @@ static int vercmp(const char * a, const char * b)
420527a
     int isnum;
420527a
     int ret = 0;
420527a
 
420527a
-    grub_dprintf("blscfg", "%s got here\n", __func__);
420527a
+    grub_dprintf("blscfg", "%s comparing %s and %s\n", __func__, a, b);
420527a
     if (!grub_strcmp(a, b))
420527a
 	    return 0;
420527a
 
420527a
@@ -682,7 +679,7 @@ static void create_entry (struct bls_entry *entry)
420527a
   char **args = NULL;
420527a
 
420527a
   char *src = NULL;
420527a
-  int i;
420527a
+  int i, index;
420527a
 
420527a
   grub_dprintf("blscfg", "%s got here\n", __func__);
420527a
   clinux = bls_get_val (entry, "linux", NULL);
420527a
@@ -756,7 +753,8 @@ static void create_entry (struct bls_entry *entry)
420527a
 			GRUB_BOOT_DEVICE, clinux, options ? " " : "", options ? options : "",
420527a
 			initrd ? initrd : "");
420527a
 
420527a
-  grub_normal_add_menu_entry (argc, argv, classes, id, users, hotkey, NULL, src, 0);
420527a
+  grub_normal_add_menu_entry (argc, argv, classes, id, users, hotkey, NULL, src, 0, &index);
420527a
+  grub_dprintf ("blscfg", "Added entry %d id:\"%s\"\n", index, id);
420527a
 
420527a
 finish:
420527a
   grub_free (initrd);
420527a
diff --git a/grub-core/commands/legacycfg.c b/grub-core/commands/legacycfg.c
420527a
index b32f3c74cb1..f9d7627bdc3 100644
420527a
--- a/grub-core/commands/legacycfg.c
420527a
+++ b/grub-core/commands/legacycfg.c
420527a
@@ -133,7 +133,7 @@ legacy_file (const char *filename)
420527a
 	    args[0] = oldname;
420527a
 	    grub_normal_add_menu_entry (1, args, NULL, NULL, "legacy",
420527a
 					NULL, NULL,
420527a
-					entrysrc, 0);
420527a
+					entrysrc, 0, NULL);
420527a
 	    grub_free (args);
420527a
 	    entrysrc[0] = 0;
420527a
 	    grub_free (oldname);
420527a
@@ -186,7 +186,7 @@ legacy_file (const char *filename)
420527a
 	}
420527a
       args[0] = entryname;
420527a
       grub_normal_add_menu_entry (1, args, NULL, NULL, NULL,
420527a
-				  NULL, NULL, entrysrc, 0);
420527a
+				  NULL, NULL, entrysrc, 0, NULL);
420527a
       grub_free (args);
420527a
     }
420527a
 
420527a
diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
420527a
index 2c5363da7f5..8d242b0187e 100644
420527a
--- a/grub-core/commands/menuentry.c
420527a
+++ b/grub-core/commands/menuentry.c
420527a
@@ -78,7 +78,7 @@ grub_normal_add_menu_entry (int argc, const char **args,
420527a
 			    char **classes, const char *id,
420527a
 			    const char *users, const char *hotkey,
420527a
 			    const char *prefix, const char *sourcecode,
420527a
-			    int submenu)
420527a
+			    int submenu, int *index)
420527a
 {
420527a
   int menu_hotkey = 0;
420527a
   char **menu_args = NULL;
420527a
@@ -149,9 +149,12 @@ grub_normal_add_menu_entry (int argc, const char **args,
420527a
   if (! menu_title)
420527a
     goto fail;
420527a
 
420527a
+  grub_dprintf ("menu", "id:\"%s\"\n", id);
420527a
+  grub_dprintf ("menu", "title:\"%s\"\n", menu_title);
420527a
   menu_id = grub_strdup (id ? : menu_title);
420527a
   if (! menu_id)
420527a
     goto fail;
420527a
+  grub_dprintf ("menu", "menu_id:\"%s\"\n", menu_id);
420527a
 
420527a
   /* Save argc, args to pass as parameters to block arg later. */
420527a
   menu_args = grub_malloc (sizeof (char*) * (argc + 1));
420527a
@@ -170,8 +173,12 @@ grub_normal_add_menu_entry (int argc, const char **args,
420527a
   }
420527a
 
420527a
   /* Add the menu entry at the end of the list.  */
420527a
+  int ind=0;
420527a
   while (*last)
420527a
-    last = &(*last)->next;
420527a
+    {
420527a
+      ind++;
420527a
+      last = &(*last)->next;
420527a
+    }
420527a
 
420527a
   *last = grub_zalloc (sizeof (**last));
420527a
   if (! *last)
420527a
@@ -190,6 +197,8 @@ grub_normal_add_menu_entry (int argc, const char **args,
420527a
   (*last)->submenu = submenu;
420527a
 
420527a
   menu->size++;
420527a
+  if (index)
420527a
+    *index = ind;
420527a
   return GRUB_ERR_NONE;
420527a
 
420527a
  fail:
420527a
@@ -286,7 +295,8 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
420527a
 				       users,
420527a
 				       ctxt->state[2].arg, 0,
420527a
 				       ctxt->state[3].arg,
420527a
-				       ctxt->extcmd->cmd->name[0] == 's');
420527a
+				       ctxt->extcmd->cmd->name[0] == 's',
420527a
+				       NULL);
420527a
 
420527a
   src = args[argc - 1];
420527a
   args[argc - 1] = NULL;
420527a
@@ -303,7 +313,7 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
420527a
 				  ctxt->state[0].args, ctxt->state[4].arg,
420527a
 				  users,
420527a
 				  ctxt->state[2].arg, prefix, src + 1,
420527a
-				  ctxt->extcmd->cmd->name[0] == 's');
420527a
+				  ctxt->extcmd->cmd->name[0] == 's', NULL);
420527a
 
420527a
   src[len - 1] = ch;
420527a
   args[argc - 1] = src;
420527a
diff --git a/include/grub/normal.h b/include/grub/normal.h
420527a
index 218cbabccaf..cb9901f41b3 100644
420527a
--- a/include/grub/normal.h
420527a
+++ b/include/grub/normal.h
420527a
@@ -145,7 +145,7 @@ grub_normal_add_menu_entry (int argc, const char **args, char **classes,
420527a
 			    const char *id,
420527a
 			    const char *users, const char *hotkey,
420527a
 			    const char *prefix, const char *sourcecode,
420527a
-			    int submenu);
420527a
+			    int submenu, int *index);
420527a
 
420527a
 grub_err_t
420527a
 grub_normal_set_password (const char *user, const char *password);