summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MCONFIG.local1
-rw-r--r--NEWS2
-rw-r--r--dos/syslinux.c80
-rw-r--r--libinstaller/syslxopt.c5
-rwxr-xr-xwin32/syslinux.c2
5 files changed, 23 insertions, 67 deletions
diff --git a/MCONFIG.local b/MCONFIG.local
deleted file mode 100644
index f91fc160..00000000
--- a/MCONFIG.local
+++ /dev/null
@@ -1 +0,0 @@
-CFLAGS += -DDEBUG=1
diff --git a/NEWS b/NEWS
index dff79d95..88d12360 100644
--- a/NEWS
+++ b/NEWS
@@ -24,7 +24,7 @@ Changes in 4.02:
full.
* Handle fallbacks from EDD to CHS, to deal with systems which
announce EDD support but don't actually have it.
- * SYSLINUX: the mtools and win32 installers now use the new
+ * SYSLINUX: the mtools, DOS and win32 installers now use the new
command line options.
Changes in 4.01:
diff --git a/dos/syslinux.c b/dos/syslinux.c
index 1e086596..b5fdfc52 100644
--- a/dos/syslinux.c
+++ b/dos/syslinux.c
@@ -32,7 +32,7 @@
#include "syslxopt.h"
#include "syslxint.h"
-const char *program = "syslinux"; /* Name of program */
+char *program = "syslinux.com"; /* Name of program */
uint16_t dos_version;
#ifdef DEBUG
@@ -587,22 +587,14 @@ int main(int argc, char *argv[])
static unsigned char sectbuf[SECTOR_SIZE];
int dev_fd, fd;
static char ldlinux_name[] = "@:\\ldlinux.sys";
- char **argp, *opt;
- int force = 0; /* -f (force) option */
struct libfat_filesystem *fs;
libfat_sector_t s, *secp;
libfat_sector_t *sectors;
int ldlinux_sectors;
int32_t ldlinux_cluster;
int nsectors;
- const char *device = NULL, *bootsecfile = NULL;
const char *errmsg;
int i;
- int writembr = 0; /* -m (write MBR) option */
- int set_active = 0; /* -a (set partition active) option */
- const char *subdir = NULL;
- int stupid = 0;
- int raid_mode = 0;
int patch_sectors;
unsigned char *dp;
@@ -610,54 +602,20 @@ int main(int argc, char *argv[])
for (i = 0; i <= argc; i++)
dprintf("argv[%d] = %p = \"%s\"\n", i, argv[i], argv[i]);
- (void)argc; /* Unused */
-
get_dos_version();
- for (argp = argv + 1; *argp; argp++) {
- if (**argp == '-') {
- opt = *argp + 1;
- if (!*opt)
- usage(EX_USAGE, MODE_SYSLINUX_DOSWIN);
-
- while (*opt) {
- switch (*opt) {
- case 's': /* Use "safe, slow and stupid" code */
- stupid = 1;
- break;
- case 'r': /* RAID mode */
- raid_mode = 1;
- break;
- case 'f': /* Force install */
- force = 1;
- break;
- case 'm': /* Write MBR */
- writembr = 1;
- break;
- case 'a': /* Set partition active */
- set_active = 1;
- break;
- case 'd':
- if (argp[1])
- subdir = *++argp;
- break;
- default:
- usage(EX_USAGE, MODE_SYSLINUX_DOSWIN);
- }
- opt++;
- }
- } else {
- if (bootsecfile)
- usage(EX_USAGE, MODE_SYSLINUX_DOSWIN);
- else if (device)
- bootsecfile = *argp;
- else
- device = *argp;
- }
- }
+ argv[0] = program;
+ parse_options(argc, argv, MODE_SYSLINUX_DOSWIN);
- if (!device)
+ if (!opt.device)
usage(EX_USAGE, MODE_SYSLINUX_DOSWIN);
+ if (opt.sectors || opt.heads || opt.reset_adv || opt.set_once
+ || (opt.update_only > 0) || opt.menu_save || opt.offset) {
+ fprintf(stderr,
+ "At least one specified option not yet implemented"
+ " for this installer.\n");
+ exit(1);
+ }
/*
* Create an ADV in memory... this should be smarter.
@@ -667,8 +625,8 @@ int main(int argc, char *argv[])
/*
* Figure out which drive we're talking to
*/
- dev_fd = (device[0] & ~0x20) - 0x40;
- if (dev_fd < 1 || dev_fd > 26 || device[1] != ':' || device[2])
+ dev_fd = (opt.device[0] & ~0x20) - 0x40;
+ if (dev_fd < 1 || dev_fd > 26 || opt.device[1] != ':' || opt.device[2])
usage(EX_USAGE, MODE_SYSLINUX_DOSWIN);
set_lock_device(dev_fd);
@@ -721,7 +679,7 @@ int main(int argc, char *argv[])
/*
* If requested, move ldlinux.sys
*/
- if (subdir) {
+ if (opt.directory) {
char new_ldlinux_name[160];
char *cp = new_ldlinux_name + 3;
const char *sd;
@@ -731,7 +689,7 @@ int main(int argc, char *argv[])
new_ldlinux_name[1] = ':';
new_ldlinux_name[2] = '\\';
- for (sd = subdir; *sd; sd++) {
+ for (sd = opt.directory; *sd; sd++) {
char c = *sd;
if (c == '/' || c == '\\') {
@@ -764,7 +722,7 @@ int main(int argc, char *argv[])
/*
* Patch ldlinux.sys and the boot sector
*/
- i = syslinux_patch(sectors, nsectors, stupid, raid_mode, subdir, NULL);
+ i = syslinux_patch(sectors, nsectors, opt.stupid_mode, opt.raid_mode, opt.directory, NULL);
patch_sectors = (i + SECTOR_SIZE - 1) >> SECTOR_SHIFT;
/*
@@ -781,7 +739,7 @@ int main(int argc, char *argv[])
/*
* Muck with the MBR, if desired, while we hold the lock
*/
- adjust_mbr(dev_fd, writembr, set_active);
+ adjust_mbr(dev_fd, opt.install_mbr, opt.activate_partition);
/*
* To finish up, write the boot sector
@@ -794,9 +752,9 @@ int main(int argc, char *argv[])
syslinux_make_bootsect(sectbuf);
/* Write new boot sector */
- if (bootsecfile) {
+ if (opt.bootsecfile) {
unlock_device(0);
- fd = creat(bootsecfile, 0x20); /* ARCHIVE */
+ fd = creat(opt.bootsecfile, 0x20); /* ARCHIVE */
write_file(fd, sectbuf, SECTOR_SIZE);
close(fd);
} else {
diff --git a/libinstaller/syslxopt.c b/libinstaller/syslxopt.c
index eb00dbd2..18a6baac 100644
--- a/libinstaller/syslxopt.c
+++ b/libinstaller/syslxopt.c
@@ -93,7 +93,8 @@ void __attribute__ ((noreturn)) usage(int rv, enum syslinux_mode mode)
case MODE_SYSLINUX_DOSWIN:
/* For fs installation under Windows (syslinux.exe) */
fprintf(stderr,
- "Usage: %s [options] <drive>: [bootsecfile]\n",
+ "Usage: %s [options] <drive>: [bootsecfile]\n"
+ " --directory -d Directory for installation target\n",
program);
break;
}
@@ -123,7 +124,7 @@ void __attribute__ ((noreturn)) usage(int rv, enum syslinux_mode mode)
" which includes zipdisks and LS-120 superfloppies.\n"
"\n"
" The -z option is useful for USB devices which are considered\n"
- " hard disks by some BIOSes and zipdrives by other BIOSes.\n");
+ " hard disks by some BIOSes and zipdrives by other BIOSes.");
exit(rv);
}
diff --git a/win32/syslinux.c b/win32/syslinux.c
index 94593859..1f95e842 100755
--- a/win32/syslinux.c
+++ b/win32/syslinux.c
@@ -252,8 +252,6 @@ int main(int argc, char *argv[])
uint32_t ldlinux_cluster;
int nsectors;
- (void)argc;
-
if (!checkver()) {
fprintf(stderr,
"You need to be running at least Windows NT; use syslinux.com instead.\n");