gfxboot: handle IPAPPEND
authorSteffen Winterfeldt <wfeldt@opensuse.org>
Tue, 13 Apr 2010 15:42:12 +0000 (17:42 +0200)
committerSebastian Herbszt <herbszt@gmx.de>
Sat, 24 Apr 2010 19:58:21 +0000 (21:58 +0200)
Signed-off-by: Steffen Winterfeldt <wfeldt@opensuse.org>
Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>
com32/gfxboot/gfxboot.c

index c300dcb..daf0056 100644 (file)
@@ -709,6 +709,8 @@ void boot(int index)
   char *arg;
   menu_t *menu_ptr;
   int label_len;
+  unsigned u, ipapp;
+  const struct syslinux_ipappend_strings *ipappend;
 
   for(menu_ptr = menu; menu_ptr; menu_ptr = menu_ptr->next, index--) {
     if(!index) break;
@@ -730,6 +732,16 @@ void boot(int index)
 
   arg = skip_spaces(arg);
 
+  // handle IPAPPEND
+  if(menu_ptr->ipappend && (ipapp = atoi(menu_ptr->ipappend))) {
+    ipappend = syslinux_ipappend_strings();
+    for(u = 0; u < ipappend->count; u++) {
+      if((ipapp & (1 << u)) && ipappend->ptr[u]) {
+        sprintf(arg + strlen(arg), " %s", ipappend->ptr[u]);
+      }
+    }
+  }
+
   boot_entry(menu_ptr, arg);
 }