STROPT(3)

πŸ“¦ version 93vu, in opensuse-leap 16.0

πŸŽ€ NAME πŸŽ€

okay bestie, welcome to STROPT(3) from the Library Functions Manual β€” this is the page for stropt, and it's literally the table driven option expression evaluator πŸ’…βœ¨

✨ SYNOPSIS ✨

#include <namval.h>
int stropt(char* s, struct namval* tab,
           int (*fun)(void* a, struct namval* p, int n, char* v),
           void* a)

πŸ’… DESCRIPTION πŸ’…

okay so 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:

char*     name;
int  value;

and the last entry must be followed by a sentinel with name set to 0 β€” that's the β€œwe're done here” marker, no cap 🫢

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. Here's the fun tea:

  • a β€” 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 β€” 0 if no preceded the option name.
  • 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. periodt 🌈


That's the whole page, bestie β€” from the Library Functions Manual, STROPT(3), and the footer was just STROPT(3) with no date or version printed, so that's all the footer tea we have πŸ’–βœ¨πŸ«Ά

πŸ“¦ where this page comes from