mkfs.minix rev 1.7 completely broke the option parser. This fixes it.

-Erik
This commit is contained in:
Eric Andersen 2000-06-06 22:12:35 +00:00
parent d05e3ce5c2
commit 3232203226
3 changed files with 54 additions and 24 deletions

2
TODO
View File

@ -22,6 +22,8 @@ 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)
- 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

View File

@ -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':
{
char *cp=NULL;
if (*(*argv+1) != 0) {
cp = ++(*argv);
} else {
if (--argc == 0) {
goto goodbye;
}
req_nr_inodes = (unsigned long) atol(*(++argv));
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;
}
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)

View File

@ -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':
{
char *cp=NULL;
if (*(*argv+1) != 0) {
cp = ++(*argv);
} else {
if (--argc == 0) {
goto goodbye;
}
req_nr_inodes = (unsigned long) atol(*(++argv));
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;
}
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)