1 #include "tst-main.c"
2 
3 static const char *rf = __FILE__;
4 
5 #define TST_FLAG(num, name, old, new) \
6   tmp_f = 0xF0F0F0F0; \
7   TST_B_TST(ret, (num), \
8             !(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_ ## name, &tmp_f))); \
9   TST_B_TST(ret, (num), \
10             !(tmp_f == (old))); \
11   TST_B_TST(ret, (num), \
12             !vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_ ## name, (new))); \
13   tmp_f = 0xF0F0F0F0; \
14   TST_B_TST(ret, (num), \
15             !(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_ ## name, &tmp_f))); \
16   TST_B_TST(ret, (num), \
17             !(tmp_f == (new)))
18 
19 #define TST_CHR(num, name, old, new) \
20   tmp_c = 0xF; \
21   TST_B_TST(ret, (num), \
22             !(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_ ## name, &tmp_c) && \
23               tmp_c == (old))); \
24   TST_B_TST(ret, (num), \
25             !vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_ ## name, (new))); \
26   tmp_c = 0xF; \
27   TST_B_TST(ret, (num), \
28             !(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_ ## name, &tmp_c) && \
29               tmp_c == (new)))
30 
31 #define TST_CSTR(num, name, old, new) \
32   TST_B_TST(ret, (num), \
33             !(!!vstr_cntl_conf(NULL, \
34                                VSTR_CNTL_CONF_GET_ ## name, &tmp_pc) && \
35               !strcmp(tmp_pc, (old)))); \
36   TST_B_TST(ret, (num), \
37             !vstr_cntl_conf(NULL, \
38                             VSTR_CNTL_CONF_SET_ ## name, (new))); \
39   TST_B_TST(ret, (num), \
40             !(!!vstr_cntl_conf(NULL, \
41                                VSTR_CNTL_CONF_GET_ ## name, &tmp_pc) && \
42               !strcmp(tmp_pc, (new))))
43 
44 #define TST_CSTR2(num, name, old, new, tst_new) \
45   TST_B_TST(ret, (num), \
46             !(!!vstr_cntl_conf(NULL, \
47                                VSTR_CNTL_CONF_GET_ ## name, &tmp_pc) && \
48               !strcmp(tmp_pc, (old)))); \
49   TST_B_TST(ret, (num), \
50             !vstr_cntl_conf(NULL, \
51                             VSTR_CNTL_CONF_SET_ ## name, (new))); \
52   TST_B_TST(ret, (num), \
53             !(!!vstr_cntl_conf(NULL, \
54                                VSTR_CNTL_CONF_GET_ ## name, &tmp_pc) && \
55               !strcmp(tmp_pc, (tst_new))))
56 
57 #define TST_REF(num, name, old, new) do { \
58   Vstr_ref *tmp_ref = NULL; size_t len = 0; \
59   TST_B_TST(ret, (num), \
60             !(!!vstr_cntl_conf(NULL, \
61                                VSTR_CNTL_CONF_GET_ ## name, \
62                                &tmp_ref, &len) && \
63               !strcmp(tmp_ref->ptr, (old)))); \
64   vstr_ref_del(tmp_ref); \
65   tmp_ref = vstr_ref_make_strdup(new); ASSERT(tmp_ref); \
66   TST_B_TST(ret, (num), \
67             !vstr_cntl_conf(NULL, \
68                             VSTR_CNTL_CONF_SET_ ## name, \
69                             tmp_ref, strlen(tmp_ref->ptr))); \
70   vstr_ref_del(tmp_ref); \
71   TST_B_TST(ret, (num), \
72             !(!!vstr_cntl_conf(NULL, \
73                                VSTR_CNTL_CONF_GET_ ## name, \
74                                &tmp_ref, &len) && \
75               !strcmp(tmp_ref->ptr, (new)))); \
76   vstr_ref_del(tmp_ref); \
77  } while (FALSE)
78 
79 #define TST_NUM_REF(num, name, num_base, old, new) do { \
80   Vstr_ref *tmp_ref = NULL; size_t len = 0; \
81   TST_B_TST(ret, (num), \
82             !(!!vstr_cntl_conf(NULL, \
83                                VSTR_CNTL_CONF_GET_ ## name, (num_base), \
84                                &tmp_ref, &len) && \
85               !strcmp(tmp_ref->ptr, (old)))); \
86   vstr_ref_del(tmp_ref); \
87   tmp_ref = vstr_ref_make_strdup(new); ASSERT(tmp_ref); \
88   TST_B_TST(ret, (num), \
89             !vstr_cntl_conf(NULL, \
90                             VSTR_CNTL_CONF_SET_ ## name, \
91                             (num_base), tmp_ref, strlen(tmp_ref->ptr))); \
92   vstr_ref_del(tmp_ref); \
93   TST_B_TST(ret, (num), \
94             !(!!vstr_cntl_conf(NULL, \
95                                VSTR_CNTL_CONF_GET_ ## name, (num_base), \
96                                &tmp_ref, &len) && \
97               !strcmp(tmp_ref->ptr, (new)))); \
98   vstr_ref_del(tmp_ref); \
99  } while (FALSE)
100 
tst(void)101 int tst(void)
102 {
103   int ret = 0;
104   int tmp_f = FALSE;
105   unsigned int tmp_t = 0;
106   char tmp_c = 0;
107   char *tmp_pc = NULL;
108   Vstr_conf *tmp_cnf = NULL;
109   int mfail_count = 0;
110 
111   TST_FLAG(  1, FLAG_ATOMIC_OPS, TRUE, FALSE);
112   TST_FLAG(  2, FLAG_DEL_SPLIT, FALSE, TRUE);
113   TST_FLAG(  3, FLAG_IOV_UPDATE, TRUE, FALSE);
114   TST_CHR(   5, FMT_CHAR_ESC, 0, '$');
115 
116   TST_CSTR(  6, LOC_CSTR_DEC_POINT, ".", "->");
117   TST_CSTR(  7, LOC_CSTR_NAME_NUMERIC, "C", "James");
118   TST_CSTR2( 8, LOC_CSTR_THOU_GRP, "", "\1\2\3\255abcd", "\1\2\3\255");
119   TST_CSTR(  9, LOC_CSTR_THOU_SEP, "", "<->");
120 
121   TST_B_TST(ret, 10, !vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_REF, &tmp_f));
122   TST_B_TST(ret, 11, (tmp_f != 2));
123   TST_B_TST(ret, 12, !vstr_cntl_conf(s1->conf, VSTR_CNTL_CONF_GET_NUM_REF, &tmp_f));
124   TST_B_TST(ret, 13, (tmp_f != 2));
125   TST_B_TST(ret, 14, !vstr_cntl_base(s1, VSTR_CNTL_BASE_GET_CONF, &tmp_cnf));
126   TST_B_TST(ret, 15, !vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_REF, &tmp_f));
127   TST_B_TST(ret, 16, (tmp_f != 3));
128   TST_B_TST(ret, 17, !vstr_cntl_conf(s1->conf, VSTR_CNTL_CONF_GET_NUM_REF, &tmp_f));
129   TST_B_TST(ret, 18, (tmp_f != 3));
130   vstr_free_conf(tmp_cnf);
131   TST_B_TST(ret, 15, !vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_REF, &tmp_f));
132   TST_B_TST(ret, 16, (tmp_f != 2));
133   TST_B_TST(ret, 20, !vstr_cntl_base(s1, VSTR_CNTL_BASE_SET_CONF, NULL));
134 
135   TST_NUM_REF(21, LOC_REF_DEC_POINT, 10, "->", "Foo1");
136   TST_NUM_REF(21, LOC_REF_DEC_POINT, 11, "->", "Foo2");
137   TST_NUM_REF(21, LOC_REF_DEC_POINT,  0, "->", "Foo3");
138   TST_NUM_REF(21, LOC_REF_DEC_POINT,  8, "Foo3", "Foo4");
139   TST_NUM_REF(21, LOC_REF_DEC_POINT, 11, "Foo2", "Foo8");
140   TST_NUM_REF(21, LOC_REF_THOU_GRP, 11, "\1\2\3\255", "\2");
141   TST_NUM_REF(21, LOC_REF_THOU_SEP, 0, "<->", "<-->");
142 
143   TST_REF(21, LOC_REF_NAME_NUMERIC, "James", "FooBar");
144   TST_REF(21, LOC_REF_NULL_PTR, "(null)", "abcd");
145 
146 #define MFAIL_TST_CSTR(name, val)  \
147  vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_ ## name, val)
148 
149   do
150   {
151     tst_mfail_num(++mfail_count);
152   } while (!MFAIL_TST_CSTR(LOC_CSTR_DEC_POINT, "abcd") ||
153            !MFAIL_TST_CSTR(LOC_CSTR_NAME_NUMERIC, "abcd") ||
154            !MFAIL_TST_CSTR(LOC_CSTR_THOU_GRP, "abcd") ||
155            !MFAIL_TST_CSTR(LOC_CSTR_THOU_SEP, "abcd"));
156 
157   tst_mfail_num(0);
158 
159   TST_CSTR(  26, LOC_CSTR_DEC_POINT, "abcd", "->");
160   TST_CSTR(  27, LOC_CSTR_NAME_NUMERIC, "abcd", "James");
161   TST_CSTR(  28, LOC_CSTR_THOU_GRP, "abcd", "\1\2\3\255");
162   TST_CSTR(  29, LOC_CSTR_THOU_SEP, "abcd", "<->");
163 
164 #ifndef USE_RESTRICTED_HEADERS
165   mfail_count = 0;
166   do
167   {
168     tst_mfail_num(++mfail_count);
169   } while (!MFAIL_TST_CSTR(LOC_CSTR_AUTO_NAME_NUMERIC, "en_US"));
170 #endif
171 
172   mfail_count = 0;
173   do
174   {
175     vstr_free_spare_nodes(s1->conf, VSTR_TYPE_NODE_PTR, 1000);
176     tst_mfail_num(++mfail_count);
177   } while (!MFAIL_TST_CSTR(NUM_SPARE_PTR, 4));
178 
179   tst_mfail_num(0);
180 
181   MFAIL_TST_CSTR(NUM_SPARE_PTR, 0);
182 
183 
184   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_FLAG_ALLOC_CACHE, FALSE);
185   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
186          tmp_f == FALSE);
187   ASSERT(!!vstr_cntl_conf(NULL,
188                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
189          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_NONE));
190   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_FLAG_ALLOC_CACHE, FALSE);
191   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
192          tmp_f == FALSE);
193   ASSERT(!!vstr_cntl_conf(NULL,
194                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
195          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_NONE));
196   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_FLAG_ALLOC_CACHE, TRUE);
197   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
198          tmp_f == TRUE);
199   ASSERT(!!vstr_cntl_conf(NULL,
200                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
201          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_POS));
202   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_FLAG_ALLOC_CACHE, TRUE);
203   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
204          tmp_f == TRUE);
205   ASSERT(!!vstr_cntl_conf(NULL,
206                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
207          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_POS));
208 
209   /* none */
210   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
211                  VSTR_TYPE_CNTL_CONF_GRPALLOC_NONE);
212   ASSERT(!!vstr_cntl_conf(NULL,
213                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
214          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_NONE));
215   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
216          tmp_f == FALSE);
217   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
218                  VSTR_TYPE_CNTL_CONF_GRPALLOC_NONE);
219   ASSERT(!!vstr_cntl_conf(NULL,
220                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
221          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_NONE));
222   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
223          tmp_f == FALSE);
224 #define TST_RANGE() \
225   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
226          (tmp_t == 0)); \
227   vstr_free_base(s1); \
228   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
229          (tmp_t == 0)); \
230   vstr_free_base(vstr_make_base(NULL)); \
231   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
232          (tmp_t == 1)); \
233   vstr_free_base(vstr_make_base(NULL)); \
234   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
235          (tmp_t == 1)); \
236   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_NUM_RANGE_SPARE_BASE, 0, 0); \
237   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
238          (tmp_t == 0)); \
239   vstr_free_base(vstr_make_base(NULL)); \
240   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
241          (tmp_t == 1)); \
242   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_NUM_RANGE_SPARE_BASE, 3, 6); \
243   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
244          (tmp_t == 3)); \
245   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_NUM_RANGE_SPARE_BASE, 3, 6); \
246   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
247          (tmp_t == 3)); \
248   vstr_free_base(vstr_make_base(NULL)); \
249   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_NUM_SPARE_BASE, &tmp_t) && \
250          (tmp_t == 3)); \
251   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_NUM_RANGE_SPARE_BASE, 1, 2); \
252   vstr_free_base(vstr_make_base(NULL)); \
253   s1 = vstr_dup_cstr_ptr(NULL, "XXXXXXXXXX"); \
254   vstr_add_cstr_ptr(s1, s1->len, "XXXXXXXXXX"); \
255   vstr_add_cstr_ptr(s1, s1->len, "XXXXXXXXXX"); \
256   vstr_add_cstr_ptr(s1, s1->len, "XXXXXXXXXX"); \
257   ASSERT(s1->len == 40); \
258   if (tmp_f) \
259   { \
260     struct iovec *iov = NULL; \
261     unsigned int  num = 0; \
262     ASSERT(!strcmp(vstr_export_cstr_ptr(s1, 1, s1->len), \
263                    "XXXXXXXXXX" "XXXXXXXXXX" "XXXXXXXXXX" "XXXXXXXXXX")); \
264     vstr_export_iovec_ptr_all(s1, &iov, &num); \
265     ASSERT(num == 4); \
266     ASSERT(!strcmp(iov[0].iov_base, "XXXXXXXXXX")); \
267     ASSERT(!strcmp(iov[1].iov_base, "XXXXXXXXXX")); \
268     ASSERT(!strcmp(iov[2].iov_base, "XXXXXXXXXX")); \
269     ASSERT(!strcmp(iov[3].iov_base, "XXXXXXXXXX")); \
270   } \
271   vstr_add_cstr_ptr(s1, s1->len, "a"); \
272   ASSERT(s1->len == 41); \
273   ASSERT(vstr_cmp_cstr_eq(s1, 21, 20, \
274          "XXXXXXXXXX" "XXXXXXXXXX")); \
275   ASSERT(vstr_cmp_cstr_eq(s1, 1, s1->len, \
276          "XXXXXXXXXX" "XXXXXXXXXX" "XXXXXXXXXX" "XXXXXXXXXX" "a"))
277 
278 
279   TST_RANGE();
280   ASSERT(!!vstr_cntl_base(s1,
281                           VSTR_CNTL_BASE_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
282          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_NONE));
283 
284   /* pos */
285   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
286                  VSTR_TYPE_CNTL_CONF_GRPALLOC_POS);
287   ASSERT(!!vstr_cntl_conf(NULL,
288                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
289          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_POS));
290   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
291          tmp_f == TRUE);
292   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
293                  VSTR_TYPE_CNTL_CONF_GRPALLOC_POS);
294   ASSERT(!!vstr_cntl_conf(NULL,
295                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
296          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_POS));
297   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
298          tmp_f == TRUE);
299   TST_RANGE();
300   ASSERT(!!vstr_cntl_base(s1,
301                           VSTR_CNTL_BASE_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
302          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_POS));
303 
304   /* iovec */
305   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
306                  VSTR_TYPE_CNTL_CONF_GRPALLOC_IOVEC);
307   ASSERT(!!vstr_cntl_conf(NULL,
308                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
309          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_IOVEC));
310   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
311          tmp_f == TRUE);
312   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
313                  VSTR_TYPE_CNTL_CONF_GRPALLOC_IOVEC);
314   ASSERT(!!vstr_cntl_conf(NULL,
315                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
316          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_IOVEC));
317   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
318          tmp_f == TRUE);
319   TST_RANGE();
320   ASSERT(!!vstr_cntl_base(s1,
321                           VSTR_CNTL_BASE_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
322          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_IOVEC));
323 
324   /* cstr */
325   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
326                  VSTR_TYPE_CNTL_CONF_GRPALLOC_CSTR);
327   ASSERT(!!vstr_cntl_conf(NULL,
328                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
329          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_CSTR));
330   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
331          tmp_f == TRUE);
332   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_TYPE_GRPALLOC_CACHE,
333                  VSTR_TYPE_CNTL_CONF_GRPALLOC_CSTR);
334   ASSERT(!!vstr_cntl_conf(NULL,
335                           VSTR_CNTL_CONF_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
336          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_CSTR));
337   ASSERT(!!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_GET_FLAG_ALLOC_CACHE, &tmp_f) &&
338          tmp_f == TRUE);
339   TST_RANGE();
340   ASSERT(!!vstr_cntl_base(s1,
341                           VSTR_CNTL_BASE_GET_TYPE_GRPALLOC_CACHE, &tmp_t) &&
342          (tmp_t == VSTR_TYPE_CNTL_CONF_GRPALLOC_CSTR));
343 
344   vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_NUM_RANGE_SPARE_BASE, 1, 1);
345   if (MFAIL_NUM_OK)
346   {
347     tst_mfail_num(1);
348 
349     ASSERT(!vstr_cntl_conf(NULL, VSTR_CNTL_CONF_SET_NUM_RANGE_SPARE_BASE, 2, 2));
350   }
351 
352   return (TST_B_RET(ret));
353 }
354 /* Crap for tst_coverage constants....
355  *
356  * VSTR_CNTL_CONF_GET_FLAG_ATOMIC_OPS
357  * VSTR_CNTL_CONF_SET_FLAG_ATOMIC_OPS
358  *
359  * VSTR_CNTL_CONF_GET_FLAG_DEL_SPLIT
360  * VSTR_CNTL_CONF_SET_FLAG_DEL_SPLIT
361  *
362  * VSTR_CNTL_CONF_GET_FLAG_IOV_UPDATE
363  * VSTR_CNTL_CONF_SET_FLAG_IOV_UPDATE
364  *
365  * VSTR_CNTL_CONF_GET_FMT_CHAR_ESC
366  * VSTR_CNTL_CONF_SET_FMT_CHAR_ESC
367  *
368  * VSTR_CNTL_CONF_GET_LOC_CSTR_DEC_POINT
369  * VSTR_CNTL_CONF_SET_LOC_CSTR_DEC_POINT
370  *
371  * VSTR_CNTL_CONF_GET_LOC_CSTR_NAME_NUMERIC
372  * VSTR_CNTL_CONF_SET_LOC_CSTR_NAME_NUMERIC
373  *
374  * VSTR_CNTL_CONF_GET_LOC_CSTR_THOU_GRP
375  * VSTR_CNTL_CONF_SET_LOC_CSTR_THOU_GRP
376  *
377  * VSTR_CNTL_CONF_GET_LOC_CSTR_THOU_SEP
378  * VSTR_CNTL_CONF_SET_LOC_CSTR_THOU_SEP
379  *
380  * VSTR_CNTL_CONF_GET_LOC_REF_DEC_POINT
381  * VSTR_CNTL_CONF_GET_LOC_REF_NAME_NUMERIC
382  * VSTR_CNTL_CONF_GET_LOC_REF_NULL_PTR
383  * VSTR_CNTL_CONF_GET_LOC_REF_THOU_GRP
384  * VSTR_CNTL_CONF_GET_LOC_REF_THOU_SEP
385  * VSTR_CNTL_CONF_SET_LOC_REF_DEC_POINT
386  * VSTR_CNTL_CONF_SET_LOC_REF_NAME_NUMERIC
387  * VSTR_CNTL_CONF_SET_LOC_REF_THOU_GRP
388  *
389  * VSTR_CNTL_CONF_GET_NUM_BUF_SZ
390  *
391  */
392