aboutsummaryrefslogtreecommitdiff
path: root/util-linux
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 /util-linux
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
Diffstat (limited to 'util-linux')
-rw-r--r--util-linux/mkfs_minix.c36
1 files changed, 25 insertions, 11 deletions
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)