KvConfigParse
Description
Parse complete key-value config text into cfg.
Supported syntax:
key = valuekey: value- blank lines
- comments starting with
#or; - quoted values using
'or"
If the same key appears multiple times, the last parsed value replaces earlier ones.
Parameters
| Name | Direction | Description |
|---|---|---|
si |
in | Input iterator. |
cfg |
in,out | Destination config map. |
Success
Returns iterator advanced to end of parsed config.
Failure
Returns original iterator on first invalid line.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
KvConfig.c:272:
}
StrIter KvConfigParse(StrIter si, KvConfig *cfg) {
StrIter saved_si = si;- In
Parse.c:21:
bool ok = false;
(void)KvConfigParse(input, &cfg);
got = KvConfigGetPtr(&cfg, key);
ok = got && (StrCmp(got, expect) == 0);- In
Parse.c:43:
bool result = true;
(void)KvConfigParse(input, &cfg);
result = result && KvConfigGetBool(&cfg, "flag", &v);- In
Parse.c:109:
Str src = StrInitFromZstr("a=1\r\nb=2\r\n", &alloc);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
i64 a = 0;
i64 b = 0;- In
Parse.c:175:
bool result = true;
(void)KvConfigParse(input, &cfg);
v = KvConfigGetPtr(&cfg, "k");- In
Parse.c:200:
Str src = StrInitFromZstr("a = 1 # c\nb = 2\n", &alloc);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
i64 a = 0;
i64 b = 0;- In
Parse.c:225:
Str src = StrInitFromZstr("k = \"v\" junk\n", &alloc);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
bool result = true;- In
Parse.c:248:
Str src = StrInitFromZstr(" k = v\n", &alloc);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
Str *v = NULL;
bool result = true;- In
Parse.c:273:
Str src = StrInitFromZstr(" \nk = v\n", &alloc);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
Str *v = NULL;
bool result = true;- In
Parse.c:296:
Str src = StrInitFromZstr("k = v\n \n", &alloc);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
bool result = true;- In
Parse.c:319:
);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
Str *host = KvConfigGetPtr(&cfg, "host");
i64 port = 0;- In
Parse.c:352:
);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
Str *path = KvConfigGetPtr(&cfg, "path");
Str *user = KvConfigGetPtr(&cfg, "user");- In
Parse.c:381:
bool result = true;
(void)KvConfigParse(input, &cfg);
stored_host = KvConfigGetPtr(&cfg, "host");- In
Parse.c:423:
StrIter input = StrIterFromStr(src);
(void)KvConfigParse(input, &cfg);
result = result && KvConfigGetI64(&cfg, "workers", &workers) && (workers == 16);- In
Parse.c:449:
);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
bool enabled = false;
bool result = true;- In
Parse.c:485:
bool v = false;
(void)KvConfigParse(input, &cfg);
Zstr trues[] = {"t1", "t2", "t3", "t4"};- In
Parse.c:522:
bool result = true;
(void)KvConfigParse(input, &cfg);
Str k_name = StrInitFromZstr("name", &alloc);- In
Parse.c:575:
bool result = true;
(void)KvConfigParse(input, &cfg);
a = KvConfigGetPtr(&cfg, "a");- In
Parse.c:603:
);
StrIter input = StrIterFromStr(src);
StrIter si = KvConfigParse(input, &cfg);
Str *host = NULL;
Str *name = NULL;- In
Parse.c:646:
StrIter input = StrIterFromStr(text);
(void)KvConfigParse(input, &cfg);
StrDeinit(&text);- In
Parse.c:708:
StrIter input = StrIterFromStr(text);
(void)KvConfigParse(input, &cfg);
Str *got = KvConfigGetPtr(&cfg, "key");- In
Parse.c:739:
StrIter input = StrIterFromStr(text);
(void)KvConfigParse(input, &cfg);
Str *got = KvConfigGetPtr(&cfg, "a-reasonably-long-config-key");- In
Parse.c:769:
StrIter input = StrIterFromStr(text);
(void)KvConfigParse(input, &cfg);
Str *got = KvConfigGetPtr(&cfg, "k");- In
Parse.c:801:
StrIter input = StrIterFromStr(text);
(void)KvConfigParse(input, &cfg);
bool ok = true;
Last updated on