mkfs.minix rev 1.7 completely broke the option parser. This fixes it.
-Erik
This commit is contained in:
parent
d05e3ce5c2
commit
3232203226
2
TODO
2
TODO
@ -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
|
||||
|
30
mkfs_minix.c
30
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':
|
||||
{
|
||||
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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user