1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// SPDX-License-Identifier: GPL-3.0-or-later
#include "appconfig_internals.h"
#include "appconfig_api_boolean.h"
bool appconfig_test_boolean_value(const char *s) {
if(!strcasecmp(s, "yes") || !strcasecmp(s, "true") || !strcasecmp(s, "on")
|| !strcasecmp(s, "auto") || !strcasecmp(s, "on demand"))
return true;
return false;
}
int appconfig_get_boolean_by_section(struct config_section *sect, const char *name, int value) {
struct config_option *opt = appconfig_get_raw_value_of_option_in_section(
sect, name, (!value) ? "no" : "yes", CONFIG_VALUE_TYPE_BOOLEAN, NULL);
if(!opt) return value;
return appconfig_test_boolean_value(string2str(opt->value));
}
int appconfig_get_boolean(struct config *root, const char *section, const char *name, int value) {
const char *s;
if(value) s = "yes";
else s = "no";
struct config_option *opt = appconfig_get_raw_value(root, section, name, s, CONFIG_VALUE_TYPE_BOOLEAN, NULL);
if(!opt) return value;
s = string2str(opt->value);
return appconfig_test_boolean_value(s);
}
int appconfig_get_boolean_ondemand(struct config *root, const char *section, const char *name, int value) {
const char *s;
if(value == CONFIG_BOOLEAN_AUTO)
s = "auto";
else if(value == CONFIG_BOOLEAN_NO)
s = "no";
else
s = "yes";
struct config_option *opt = appconfig_get_raw_value(root, section, name, s, CONFIG_VALUE_TYPE_BOOLEAN_ONDEMAND, NULL);
if(!opt) return value;
s = string2str(opt->value);
if(!strcmp(s, "yes") || !strcmp(s, "true") || !strcmp(s, "on"))
return CONFIG_BOOLEAN_YES;
else if(!strcmp(s, "no") || !strcmp(s, "false") || !strcmp(s, "off"))
return CONFIG_BOOLEAN_NO;
else if(!strcmp(s, "auto") || !strcmp(s, "on demand"))
return CONFIG_BOOLEAN_AUTO;
return value;
}
int appconfig_set_boolean(struct config *root, const char *section, const char *name, int value) {
const char *s;
if(value) s = "yes";
else s = "no";
appconfig_set_raw_value(root, section, name, s, CONFIG_VALUE_TYPE_BOOLEAN);
return value;
}
|