Problem with erorr processing using getopt(3).

Roy Smith roy at phri.UUCP
Wed Sep 7 03:57:19 AEST 1988


	If I turn off getopt's internal error message printing by setting
opterr to 0, how do I reliably find out what argument getopt is objecting
to when it returns '?'?  For example, let's say I have a program foo which
does:

	opterr = 0;
	while ((c = getopt (argc, argv, "a")) != eof) {
		switch (c) {
		case 'a':
			aflag = 1; break;

		case '?':
			error ("unknown flag (%s)", argv[optind-1]);
		}
	}

	If I do "foo -x", sure enough I get "unknown flag (-x)".  But, if I
do "foo -xy", I get "unknown flag (foo)"; argv[optind] is still pointing to
the "-xy" because there is more stuff after the "-x".  I can't see any way
around this other than to let getopt print the error message itself, which
I'd rather not do for various reasons.
-- 
Roy Smith, System Administrator
Public Health Research Institute
{allegra,philabs,cmcl2,rutgers}!phri!roy -or- phri!roy at uunet.uu.net
"The connector is the network"



More information about the Comp.unix.wizards mailing list