commit - b45ef13d08286e9dfb77fdad14c845885535f0b7
commit + c3465169d316c7a08fe3d1d2dffc5a0bb72d189b
blob - c4d1e1fad4add26b371a08609689fe243cdd6866
blob + 234fc31e30c9c0ee56f9ef045acdb1fbe2370a72
--- identity.c
+++ identity.c
main(int argc, char **argv)
{
const struct cmd *cmd;
- int ch;
size_t i;
- while ((ch = getopt(argc, argv, "")) != -1) {
- switch (ch) {
- default:
- usage();
- }
- }
- argc -= optind;
- argv += optind;
- optind = 0;
- optreset = 1;
+ /*
+ * Can't use portably getopt() since there's no cross-platform
+ * way of resetting it.
+ */
if (argc == 0)
usage();
+ argc--, argv++;
+ if (argc == 0)
+ usage();
+
+ if (!strcmp(*argv, "--"))
+ argc--, argv++;
+ else if (**argv == '-')
+ usage();
+
+ if (argc == 0)
+ usage();
+
for (i = 0; i < nitems(cmds); ++i) {
cmd = &cmds[i];