| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] | 
This produces a main procedure that invokes a procedure once for each
operand on the command line (non-option arguments), OR once
for each non-blank, non-comment stdin input line.  Leading and
trailing white space is trimmed from the input line and comment lines
are lines that begin with a hash ('#') character.  (If anyone ever asks,
I could make it specifiable, as the code to do this is emitted into
the output and is not part of libopts.)
NB:
The argument program attribute (see section 7.3.1 Program Description Attributes)
must either begin with the [ character, or be omitted and
default to "[ ".
The name of the procedure must be specified with the
handler-proc attribute.  That procedure is presumed to be
external, but if you provide the code for it, then the procedure is
emitted as a static procedure in the generated code.  The profile of
the procedure must be:
| int my_handler( const char *pz_operand ); | 
If you provide the code, then your main() procedure specification
will look something like this:
| main = {
  main-type    = for-each;
  handler-proc = my_handler;
  my_handler-code = <<- EndOfMyCode
	/* whatever you want to do */
	EndOfMyCode;
};
 | 
and the emitted procedure will look like this:
| static int
my_handler( const char* pz_entry )
{
    int res = 0;
    <<my_handler-code goes here>>
    return res;
}
 | 
Exit code reporting is cumulative.  If the called procedure needs
to cause a fail-exit, it is expected to call exit(3) directly.
If you want to cause a warning exit code, then this handler function
should return a non-zero status.  That value will be OR-ed into
a result integer for computing the final exit code.  E.g., here is part
of the emitted code:
|     int res = 0;
    if (argc > 0) {
        do  {
            res |= my_handler( *(argv++) );
        } while (--argc > 0);
    } else { ...
 | 
You may also specify some main procedure start up code with the
main-init attribute.  Any code specified by that attribute will
be inserted immediately after the option processing call.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |