awk: getopt_ulflags'isation
This commit is contained in:
		@@ -2605,6 +2605,8 @@ static rstream *next_input_file(void)
 | 
			
		||||
 | 
			
		||||
int awk_main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	unsigned long opt;
 | 
			
		||||
	char *opt_F, *opt_v, *opt_W;
 | 
			
		||||
	char *s, *s1;
 | 
			
		||||
	int i, j, c, flen;
 | 
			
		||||
	var *v;
 | 
			
		||||
@@ -2660,49 +2662,37 @@ keep_going:
 | 
			
		||||
		free(s);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	while((c = getopt(argc, argv, "F:v:f:W:")) != EOF) {
 | 
			
		||||
		switch (c) {
 | 
			
		||||
			case 'F':
 | 
			
		||||
				setvar_s(V[FS], optarg);
 | 
			
		||||
				break;
 | 
			
		||||
			case 'v':
 | 
			
		||||
				if (! is_assignment(optarg))
 | 
			
		||||
					bb_show_usage();
 | 
			
		||||
				break;
 | 
			
		||||
			case 'f':
 | 
			
		||||
				from_file = TRUE;
 | 
			
		||||
				F = afopen(programname = optarg, "r");
 | 
			
		||||
				s = NULL;
 | 
			
		||||
				/* one byte is reserved for some trick in next_token */
 | 
			
		||||
				if (fseek(F, 0, SEEK_END) == 0) {
 | 
			
		||||
					flen = ftell(F);
 | 
			
		||||
					s = (char *)xmalloc(flen+4);
 | 
			
		||||
					fseek(F, 0, SEEK_SET);
 | 
			
		||||
					i = 1 + fread(s+1, 1, flen, F);
 | 
			
		||||
				} else {
 | 
			
		||||
					for (i=j=1; j>0; i+=j) {
 | 
			
		||||
						s = (char *)xrealloc(s, i+4096);
 | 
			
		||||
						j = fread(s+i, 1, 4094, F);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				s[i] = '\0';
 | 
			
		||||
				fclose(F);
 | 
			
		||||
				parse_program(s+1);
 | 
			
		||||
				free(s);
 | 
			
		||||
				break;
 | 
			
		||||
			case 'W':
 | 
			
		||||
				bb_error_msg("Warning: unrecognized option '-W %s' ignored", optarg);
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
			default:
 | 
			
		||||
				bb_show_usage();
 | 
			
		||||
	opt = bb_getopt_ulflags(argc, argv, "F:v:f:W:", &opt_F, &opt_v, &programname, &opt_W);
 | 
			
		||||
	if (opt & 0x1) setvar_s(V[FS], opt_F); // -F
 | 
			
		||||
	if (opt & 0x2) if (!is_assignment(opt_v)) bb_show_usage(); // -v
 | 
			
		||||
	if (opt & 0x4) { // -f
 | 
			
		||||
		from_file = TRUE;
 | 
			
		||||
		F = afopen(programname, "r");
 | 
			
		||||
		s = NULL;
 | 
			
		||||
		/* one byte is reserved for some trick in next_token */
 | 
			
		||||
		if (fseek(F, 0, SEEK_END) == 0) {
 | 
			
		||||
			flen = ftell(F);
 | 
			
		||||
			s = (char *)xmalloc(flen+4);
 | 
			
		||||
			fseek(F, 0, SEEK_SET);
 | 
			
		||||
			i = 1 + fread(s+1, 1, flen, F);
 | 
			
		||||
		} else {
 | 
			
		||||
			for (i=j=1; j>0; i+=j) {
 | 
			
		||||
				s = (char *)xrealloc(s, i+4096);
 | 
			
		||||
				j = fread(s+i, 1, 4094, F);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		s[i] = '\0';
 | 
			
		||||
		fclose(F);
 | 
			
		||||
		parse_program(s+1);
 | 
			
		||||
		free(s);
 | 
			
		||||
	}
 | 
			
		||||
	if (opt & 0x8) // -W
 | 
			
		||||
		bb_error_msg("Warning: unrecognized option '-W %s' ignored", opt_W);
 | 
			
		||||
 | 
			
		||||
	if (!from_file) {
 | 
			
		||||
		if (argc == optind)
 | 
			
		||||
			bb_show_usage();
 | 
			
		||||
		programname="cmd. line";
 | 
			
		||||
		programname = "cmd. line";
 | 
			
		||||
		parse_program(argv[optind++]);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user