diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-06-06 22:12:35 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-06-06 22:12:35 +0000 |
commit | 32322032263c540a80ae38b249dfdeeecb10833e (patch) | |
tree | cf52c83b69926cbb153c04c07cdd3eb74a8e2536 | |
parent | d05e3ce5c2798fe869e19005e651e6bc6903ec1c (diff) | |
download | busybox-32322032263c540a80ae38b249dfdeeecb10833e.tar.gz |
mkfs.minix rev 1.7 completely broke the option parser. This fixes it.
-Erik
-rw-r--r-- | TODO | 6 | ||||
-rw-r--r-- | mkfs_minix.c | 36 | ||||
-rw-r--r-- | util-linux/mkfs_minix.c | 36 |
3 files changed, 54 insertions, 24 deletions
@@ -22,8 +22,10 @@ Bugs that need fixing before the 0.44 release goes out the door: - 'grep foo$ file' doesn't work - 'grep *foo file' segfaults - ps dirent race bug (need to stat the file before attempting chdir) - - I believe that swaponoff may also be also broken (check it). - - It used to be that BusyBox tar would happily overwrite existing files on + - The following commands segfault or are broken: + date -u + - I believe that swaponoff may also be also broken (check it). + - It used to be that BusyBox tar would happily overwrite existing files on an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an existing file is found. - Make 'mount -a' work even when /proc isn't mounted (ugly bug). diff --git a/mkfs_minix.c b/mkfs_minix.c index ef37c385d..43f5a087e 100644 --- a/mkfs_minix.c +++ b/mkfs_minix.c @@ -644,7 +644,7 @@ char *filename; extern int mkfs_minix_main(int argc, char **argv) { - int i; + int i=1; char *tmp; struct stat statbuf; char *listfile = NULL; @@ -660,43 +660,57 @@ extern int mkfs_minix_main(int argc, char **argv) #endif /* Parse options */ - //printf("argc='%d' argv='%s'\n", argc, *argv); +printf("erik: argc='%d' argv='%s'\n", argc, *argv); argv++; while (--argc >= 0 && *argv && **argv) { if (**argv == '-') { stopIt=FALSE; while (i > 0 && *++(*argv) && stopIt==FALSE) { - //printf("argc='%d' argv='%s'\n", argc, *argv); +printf("erik: argc='%d' argv='%s'\n", argc, *argv); switch (**argv) { case 'c': check = 1; break; case 'i': - if (--argc == 0) { - goto goodbye; + { + char *cp=NULL; + if (*(*argv+1) != 0) { + cp = ++(*argv); + } else { + if (--argc == 0) { + goto goodbye; + } + cp = *(++argv); + } + req_nr_inodes = strtoul(cp, &tmp, 0); + if (*tmp) + show_usage(); +printf("erik: nr_inodes=%ld\n", req_nr_inodes); + stopIt=TRUE; + break; } - req_nr_inodes = (unsigned long) atol(*(++argv)); - break; case 'l': if (--argc == 0) { goto goodbye; } listfile = *(++argv); +printf("erik: listfile='%s'\n", listfile); break; case 'n': { char *cp=NULL; - if (--argc == 0) { - goto goodbye; - } if (*(*argv+1) != 0) { cp = ++(*argv); } else { + if (--argc == 0) { + goto goodbye; + } cp = *(++argv); } i = strtoul(cp, &tmp, 0); //printf("cp='%s' i='%d'\n", cp, i); +printf("erik: namelen=%d\n", i); if (*tmp) show_usage(); if (i == 14) @@ -727,7 +741,7 @@ goodbye: } } } else { - //printf("else: argc='%d' argv='%s'\n", argc, *argv); +printf("else: argc='%d' argv='%s'\n", argc, *argv); if (device_name == NULL) device_name = *argv; else if (BLOCKS == 0) diff --git a/util-linux/mkfs_minix.c b/util-linux/mkfs_minix.c index ef37c385d..43f5a087e 100644 --- a/util-linux/mkfs_minix.c +++ b/util-linux/mkfs_minix.c @@ -644,7 +644,7 @@ char *filename; extern int mkfs_minix_main(int argc, char **argv) { - int i; + int i=1; char *tmp; struct stat statbuf; char *listfile = NULL; @@ -660,43 +660,57 @@ extern int mkfs_minix_main(int argc, char **argv) #endif /* Parse options */ - //printf("argc='%d' argv='%s'\n", argc, *argv); +printf("erik: argc='%d' argv='%s'\n", argc, *argv); argv++; while (--argc >= 0 && *argv && **argv) { if (**argv == '-') { stopIt=FALSE; while (i > 0 && *++(*argv) && stopIt==FALSE) { - //printf("argc='%d' argv='%s'\n", argc, *argv); +printf("erik: argc='%d' argv='%s'\n", argc, *argv); switch (**argv) { case 'c': check = 1; break; case 'i': - if (--argc == 0) { - goto goodbye; + { + char *cp=NULL; + if (*(*argv+1) != 0) { + cp = ++(*argv); + } else { + if (--argc == 0) { + goto goodbye; + } + cp = *(++argv); + } + req_nr_inodes = strtoul(cp, &tmp, 0); + if (*tmp) + show_usage(); +printf("erik: nr_inodes=%ld\n", req_nr_inodes); + stopIt=TRUE; + break; } - req_nr_inodes = (unsigned long) atol(*(++argv)); - break; case 'l': if (--argc == 0) { goto goodbye; } listfile = *(++argv); +printf("erik: listfile='%s'\n", listfile); break; case 'n': { char *cp=NULL; - if (--argc == 0) { - goto goodbye; - } if (*(*argv+1) != 0) { cp = ++(*argv); } else { + if (--argc == 0) { + goto goodbye; + } cp = *(++argv); } i = strtoul(cp, &tmp, 0); //printf("cp='%s' i='%d'\n", cp, i); +printf("erik: namelen=%d\n", i); if (*tmp) show_usage(); if (i == 14) @@ -727,7 +741,7 @@ goodbye: } } } else { - //printf("else: argc='%d' argv='%s'\n", argc, *argv); +printf("else: argc='%d' argv='%s'\n", argc, *argv); if (device_name == NULL) device_name = *argv; else if (BLOCKS == 0) |