standards, tools, history: options=? (-foo vs. foo=yes)

Guy Harris guy at rlgvax.UUCP
Sun Mar 25 10:22:38 AEST 1984


> Getopt, the parser referred to by several people was a first attempt at
> this, but it was never released.

Gee, our System III and System V manuals have pages GETOPT(3C) which
describes that resembles the proposed AT&T standard an *awful* lot, and
they also have a manual page GETOPT(1) for a command which lets shell
files use this - hey, we even got the *source* to them on our S3 and S5
distributions!

In other words, a parser that implements 90% of the standard is available
to anyone with a license for S3 or any later release - it's on your tape.
It implements the following rules of the standard:

- rule 3 (one-letter option names, which is a historical crock - note "f77"'s
	"onetrip" option (which is in itself a historical crock forced on us
	by implementors of pre-F77 Fortran compilers, but we won't get into
	that))

- rule 4 (options must be delimited by "-")

- rule 5 (options with no arguments may be grouped behind one delimiter - this
	is the history that forces rule 3)

- rule 7 (option arguments cannot be optional)

- rule 8, partially (groups of option-arguments following an option must
	be separated by commas or separated by white space and quoted)

- rule 9 (all options precede operands on the command line)

- rule 10 ("--" may be used to delimit the end of the options)

Rule 6 (the first option-argument following an option must be preceded by
white space) is not supported by "getopt"; it permits "foo -ofrobozz" or
"foo -o frobozz".  It supports Rule 8 to the extent that the option-argument
must be recognized by the shell's lexical analyzer as one token.  All other
rules are supported by the code that uses "getopt".

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy



More information about the Comp.unix mailing list