[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