[syslinux] [PATCH] ifcpuXX: Support multiple parameters with labels
Miller, Shao
Shao.Miller at yrdsb.edu.on.ca
Sat Jun 12 08:12:00 PDT 2010
Even though Doug's out of the office, I'm submitting a patch to the
ifcpu[|64].c32 COMBOOT32 modules for testing. Also available for
perusal with a web browser at:
http://git.zytor.com/?p=users/sha0/syslinux.git;a=commitdiff;h=cc70d0fa5
5e35fabf250f4dccbaed2fa44f56da7
- Shao Miller
---
>From cc70d0fa55e35fabf250f4dccbaed2fa44f56da7 Mon Sep 17 00:00:00 2001
From: Shao Miller <sha0 at terminus.zytor.com>
Date: Sat, 12 Jun 2010 08:03:28 -0700
Subject: [PATCH] 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 at yrdsb.edu.on.ca>
---
com32/modules/ifcpu.c | 9 ++++++---
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 8a9a5f4..1e57f08 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 6d566a2..e123922 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])
--
1.7.0.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ifcpuXX-Support-multiple-parameters-with-labels.patch
Type: application/octet-stream
Size: 2152 bytes
Desc: 0001-ifcpuXX-Support-multiple-parameters-with-labels.patch
URL: <http://www.zytor.com/pipermail/syslinux/attachments/20100612/62e84e71/attachment.obj>
More information about the Syslinux
mailing list