diff options
author | Matt Fleming <matt.fleming@intel.com> | 2013-02-22 15:13:38 +0000 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2013-02-23 11:52:17 +0000 |
commit | 41c29c26d70fde563d7c255872bbadad87a39dfa (patch) | |
tree | fb65b3d18965eecf58def8d531c4da6a18b1c7a9 | |
parent | ab018ba3ce947f206bda2fc3c367a7eb4504b553 (diff) | |
download | syslinux-41c29c26d70fde563d7c255872bbadad87a39dfa.tar.gz syslinux-41c29c26d70fde563d7c255872bbadad87a39dfa.tar.xz syslinux-41c29c26d70fde563d7c255872bbadad87a39dfa.zip |
com32: Add com32_cmdline() which returns argv[1..argc-1]syslinux-5.02-pre3
cmd.c32 needs an equivalent of __com32.cs_cmdline now that the COMBOOT
code is dead. Introducing com32_cmdline(), which returns a string
consisting of module arguments from argv[1] to argv[argc-1], separated
by spaces.
Reported-by: Gene Cumm <gene.cumm@gmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
-rw-r--r-- | com32/include/com32.h | 2 | ||||
-rw-r--r-- | com32/modules/cmd.c | 2 | ||||
-rw-r--r-- | core/elflink/load_env32.c | 12 |
3 files changed, 15 insertions, 1 deletions
diff --git a/com32/include/com32.h b/com32/include/com32.h index 148d08eb..795b9fba 100644 --- a/com32/include/com32.h +++ b/com32/include/com32.h @@ -206,4 +206,6 @@ static inline far_ptr_t FAR_PTR(void *__ptr) return __fptr; } +extern const char *com32_cmdline(void); + #endif /* _COM32_H */ diff --git a/com32/modules/cmd.c b/com32/modules/cmd.c index 5d3f8918..233c7cac 100644 --- a/com32/modules/cmd.c +++ b/com32/modules/cmd.c @@ -21,6 +21,6 @@ int main(void) { - syslinux_run_command(__com32.cs_cmdline); + syslinux_run_command(com32_cmdline()); return -1; } diff --git a/core/elflink/load_env32.c b/core/elflink/load_env32.c index 50ec266d..0483d865 100644 --- a/core/elflink/load_env32.c +++ b/core/elflink/load_env32.c @@ -186,6 +186,12 @@ out: writestr("\nFailed to load ldlinux.c32"); } +static const char *__cmdline; +__export const char *com32_cmdline(void) +{ + return __cmdline; +} + __export int create_args_and_load(char *cmdline) { char *p, **argv; @@ -237,6 +243,12 @@ __export int create_args_and_load(char *cmdline) */ while (*p && isspace(*p)) p++; + + /* + * Point __cmdline at "argv[1] ... argv[argc-1]" + */ + if (i == 0) + __cmdline = p; } /* NUL-terminate */ |