6198 Let's EOL cachefs
[illumos-gate.git] / usr / src / lib / libast / common / man / stropt.3
blobf2a8dae88279f54b685ac11225d1754457f4b7dc
1 .fp 5 CW
2 .de Af
3 .ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
4 .if !\a\\$4\a\a .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
5 ..
6 .de aF
7 .ie \a\\$3\a\a .ft \\$1
8 .el \{\
9 .ds ;G \&
10 .nr ;G \\n(.f
11 .Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
12 \\*(;G
13 .ft \\n(;G \}
15 .de L
16 .aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
18 .de LR
19 .aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
21 .de RL
22 .aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
24 .de EX          \" start example
25 .ta 1i 2i 3i 4i 5i 6i
26 .PP
27 .RS 
28 .PD 0
29 .ft 5
30 .nf
32 .de EE          \" end example
33 .fi
34 .ft
35 .PD
36 .RE
37 .PP
39 .TH STROPT 3
40 .SH NAME
41 stropt \- table driven option expression evaluator
42 .SH SYNOPSIS
43 .L "#include <namval.h>"
44 .br
45 .L "int stropt(char* s, struct namval* tab,
46 .br
47 .L "           int (*fun)(void* a, struct namval* p, int n, char* v),"
48 .br
49 .L "           void* a)"
50 .SH DESCRIPTION
51 .I stropt
52 parses option expressions in the nul-terminated string
53 .I s
54 using the option names in
55 .IR tab .
56 .I tab
57 is an array of
58 .B "struct namval"
59 name value pairs:
60 .EX
61 char*   name;
62 int     value;
63 .EE
64 The last entry must be followed by a sentinel with
65 .B name
66 set to 0.
67 .PP
68 An option expression contains 0 or more of [\fBno\fP]\fIname\fP[=\fIvalue\fP]
69 separate by
70 .B space
72 .BR tab ,
73 where
74 .I name
75 must be one of the option names in
76 .IR tab ,
77 .I value 
78 is an optional value, and
79 .B no
80 is for Boolean options.
81 Each option is passed to
82 .I fun
83 for processing.
84 .I a
85 is the
86 .L void*
87 pointer that is passed from the
88 .I stropt
89 call but is otherwise not interpreted.
90 .I p
91 points to the option name value pair from
92 .IR tab .
93 .I n
94 is 0 if
95 .B no
96 preceded the option
97 .I name
98 and
99 .I v
100 points to the beginning of the option
101 .I value
103 .IR s .
106 .I name
107 is not found in
108 .I tab
109 then
110 .I fun
111 is called with 
112 .I p
113 pointing to an internal
114 .I namval
115 entry with
116 .I p\->name
117 pointing to the unknown option and
118 .I p\->value
119 set to the
120 .I value
121 of the sentinel entry in
122 .IR tab .
125 .I fun
126 returns non-zero then this value is returned and no further
127 options are processed.
128 Otherwise
129 .I stropt
130 returns 0 after processing all options.