tclGetOpts - getopt

For latest version, documentation, and information, visit
http://www.waxandwane.com/toolbox/tclGetOpts/

NAME
	getopt, optind, optindc - parse command-line options in TCL
	 

SYNOPSIS
	getopt arglist optstring optret argret
	 

DESCRIPTION
	getopt sets the variable optret to the next option letter in
	arglist that matches a letter in optstring. optstring must
	contain the option letters the command using getopt will
	recognize; if a letter is followed by a colon, the option is
	expected to have an argument. The variable argret will be set
	to the option argument, if any.

	getopt sets the global variables optind and optindc to point
	to the next option letter in arglist to be processed; optind
	holds the index of the option in the list, and optindc holds
	the index of the option letter in the string.

	When all options have been processed (that is, up to the first
	non-option argument), getopt returns an empty string. The
	special option -- may be used to delimit the end of the
	options; when it is encountered, optret will be set to the
	empty string, and the -- will be skipped.

	If getopt encounters an option in arglist that is not
	described in optstring, or it finds an option with no argument
	when the option requires one, it sets optret to a blank string
	and argret to an error message.

	getopt returns 1 if an option was found, 0 if no more options
	were found, and -1 if an error occurred.
	 

EXAMPLE
	The following script accepts the exclusive options -a and -b,
	and the option -o with an argument.

     #!/usr/local/bin/tclsh

     set opts(a) 0
     set opts(b) 0
     set opts(o) ""

     proc usage {} {
       puts stderr "Usage: $argv0 [ -a | -b ] [ -o <string> ]"
       exit 22
     }

     while { [ set err [ getopt $argv "abo:" opt arg ]] } {
       if { $err < 0 } then {
         puts stderr "$argv0: $arg"
         usage
       } else {
         switch -exact $opt {
           a {
             if { $found(b) } then {
               puts stderr "$argv0: Only one of -a and -b may be specified!"
               usage
             } else {
               set found(a) 1
             }
           }
           b {
             if { $found(a) } then {
               puts stderr "$argv0: Only one of -a and -b may be specified!"
               usage
             } else {
               set found(b) 1
             }
           }
           o {
             set found(o) $optarg
           }
         }
       }
     }

     set argv [ lrange $argv $optind end ]

     if { $found(a) } then {
       puts stdout "Found option -a"
     }

     if { $found(b) } then {
       puts stdout "Found option -b"
     }

     if { [ string length $found(o) ] } then {
       puts stdout "Found option -o:
     }

     puts -nonewline stdout "The rest of the arguments are: "
     set prefix ""
     foreach arg $argv {
       puts -nonewline stdout "$prefix
       set prefix ", "
     }
     puts stdout ""
	 

SEE ALSO
	getopt(3C), typedopts
	http://www.waxandwane.com/toolbox/tclGetOpts/
	 

AUTHOR
	Ross Mohn, RPMohn@panix.com
	Johnson Earls
	 

WARNING
	Changing the value of the variable optind, or calling getopt
	with a different arglist, may lead to unexpected results.

