mkfs.minix rev 1.7 completely broke the option parser. This fixes it.
-Erik
This commit is contained in:
		
							
								
								
									
										6
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								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). | ||||
|   | ||||
							
								
								
									
										36
									
								
								mkfs_minix.c
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								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) | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user