diff options
author | Shao Miller <sha0@terminus.zytor.com> | 2010-06-12 08:03:28 -0700 |
---|---|---|
committer | Shao Miller <sha0@terminus.zytor.com> | 2010-06-12 08:03:28 -0700 |
commit | cc70d0fa55e35fabf250f4dccbaed2fa44f56da7 (patch) | |
tree | f495f3a051484b3f0b0b1591cc647ca435ed5e17 | |
parent | 08b3602db548775ca819780de77686a186156ec7 (diff) | |
download | syslinux-cc70d0fa55e35fabf250f4dccbaed2fa44f56da7.tar.gz |
ifcpuXX: Support multiple parameters with labels
The ifcpu.c32 and ifcpu64.c32 modules take arguments including
the form <true_label> -- <false_label>. It is convenient to
allow these labels to be not just a single word, but to include
parameters. This is useful for <TAB>-editing and modifying the
command-line to include parameters you'd like to pass.
Not-yet-tested: Shao Miller <shao.miller@yrdsb.edu.on.ca>
-rw-r--r-- | com32/modules/ifcpu.c | 9 | ||||
-rw-r--r-- | com32/modules/ifcpu64.c | 9 |
2 files changed, 12 insertions, 6 deletions
diff --git a/com32/modules/ifcpu.c b/com32/modules/ifcpu.c index 8a9a5f4f..1e57f088 100644 --- a/com32/modules/ifcpu.c +++ b/com32/modules/ifcpu.c @@ -71,20 +71,23 @@ static unsigned char sleep(unsigned int msec) /* XXX: this really should be librarized */ static void boot_args(char **args) { - int len = 0; + int len = 0, a = 0; char **pp; const char *p; char c, *q, *str; for (pp = args; *pp; pp++) - len += strlen(*pp); + len += strlen(*pp) + 1; - q = str = alloca(len + 1); + q = str = alloca(len); for (pp = args; *pp; pp++) { p = *pp; while ((c = *p++)) *q++ = c; + *q++ = ' '; + a = 1; } + q -= a; *q = '\0'; if (!str[0]) diff --git a/com32/modules/ifcpu64.c b/com32/modules/ifcpu64.c index 6d566a25..e123922e 100644 --- a/com32/modules/ifcpu64.c +++ b/com32/modules/ifcpu64.c @@ -73,20 +73,23 @@ static bool __constfunc cpu_has_feature(int x) /* XXX: this really should be librarized */ static void boot_args(char **args) { - int len = 0; + int len = 0, a = 0; char **pp; const char *p; char c, *q, *str; for (pp = args; *pp; pp++) - len += strlen(*pp); + len += strlen(*pp) + 1; - q = str = alloca(len + 1); + q = str = alloca(len); for (pp = args; *pp; pp++) { p = *pp; while ((c = *p++)) *q++ = c; + *q++ = ' '; + a = 1; } + q -= a; *q = '\0'; if (!str[0]) |