STROPT(3ast) STROPT(3ast)

# [NAME](#NAME)

stropt - table driven option expression evaluator

# [SYNOPSIS](#SYNOPSIS)

#include &lt;namval.h&gt;  
int stropt(const char* s, struct namval* tab, int siz,  
int (\*fun)(void* a, struct namval* p, int n, char* v),  
void* a)

# [DESCRIPTION](#DESCRIPTION)

*stropt* parses option expressions in the null-terminated string *s* using the option names in *tab*. *tab* is an array of **struct namval** name value pairs:

```
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 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-&gt;name* pointing to the unknown option and *p-&gt;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.

---

Document: stropt(3ast) from ksh 1.0.10-r36 (Chainguard OS)
Source: https://github.com/ksh93/ksh
