aboutsummaryrefslogtreecommitdiffstats
path: root/mtools
diff options
context:
space:
mode:
Diffstat (limited to 'mtools')
-rw-r--r--mtools/Makefile1
-rw-r--r--mtools/syslinux.c13
2 files changed, 12 insertions, 2 deletions
diff --git a/mtools/Makefile b/mtools/Makefile
index 5f08b2d3..70bed14c 100644
--- a/mtools/Makefile
+++ b/mtools/Makefile
@@ -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)
diff --git a/mtools/syslinux.c b/mtools/syslinux.c
index 0f4ccf9c..ade84402 100644
--- a/mtools/syslinux.c
+++ b/mtools/syslinux.c
@@ -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");
}