[ < ] | [ > ] | [ << ] | [ 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] | [ ? ] |