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-w32-32322032263c540a80ae38b249dfdeeecb10833e.tar.gz
busybox-w32-32322032263c540a80ae38b249dfdeeecb10833e.tar.bz2
busybox-w32-32322032263c540a80ae38b249dfdeeecb10833e.zip
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:
22 - 'grep foo$ file' doesn't work 22 - 'grep foo$ file' doesn't work
23 - 'grep *foo file' segfaults 23 - 'grep *foo file' segfaults
24 - ps dirent race bug (need to stat the file before attempting chdir) 24 - ps dirent race bug (need to stat the file before attempting chdir)
25 - I believe that swaponoff may also be also broken (check it). 25 - The following commands segfault or are broken:
26 - It used to be that BusyBox tar would happily overwrite existing files on 26 date -u
27 - I believe that swaponoff may also be also broken (check it).
28 - It used to be that BusyBox tar would happily overwrite existing files on
27 an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an 29 an extraction. However, as of 0.42, BusyBox tar simply dies as soon as an
28 existing file is found. 30 existing file is found.
29 - Make 'mount -a' work even when /proc isn't mounted (ugly bug). 31 - 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;
644 644
645extern int mkfs_minix_main(int argc, char **argv) 645extern int mkfs_minix_main(int argc, char **argv)
646{ 646{
647 int i; 647 int i=1;
648 char *tmp; 648 char *tmp;
649 struct stat statbuf; 649 struct stat statbuf;
650 char *listfile = NULL; 650 char *listfile = NULL;
@@ -660,43 +660,57 @@ extern int mkfs_minix_main(int argc, char **argv)
660#endif 660#endif
661 661
662 /* Parse options */ 662 /* Parse options */
663 //printf("argc='%d' argv='%s'\n", argc, *argv); 663printf("erik: argc='%d' argv='%s'\n", argc, *argv);
664 argv++; 664 argv++;
665 while (--argc >= 0 && *argv && **argv) { 665 while (--argc >= 0 && *argv && **argv) {
666 if (**argv == '-') { 666 if (**argv == '-') {
667 stopIt=FALSE; 667 stopIt=FALSE;
668 while (i > 0 && *++(*argv) && stopIt==FALSE) { 668 while (i > 0 && *++(*argv) && stopIt==FALSE) {
669 //printf("argc='%d' argv='%s'\n", argc, *argv); 669printf("erik: argc='%d' argv='%s'\n", argc, *argv);
670 switch (**argv) { 670 switch (**argv) {
671 case 'c': 671 case 'c':
672 check = 1; 672 check = 1;
673 break; 673 break;
674 case 'i': 674 case 'i':
675 if (--argc == 0) { 675 {
676 goto goodbye; 676 char *cp=NULL;
677 if (*(*argv+1) != 0) {
678 cp = ++(*argv);
679 } else {
680 if (--argc == 0) {
681 goto goodbye;
682 }
683 cp = *(++argv);
684 }
685 req_nr_inodes = strtoul(cp, &tmp, 0);
686 if (*tmp)
687 show_usage();
688printf("erik: nr_inodes=%ld\n", req_nr_inodes);
689 stopIt=TRUE;
690 break;
677 } 691 }
678 req_nr_inodes = (unsigned long) atol(*(++argv));
679 break;
680 case 'l': 692 case 'l':
681 if (--argc == 0) { 693 if (--argc == 0) {
682 goto goodbye; 694 goto goodbye;
683 } 695 }
684 listfile = *(++argv); 696 listfile = *(++argv);
697printf("erik: listfile='%s'\n", listfile);
685 break; 698 break;
686 case 'n': 699 case 'n':
687 { 700 {
688 char *cp=NULL; 701 char *cp=NULL;
689 702
690 if (--argc == 0) {
691 goto goodbye;
692 }
693 if (*(*argv+1) != 0) { 703 if (*(*argv+1) != 0) {
694 cp = ++(*argv); 704 cp = ++(*argv);
695 } else { 705 } else {
706 if (--argc == 0) {
707 goto goodbye;
708 }
696 cp = *(++argv); 709 cp = *(++argv);
697 } 710 }
698 i = strtoul(cp, &tmp, 0); 711 i = strtoul(cp, &tmp, 0);
699 //printf("cp='%s' i='%d'\n", cp, i); 712 //printf("cp='%s' i='%d'\n", cp, i);
713printf("erik: namelen=%d\n", i);
700 if (*tmp) 714 if (*tmp)
701 show_usage(); 715 show_usage();
702 if (i == 14) 716 if (i == 14)
@@ -727,7 +741,7 @@ goodbye:
727 } 741 }
728 } 742 }
729 } else { 743 } else {
730 //printf("else: argc='%d' argv='%s'\n", argc, *argv); 744printf("else: argc='%d' argv='%s'\n", argc, *argv);
731 if (device_name == NULL) 745 if (device_name == NULL)
732 device_name = *argv; 746 device_name = *argv;
733 else if (BLOCKS == 0) 747 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;
644 644
645extern int mkfs_minix_main(int argc, char **argv) 645extern int mkfs_minix_main(int argc, char **argv)
646{ 646{
647 int i; 647 int i=1;
648 char *tmp; 648 char *tmp;
649 struct stat statbuf; 649 struct stat statbuf;
650 char *listfile = NULL; 650 char *listfile = NULL;
@@ -660,43 +660,57 @@ extern int mkfs_minix_main(int argc, char **argv)
660#endif 660#endif
661 661
662 /* Parse options */ 662 /* Parse options */
663 //printf("argc='%d' argv='%s'\n", argc, *argv); 663printf("erik: argc='%d' argv='%s'\n", argc, *argv);
664 argv++; 664 argv++;
665 while (--argc >= 0 && *argv && **argv) { 665 while (--argc >= 0 && *argv && **argv) {
666 if (**argv == '-') { 666 if (**argv == '-') {
667 stopIt=FALSE; 667 stopIt=FALSE;
668 while (i > 0 && *++(*argv) && stopIt==FALSE) { 668 while (i > 0 && *++(*argv) && stopIt==FALSE) {
669 //printf("argc='%d' argv='%s'\n", argc, *argv); 669printf("erik: argc='%d' argv='%s'\n", argc, *argv);
670 switch (**argv) { 670 switch (**argv) {
671 case 'c': 671 case 'c':
672 check = 1; 672 check = 1;
673 break; 673 break;
674 case 'i': 674 case 'i':
675 if (--argc == 0) { 675 {
676 goto goodbye; 676 char *cp=NULL;
677 if (*(*argv+1) != 0) {
678 cp = ++(*argv);
679 } else {
680 if (--argc == 0) {
681 goto goodbye;
682 }
683 cp = *(++argv);
684 }
685 req_nr_inodes = strtoul(cp, &tmp, 0);
686 if (*tmp)
687 show_usage();
688printf("erik: nr_inodes=%ld\n", req_nr_inodes);
689 stopIt=TRUE;
690 break;
677 } 691 }
678 req_nr_inodes = (unsigned long) atol(*(++argv));
679 break;
680 case 'l': 692 case 'l':
681 if (--argc == 0) { 693 if (--argc == 0) {
682 goto goodbye; 694 goto goodbye;
683 } 695 }
684 listfile = *(++argv); 696 listfile = *(++argv);
697printf("erik: listfile='%s'\n", listfile);
685 break; 698 break;
686 case 'n': 699 case 'n':
687 { 700 {
688 char *cp=NULL; 701 char *cp=NULL;
689 702
690 if (--argc == 0) {
691 goto goodbye;
692 }
693 if (*(*argv+1) != 0) { 703 if (*(*argv+1) != 0) {
694 cp = ++(*argv); 704 cp = ++(*argv);
695 } else { 705 } else {
706 if (--argc == 0) {
707 goto goodbye;
708 }
696 cp = *(++argv); 709 cp = *(++argv);
697 } 710 }
698 i = strtoul(cp, &tmp, 0); 711 i = strtoul(cp, &tmp, 0);
699 //printf("cp='%s' i='%d'\n", cp, i); 712 //printf("cp='%s' i='%d'\n", cp, i);
713printf("erik: namelen=%d\n", i);
700 if (*tmp) 714 if (*tmp)
701 show_usage(); 715 show_usage();
702 if (i == 14) 716 if (i == 14)
@@ -727,7 +741,7 @@ goodbye:
727 } 741 }
728 } 742 }
729 } else { 743 } else {
730 //printf("else: argc='%d' argv='%s'\n", argc, *argv); 744printf("else: argc='%d' argv='%s'\n", argc, *argv);
731 if (device_name == NULL) 745 if (device_name == NULL)
732 device_name = *argv; 746 device_name = *argv;
733 else if (BLOCKS == 0) 747 else if (BLOCKS == 0)