37 dictionary *d = ini_get(h);
39 if (d && sec && key) {
42 ini_make_full_key(full,
sizeof(full), sec, key);
43 memcpy(alt, full,
sizeof(alt));
44 for (
size_t i = 0; i <
sizeof(alt) && alt[i]; ++i) {
50 const char *
s = iniparser_getstring(d, full, NULL);
51 if (!
s)
s = iniparser_getstring(d, alt, NULL);
55 if (
n >= 2 && ((
s[0] ==
'"' &&
s[
n - 1] ==
'"') || (
s[0] ==
'\'' &&
s[
n - 1] ==
'\''))) {
56 size_t copy = (
n - 2) <
sizeof(
buf) - 1 ? (
n - 2) : sizeof(
buf) - 1;
57 memcpy(
buf,
s + 1, copy);
61 while (*
s && (
unsigned char)*
s <=
' ')
64 double v = strtod(
s, &endp);
65 if (endp && endp !=
s)
Tagged union representing a Fun value.
void free_value(Value v)
Free dynamic storage owned by a Value.
Value make_float(double v)
Construct a Value representing a double-precision float.