On Sat, Dec 21, 2024 at 08:10:55AM +0000, Daniel Khodabakhsh wrote:
> Here's the patch file with the Signed-off-by line attached

Thanks for the ping.  I've committed this patch.

-Kevin


> 
> On Thu, Nov 21, 2024 at 9:15 PM Daniel Khodabakhsh
> <d.khodabak...@gmail.com> wrote:
> >
> > >
> > > Thanks.  Looks fine to me, but a patch would require a signed-off-by
> > > line - see: https://www.seabios.org/Contributing
> > >
> >
> > Apologies, alright I've added the sign-off line, here is my patch:
> >
> > Force display of the boot menu when boot-menu-wait is a negative number.
> >
> > Signed-off-by: Daniel Khodabakhsh <d.khodabak...@gmail.com>
> > ---
> >  docs/Runtime_config.md |  2 +-
> >  src/boot.c             | 29 ++++++++++++++++-------------
> >  2 files changed, 17 insertions(+), 14 deletions(-)
> >
> > diff --git a/docs/Runtime_config.md b/docs/Runtime_config.md
> > index 5795382b..f5e0cbd5 100644
> > --- a/docs/Runtime_config.md
> > +++ b/docs/Runtime_config.md
> > @@ -176,7 +176,7 @@ There are several additional configuration options
> > available in the
> >  | show-boot-menu      | Controls the display of the boot menu. Valid
> > values are 0: Disable the boot menu, 1: Display boot menu
> > unconditionally, 2: Skip boot menu if only one device is present. The
> > default is 1.
> >  | boot-menu-message   | Customize the text boot menu message.
> > Normally, when in text mode SeaBIOS will report the string "\\nPress
> > ESC for boot menu.\\n\\n". This field allows the string to be changed.
> > (This is a string field, and is added as a file containing the raw
> > string.)
> >  | boot-menu-key       | Controls which key activates the boot menu.
> > The value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for
> > Esc). If this field is set, be sure to also customize the
> > **boot-menu-message** field above.
> > -| boot-menu-wait      | Amount of time (in milliseconds) to wait at
> > the boot menu prompt before selecting the default boot.
> > +| boot-menu-wait      | Amount of time (in milliseconds) to wait at
> > the boot menu prompt before selecting the default boot. Set to a
> > negative number such as -1 to force the display of the boot menu.
> >  | boot-fail-wait      | If no boot devices are found SeaBIOS will
> > reboot after 60 seconds. Set this to the amount of time (in
> > milliseconds) to customize the reboot delay or set to -1 to disable
> > rebooting when no boot devices are found
> >  | extra-pci-roots     | If the target machine has multiple
> > independent root buses set this to a positive value. The SeaBIOS PCI
> > probe will then search for the given number of extra root buses.
> >  | ps2-keyboard-spinup | Some laptops that emulate PS2 keyboards don't
> > respond to keyboard commands immediately after powering on. One may
> > specify the amount of time (in milliseconds) here to allow as
> > additional time for the keyboard to become responsive. When this field
> > is set, SeaBIOS will repeatedly attempt to detect the keyboard until
> > the keyboard is found or the specified timeout is reached.
> > diff --git a/src/boot.c b/src/boot.c
> > index 1effd802..5c37dafd 100644
> > --- a/src/boot.c
> > +++ b/src/boot.c
> > @@ -708,20 +708,23 @@ interactive_bootmenu(void)
> >          return;
> >      }
> >
> > -    while (get_keystroke(0) >= 0)
> > -        ;
> > -
> > -    char *bootmsg = romfile_loadfile("etc/boot-menu-message", NULL);
> > +    int menutime = romfile_loadint("etc/boot-menu-wait",
> > DEFAULT_BOOTMENU_WAIT);
> >      int menukey = romfile_loadint("etc/boot-menu-key", 1);
> > -    printf("%s", bootmsg ?: "\nPress ESC for boot menu.\n\n");
> > -    free(bootmsg);
> > -
> > -    u32 menutime = romfile_loadint("etc/boot-menu-wait",
> > DEFAULT_BOOTMENU_WAIT);
> > -    enable_bootsplash();
> > -    int scan_code = get_keystroke(menutime);
> > -    disable_bootsplash();
> > -    if (scan_code != menukey)
> > -        return;
> > +    int scan_code;
> > +    if (menutime >= 0) {
> > +        while (get_keystroke(0) >= 0)
> > +            ;
> > +
> > +        char *bootmsg = romfile_loadfile("etc/boot-menu-message", NULL);
> > +        printf("%s", bootmsg ?: "\nPress ESC for boot menu.\n\n");
> > +        free(bootmsg);
> > +
> > +        enable_bootsplash();
> > +        scan_code = get_keystroke(menutime);
> > +        disable_bootsplash();
> > +        if (scan_code != menukey)
> > +            return;
> > +    }
> >
> >      while (get_keystroke(0) >= 0)
> >          ;
> > --
> > 2.46.0

> From 17a5b1cd90a10661652911a541afc13b69709ebf Mon Sep 17 00:00:00 2001
> From: Daniel Khodabakhsh <d.khodabak...@gmail.com>
> Date: Thu, 7 Nov 2024 18:46:16 -0800
> Subject: [PATCH] Force display of the boot menu when boot-menu-wait is a
>  negative number.
> 
> Signed-off-by: Daniel Khodabakhsh <d.khodabak...@gmail.com>
> ---
>  docs/Runtime_config.md |  2 +-
>  src/boot.c             | 29 ++++++++++++++++-------------
>  2 files changed, 17 insertions(+), 14 deletions(-)
> 
> diff --git a/docs/Runtime_config.md b/docs/Runtime_config.md
> index 5795382b..f5e0cbd5 100644
> --- a/docs/Runtime_config.md
> +++ b/docs/Runtime_config.md
> @@ -176,7 +176,7 @@ There are several additional configuration options 
> available in the
>  | show-boot-menu      | Controls the display of the boot menu. Valid values 
> are 0: Disable the boot menu, 1: Display boot menu unconditionally, 2: Skip 
> boot menu if only one device is present. The default is 1.
>  | boot-menu-message   | Customize the text boot menu message. Normally, when 
> in text mode SeaBIOS will report the string "\\nPress ESC for boot 
> menu.\\n\\n". This field allows the string to be changed. (This is a string 
> field, and is added as a file containing the raw string.)
>  | boot-menu-key       | Controls which key activates the boot menu. The 
> value stored is the DOS scan code (eg, 0x86 for F12, 0x01 for Esc). If this 
> field is set, be sure to also customize the **boot-menu-message** field above.
> -| boot-menu-wait      | Amount of time (in milliseconds) to wait at the boot 
> menu prompt before selecting the default boot.
> +| boot-menu-wait      | Amount of time (in milliseconds) to wait at the boot 
> menu prompt before selecting the default boot. Set to a negative number such 
> as -1 to force the display of the boot menu.
>  | boot-fail-wait      | If no boot devices are found SeaBIOS will reboot 
> after 60 seconds. Set this to the amount of time (in milliseconds) to 
> customize the reboot delay or set to -1 to disable rebooting when no boot 
> devices are found
>  | extra-pci-roots     | If the target machine has multiple independent root 
> buses set this to a positive value. The SeaBIOS PCI probe will then search 
> for the given number of extra root buses.
>  | ps2-keyboard-spinup | Some laptops that emulate PS2 keyboards don't 
> respond to keyboard commands immediately after powering on. One may specify 
> the amount of time (in milliseconds) here to allow as additional time for the 
> keyboard to become responsive. When this field is set, SeaBIOS will 
> repeatedly attempt to detect the keyboard until the keyboard is found or the 
> specified timeout is reached.
> diff --git a/src/boot.c b/src/boot.c
> index 1effd802..5c37dafd 100644
> --- a/src/boot.c
> +++ b/src/boot.c
> @@ -708,20 +708,23 @@ interactive_bootmenu(void)
>          return;
>      }
>  
> -    while (get_keystroke(0) >= 0)
> -        ;
> -
> -    char *bootmsg = romfile_loadfile("etc/boot-menu-message", NULL);
> +    int menutime = romfile_loadint("etc/boot-menu-wait", 
> DEFAULT_BOOTMENU_WAIT);
>      int menukey = romfile_loadint("etc/boot-menu-key", 1);
> -    printf("%s", bootmsg ?: "\nPress ESC for boot menu.\n\n");
> -    free(bootmsg);
> -
> -    u32 menutime = romfile_loadint("etc/boot-menu-wait", 
> DEFAULT_BOOTMENU_WAIT);
> -    enable_bootsplash();
> -    int scan_code = get_keystroke(menutime);
> -    disable_bootsplash();
> -    if (scan_code != menukey)
> -        return;
> +    int scan_code;
> +    if (menutime >= 0) {
> +        while (get_keystroke(0) >= 0)
> +            ;
> +
> +        char *bootmsg = romfile_loadfile("etc/boot-menu-message", NULL);
> +        printf("%s", bootmsg ?: "\nPress ESC for boot menu.\n\n");
> +        free(bootmsg);
> +
> +        enable_bootsplash();
> +        scan_code = get_keystroke(menutime);
> +        disable_bootsplash();
> +        if (scan_code != menukey)
> +            return;
> +    }
>  
>      while (get_keystroke(0) >= 0)
>          ;
> -- 
> 2.46.0
> 

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to