All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/3] Option to set title of submenus
  2025-05-26 17:50 [PATCH 0/3] Allow script-configurable GRUB menu title Jiří 'bindiff' Wolker via Grub-devel
@ 2025-05-26 18:18 ` Jiří Wolker via Grub-devel
  2025-05-27 10:43   ` sudhakar
  0 siblings, 1 reply; 4+ messages in thread
From: Jiří Wolker via Grub-devel @ 2025-05-26 18:18 UTC (permalink / raw)
  To: grub-devel; +Cc: Jiří Wolker

---
 grub-core/commands/menuentry.c | 50 ++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/grub-core/commands/menuentry.c b/grub-core/commands/menuentry.c
index 720e6d8ea..c40b27d8b 100644
--- a/grub-core/commands/menuentry.c
+++ b/grub-core/commands/menuentry.c
@@ -43,6 +43,9 @@ static const struct grub_arg_option options[] =
        anyone can boot it.  */
     {"unrestricted", 0, 0, N_("This entry can be booted by any user."),
      0, ARG_TYPE_NONE},
+    {"menutitle", 0, 0,
+     N_("Use STRING as menu title. When omitted, use the entry label."),
+     N_("TITLE"), ARG_TYPE_STRING},
     {0, 0, 0, 0, 0, 0}
   };
 
@@ -252,12 +255,46 @@ setparams_prefix (int argc, char **args)
   return result;
 }
 
+static char *
+menutitle_prefix (char *old_prefix, const char *title)
+{
+  const char *t;
+  char *p;
+  char *result;
+  grub_size_t len = 22;
+  grub_size_t old_len = grub_strlen (old_prefix);
+
+  /* Count resulting string length. */
+  for (t = title; *t; t++)
+    {
+      len += (*t++ == '\'' ? 4 : 1);
+    }
+
+  result = grub_malloc (old_len + len + 2);
+  if (! result)
+    return 0;
+
+  p = result;
+  grub_strcpy (p, old_prefix);
+  p = result + old_len;
+  grub_strcpy (p, "set grub_menu_title='");
+  p += 21;
+
+  p = grub_strchrsub (p, title, '\'', "'\\''");
+  *p++ = '\'';
+  *p++ = '\n';
+  *p = '\0';
+
+  return result;
+}
+
 static grub_err_t
 grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
 {
   char ch;
   char *src;
   char *prefix;
+  char *old_prefix;
   unsigned len;
   grub_err_t r;
   const char *users;
@@ -299,6 +336,19 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
   if (! prefix)
     return grub_errno;
 
+  /* Prepend the menu title line. */
+  if (ctxt->state[6].arg)
+    {
+      old_prefix = prefix;
+      prefix = menutitle_prefix (old_prefix,
+				 (ctxt->state[6].arg
+				  && grub_strlen(ctxt->state[6].arg) > 0)
+				 ? ctxt->state[6].arg : args[0]);
+      if (! prefix)
+	return grub_errno;
+      grub_free(old_prefix);
+    }
+
   r = grub_normal_add_menu_entry (argc - 1, (const char **) args,
 				  ctxt->state[0].args, ctxt->state[4].arg,
 				  users,
-- 
2.45.3


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/3] Option to set title of submenus
  2025-05-26 18:18 ` [PATCH 2/3] Option to set title of submenus Jiří Wolker via Grub-devel
@ 2025-05-27 10:43   ` sudhakar
  0 siblings, 0 replies; 4+ messages in thread
From: sudhakar @ 2025-05-27 10:43 UTC (permalink / raw)
  To: The development of GNU GRUB; +Cc: Jiří Wolker

On 2025-05-26 23:48, Jiří Wolker via Grub-devel wrote:
> ---
>  grub-core/commands/menuentry.c | 50 ++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/grub-core/commands/menuentry.c 
> b/grub-core/commands/menuentry.c
> index 720e6d8ea..c40b27d8b 100644
> --- a/grub-core/commands/menuentry.c
> +++ b/grub-core/commands/menuentry.c
> @@ -43,6 +43,9 @@ static const struct grub_arg_option options[] =
>         anyone can boot it.  */
>      {"unrestricted", 0, 0, N_("This entry can be booted by any 
> user."),
>       0, ARG_TYPE_NONE},
> +    {"menutitle", 0, 0,
> +     N_("Use STRING as menu title. When omitted, use the entry 
> label."),
> +     N_("TITLE"), ARG_TYPE_STRING},
>      {0, 0, 0, 0, 0, 0}
>    };
> 
> @@ -252,12 +255,46 @@ setparams_prefix (int argc, char **args)
>    return result;
>  }
> 
> +static char *
> +menutitle_prefix (char *old_prefix, const char *title)
> +{
> +  const char *t;
> +  char *p;
> +  char *result;
> +  grub_size_t len = 22;
> +  grub_size_t old_len = grub_strlen (old_prefix);
> +
> +  /* Count resulting string length. */
> +  for (t = title; *t; t++)
> +    {
> +      len += (*t++ == '\'' ? 4 : 1);
> +    }
> +

remove the brackets in one liner For loop

> +  result = grub_malloc (old_len + len + 2);
> +  if (! result)

s/! result/!result

> +    return 0;
> +
> +  p = result;
> +  grub_strcpy (p, old_prefix);
> +  p = result + old_len;
> +  grub_strcpy (p, "set grub_menu_title='");
> +  p += 21;
> +
> +  p = grub_strchrsub (p, title, '\'', "'\\''");
> +  *p++ = '\'';
> +  *p++ = '\n';
> +  *p = '\0';
> +
> +  return result;
> +}
> +
>  static grub_err_t
>  grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
>  {
>    char ch;
>    char *src;
>    char *prefix;
> +  char *old_prefix;
>    unsigned len;
>    grub_err_t r;
>    const char *users;
> @@ -299,6 +336,19 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt,
> int argc, char **args)
>    if (! prefix)
>      return grub_errno;
> 
s/! prefix/!prefix

> +  /* Prepend the menu title line. */
> +  if (ctxt->state[6].arg)
> +    {
> +      old_prefix = prefix;
> +      prefix = menutitle_prefix (old_prefix,
> +				 (ctxt->state[6].arg
> +				  && grub_strlen(ctxt->state[6].arg) > 0)
> +				 ? ctxt->state[6].arg : args[0]);
> +      if (! prefix)

ditto

> +	return grub_errno;
> +      grub_free(old_prefix);
> +    }
> +
>    r = grub_normal_add_menu_entry (argc - 1, (const char **) args,
>  				  ctxt->state[0].args, ctxt->state[4].arg,
>  				  users,

Indentation looks off in couple of places. Please fix it.

Thanks,
Sudhakar

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/3] Option to set title of submenus
       [not found] <mailman.5394.1748289237.3672.grub-devel@gnu.org>
@ 2025-05-27 11:00 ` Avnish Chouhan
  2025-05-27 12:01   ` Jiří 'bindiff' Wolker via Grub-devel
  0 siblings, 1 reply; 4+ messages in thread
From: Avnish Chouhan @ 2025-05-27 11:00 UTC (permalink / raw)
  To: projects; +Cc: grub-devel-request, grub-devel

> Message: 2
> Date: Mon, 26 May 2025 20:18:26 +0200
> From: Jiří Wolker <projects@jwo.cz>
> To: grub-devel@gnu.org
> Cc: Jiří 'bindiff' Wolker <projects@jwo.cz>
> Subject: [PATCH 2/3] Option to set title of submenus
> Message-ID: <87cybvdyml.fsf@gnat.mail-host-address-is-not-set>
> Content-Type: text/plain; charset=utf-8
> 
> ---
>  grub-core/commands/menuentry.c | 50 ++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/grub-core/commands/menuentry.c 
> b/grub-core/commands/menuentry.c
> index 720e6d8ea..c40b27d8b 100644
> --- a/grub-core/commands/menuentry.c
> +++ b/grub-core/commands/menuentry.c
> @@ -43,6 +43,9 @@ static const struct grub_arg_option options[] =
>         anyone can boot it.  */
>      {"unrestricted", 0, 0, N_("This entry can be booted by any 
> user."),
>       0, ARG_TYPE_NONE},
> +    {"menutitle", 0, 0,
> +     N_("Use STRING as menu title. When omitted, use the entry 
> label."),
> +     N_("TITLE"), ARG_TYPE_STRING},
>      {0, 0, 0, 0, 0, 0}
>    };
> 
> @@ -252,12 +255,46 @@ setparams_prefix (int argc, char **args)
>    return result;
>  }
> 
> +static char *
> +menutitle_prefix (char *old_prefix, const char *title)
> +{
> +  const char *t;
> +  char *p;
> +  char *result;
> +  grub_size_t len = 22;
> +  grub_size_t old_len = grub_strlen (old_prefix);
> +
> +  /* Count resulting string length. */
> +  for (t = title; *t; t++)
> +    {
> +      len += (*t++ == '\'' ? 4 : 1);
> +    }
> +
> +  result = grub_malloc (old_len + len + 2);
> +  if (! result)
> +    return 0;
> +
> +  p = result;
> +  grub_strcpy (p, old_prefix);
> +  p = result + old_len;
> +  grub_strcpy (p, "set grub_menu_title='");
> +  p += 21;
> +
> +  p = grub_strchrsub (p, title, '\'', "'\\''");
> +  *p++ = '\'';
> +  *p++ = '\n';
> +  *p = '\0';
> +
> +  return result;
> +}
> +
>  static grub_err_t
>  grub_cmd_menuentry (grub_extcmd_context_t ctxt, int argc, char **args)
>  {
>    char ch;
>    char *src;
>    char *prefix;
> +  char *old_prefix;
>    unsigned len;
>    grub_err_t r;
>    const char *users;
> @@ -299,6 +336,19 @@ grub_cmd_menuentry (grub_extcmd_context_t ctxt,
> int argc, char **args)
>    if (! prefix)
>      return grub_errno;
> 
> +  /* Prepend the menu title line. */
> +  if (ctxt->state[6].arg)
> +    {
> +      old_prefix = prefix;
> +      prefix = menutitle_prefix (old_prefix,
> +				 (ctxt->state[6].arg
> +				  && grub_strlen(ctxt->state[6].arg) > 0)
> +				 ? ctxt->state[6].arg : args[0]);

Hi Jiří,

Something like this below might be better here!

prefix = menutitle_prefix (old_prefix, (ctxt->state[6].arg
                            && grub_strlen(ctxt->state[6].arg) > 0)
                            ? ctxt->state[6].arg : args[0]);

> +      if (! prefix)
> +	return grub_errno;

Indention seems off!

> +      grub_free(old_prefix);

grub_free (old_prefix);

Thank you,

Regards,
Avnish Chouhan

> +    }
> +
>    r = grub_normal_add_menu_entry (argc - 1, (const char **) args,
>  				  ctxt->state[0].args, ctxt->state[4].arg,
>  				  users,
> --
> 2.45.3
> 
> 
> 
> 
> ------------------------------

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/3] Option to set title of submenus
  2025-05-27 11:00 ` [PATCH 2/3] Option to set title of submenus Avnish Chouhan
@ 2025-05-27 12:01   ` Jiří 'bindiff' Wolker via Grub-devel
  0 siblings, 0 replies; 4+ messages in thread
From: Jiří 'bindiff' Wolker via Grub-devel @ 2025-05-27 12:01 UTC (permalink / raw)
  To: Avnish Chouhan
  Cc: Jiří 'bindiff' Wolker, grub-devel-request,
	grub-devel

> Hi Jiří,
> 
> Something like this below might be better here!
> 
> [… source code fixes …]

Hi Avnish,

Thanks for you fix suggestions.

I did not write anything in the GNU coding style for a long time. Also,
using my default mail client was absolutely wrong (and lazy) decision –
it did corrupt whitespace in the patches.

I'm sorry and I'll send reviewed patches in a few minutes.

Thanks.
bindiff

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-05-27 12:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <mailman.5394.1748289237.3672.grub-devel@gnu.org>
2025-05-27 11:00 ` [PATCH 2/3] Option to set title of submenus Avnish Chouhan
2025-05-27 12:01   ` Jiří 'bindiff' Wolker via Grub-devel
2025-05-26 17:50 [PATCH 0/3] Allow script-configurable GRUB menu title Jiří 'bindiff' Wolker via Grub-devel
2025-05-26 18:18 ` [PATCH 2/3] Option to set title of submenus Jiří Wolker via Grub-devel
2025-05-27 10:43   ` sudhakar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.