@dram reported a build failure in FreeBSD at
https://github.com/davidgiven/ack/issues/1#issuecomment-
273668299
Linux manual for getopt(3) says:
> If the first character of optstring is '-', then each nonoption
> argv-element is handled as if it were the argument of an option with
> character code 1....
>
> The use of '+' and '-' in optstring is a GNU extension.
GNU/Linux and OpenBSD handle '-' in this special way, but FreeBSD
seems not to. If '-' is not special, then em_ego can't find its input
file, so the build must fail. This commit stops using '-' in both
em_b and em_ego, but doesn't change mcg.
Also fix em_ego -O3 to not act like -O4.
np->offset = val;
}
+static void
+usage(void)
+{
+ error("Usage: em_b [-w wordsize] [-B modulename] [-i inputfile] [-o outputfile]");
+ exit(1);
+}
+
int
main(int argc, char *argv[])
{
for (;;) {
- int opt = getopt(argc, argv, "-w:B:i:o:");
+ int opt = getopt(argc, argv, "w:B:i:o:");
if (opt == -1)
break;
}
break;
- derfault:
- error("Usage: em_b [-w wordsize] [-B modulename] [-i inputfile] [-o outputfile]");
- exit(1);
+ default:
+ usage();
}
}
+ if (optind < argc)
+ usage();
init("auto", AUTO);
init("extrn", EXTERN);
opterr = 0;
for (;;)
{
- int opt = getopt(argc, argv, "-M:P:O:vt");
+ int opt = getopt(argc, argv, "M:P:O:vt");
if (opt == -1)
break;
{
int o = atoi(optarg);
if (o <= 2)
- break;
- if (o <= 3)
+ Ophase = &O2phases[0];
+ else if (o == 3)
Ophase = &O3phases[0];
- Ophase = &O4phases[0];
+ else
+ Ophase = &O4phases[0];
break;
}
- case 1:
- add_file(optarg);
- break;
-
case 't':
keeptemps = 1;
goto addopt;
}
}
+ for (i = optind; i < argc; i++)
+ add_file(argv[i]);
+
phase_args[nphase_args] = 0;
if (nuphases)
Ophase = uphases;