aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2013-02-22 15:13:38 +0000
committerMatt Fleming <matt.fleming@intel.com>2013-02-23 11:52:17 +0000
commit41c29c26d70fde563d7c255872bbadad87a39dfa (patch)
treefb65b3d18965eecf58def8d531c4da6a18b1c7a9
parentab018ba3ce947f206bda2fc3c367a7eb4504b553 (diff)
downloadsyslinux-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.h2
-rw-r--r--com32/modules/cmd.c2
-rw-r--r--core/elflink/load_env32.c12
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 */