xref: /titanic_41/usr/src/lib/libast/common/man/stropt.3 (revision bce835f2166e1510cc776830775859ba3e49c1ce)
.fp 5 CW .. .nr ;G \\n(.f .Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9" \\*(;G .. .aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" .. .aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" .. .aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" ..

0

..

..

STROPT 3
NAME
stropt - table driven option expression evaluator
SYNOPSIS
.L "#include <namval.h>"

.L "int stropt(char* s, struct namval* tab,

.L " int (*fun)(void* a, struct namval* p, int n, char* v),"

.L " void* a)"

DESCRIPTION
stropt parses option expressions in the nul-terminated string s using the option names in tab . tab is an array of "struct namval" name value pairs: .EX char* name; int value; The last entry must be followed by a sentinel with name set to 0.

An option expression contains 0 or more of [no]name[=value] separate by space or tab , where name must be one of the option names in tab , value is an optional value, and no is for Boolean options. Each option is passed to fun for processing. a is the .L void* pointer that is passed from the stropt call but is otherwise not interpreted. p points to the option name value pair from tab . n is 0 if no preceded the option name and v points to the beginning of the option value in s . and If name is not found in tab then fun is called with p pointing to an internal namval entry with p->name pointing to the unknown option and p->value set to the value of the sentinel entry in tab .

If fun returns non-zero then this value is returned and no further options are processed. Otherwise stropt returns 0 after processing all options.