mtools: create an empty ADV syslinux-4.00-pre58
authorH. Peter Anvin <hpa@linux.intel.com>
Wed, 23 Jun 2010 00:09:52 +0000 (17:09 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Wed, 23 Jun 2010 00:09:52 +0000 (17:09 -0700)
Create an install an empty ADV.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
mtools/Makefile
mtools/syslinux.c

index 5f08b2d..70bed14 100644 (file)
@@ -9,6 +9,7 @@ LDFLAGS  = -s
 SRCS     = syslinux.c \
           ../libinstaller/fat.c \
           ../libinstaller/syslxmod.c \
+          ../libinstaller/setadv.c \
           ../libinstaller/bootsect_bin.c \
           ../libinstaller/ldlinux_bin.c \
           $(wildcard ../libfat/*.c)
index 0f4ccf9..ade8440 100644 (file)
@@ -37,6 +37,7 @@
 
 #include "syslinux.h"
 #include "libfat.h"
+#include "setadv.h"
 
 char *program;                 /* Name of program */
 char *device;                  /* Device to install to */
@@ -239,12 +240,20 @@ int main(int argc, char *argv[])
        exit(1);
     }
 
+    /*
+     * Create a vacuous ADV in memory.  This should be smarter.
+     */
+    syslinux_reset_adv(syslinux_adv);
+
     /* This command may fail legitimately */
     system("mattrib -h -r -s s:/ldlinux.sys 2>/dev/null");
 
     mtp = popen("mcopy -D o -D O -o - s:/ldlinux.sys", "w");
-    if (!mtp || (fwrite(syslinux_ldlinux, 1, syslinux_ldlinux_len, mtp)
-                != syslinux_ldlinux_len) ||
+    if (!mtp ||
+       fwrite(syslinux_ldlinux, 1, syslinux_ldlinux_len, mtp)
+               != syslinux_ldlinux_len ||
+       fwrite(syslinux_adv, 1, 2 * ADV_SIZE, mtp)
+               != 2 * ADV_SIZE ||
        (status = pclose(mtp), !WIFEXITED(status) || WEXITSTATUS(status))) {
        die("failed to create ldlinux.sys");
     }