aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2000-06-06 22:12:35 +0000
committerEric Andersen <andersen@codepoet.org>2000-06-06 22:12:35 +0000
commit32322032263c540a80ae38b249dfdeeecb10833e (patch)
treecf52c83b69926cbb153c04c07cdd3eb74a8e2536
parentd05e3ce5c2798fe869e19005e651e6bc6903ec1c (diff)
downloadbusybox-32322032263c540a80ae38b249dfdeeecb10833e.tar.gz
mkfs.minix rev 1.7 completely broke the option parser. This fixes it.
-Erik
-rw-r--r--TODO6
-rw-r--r--mkfs_minix.c36
-rw-r--r--util-linux/mkfs_minix.c36
3 files changed, 54 insertions, 24 deletions
diff --git a/TODO b/TODO
index 63fae0b5d..e6c9cfd8f 100644
--- a/TODO
+++ b/TODO
@@ -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)