[syslinux] suggestions for global APPEND consistency

Ady
Tue, 12 Feb 2013 20:17:33 -0000

Hello Syslinux Team,

I have some suggestions / requests regarding global APPEND commands.
These would make the behavior more consistent and more useful for
practical cases.

1_ Add some functionality equivalent to "APPEND -" to the command
prompt.

2_ Activate the functionality of ONERROR from [vesa]menu.c32 too.
Currently, ONERROR only works from the command prompt.

3_ Add a new directive that would function as global APPEND, with the
difference that it could be merged with specific KERNEL+INITRD+APPEND
commands (those that are used after LABEL). *Just for the purpose of
this email*, let's call it [MENU] GAPPEND (Please forgive me if using
the word "MENU" for this new suggested directive is not appropriate;
the concepts I post here are still applicable without this word, so I
will use [MENU] GAPPEND). The resulting generic command would be:
KERNEL + [MENU] GAPPEND + INITRD + APPEND (in this order). Any of the
four parts of this resulting command could be not-explicitly stated
in the cfg file.

4_ When pressing TAB on a LABEL in [vesa]menu.c32, the command line
should display ALL the resulting commands, including [MENU] GAPPEND.

5_ For [MENU] GAPPEND, if the resulting command is manually edited in
the boot prompt, the edition should be respected (as oppose to
silently forcing [MENU] GAPPEND).


Current inconsistencies (before implementing the suggestions):
Currently, a global APPEND is ALWAYS merged and silently forced from
the command prompt, but it is never displayed, and there is no method
to override it. From [vesa]menu.c32, the current global APPEND is not
merged when a specific APPEND is used. ONERROR is (silently) used
from the command prompt, but not when selecting a label entry from
the menu.

By implementing the five aforementioned suggestions, the behavior
would be consistent between the command prompt and [vesa]menu.c32,
and it would make the current global APPEND and the new suggested
[MENU] GAPPEND usable for several practical situations. Such
consistency would be achieved from the command prompt ("prompt 1"),
from [vesa]menu, and when pressing TAB when a label is selected from
[vesa]menu.


One such practical case could be the improvement of following cfg
file:

 ***
UI menu.c32
PROMP 0

LABEL 1
LINUX mykernel
INITRD myinitramfs
APPEND Very long list of options

LABEL slightly_modified_1
LINUX mykernel
INITRD myinitramfs
APPEND Very long list of options lang=xyz

# And there are MANY more labels using a slightly modified resulting
command.
 ***

where the APPEND commands in LABEL 1 are repeated again and again in
each additional label entry. This repeated "Very long list of
options" would be replaced by one "[MENU] GAPPEND Very long list of
options".

A different scenario: The new suggested [MENU] GAPPEND could include
the KERNEL and the INITRD commands, and each LABEL entry could just
have a different specific APPEND.

I can provide additional alternative possible scenarios if needed /
wanted.

The current global APPEND would still be usable for other cases,
where specific APPEND commands replace (not merge) the global APPEND,
and it is still forced when not using [vesa]menu.c32 (hence,
suggestion #1).

The current "APPEND -" in a label entry would override [MENU] GAPPEND
too (for that entry).

For the current global APPEND to be effectively usable, at least
suggestion #1 is essential for consistency, and suggestion #4 is very
desirable.

For the new suggested [MENU] GAPPEND to be usable, suggestion #1 is
not essential (yet desirable), but suggestion #4 is (almost)
essential.

Hopefully these suggestions make sense and can be implemented in
Syslinux. If I wasn't clear or if there is any question, please don't
hesitate to ask.

TIA,
Ady.