From: Michael Tremer Date: Fri, 14 Apr 2023 13:04:17 +0000 (+0000) Subject: networkd: config: Add functions to handle boolean values X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8b0b5c6d9e99c09341fe90b1278763fd3f70b53a;p=network.git networkd: config: Add functions to handle boolean values Signed-off-by: Michael Tremer --- diff --git a/src/networkd/config.c b/src/networkd/config.c index b3d52845..d879ace7 100644 --- a/src/networkd/config.c +++ b/src/networkd/config.c @@ -368,3 +368,31 @@ int nw_config_set_int(nw_config* config, const char* key, const int value) { return nw_config_set(config, key, __value); } + +static const char* nw_config_true[] = { + "true", + "yes", + "1", + NULL, +}; + +int nw_config_get_bool(nw_config* config, const char* key) { + const char* value = nw_config_get(config, key); + + // No value indicates false + if (!value) + return 0; + + // Check if we match any known true words + for (const char** s = nw_config_true; *s; s++) { + if (strcmp(value, *s) == 0) + return 1; + } + + // No match means false + return 0; +} + +int nw_config_set_bool(nw_config* config, const char* key, const int value) { + return nw_config_set(config, key, value ? "true" : "false"); +} diff --git a/src/networkd/config.h b/src/networkd/config.h index 041a10e8..0b25f754 100644 --- a/src/networkd/config.h +++ b/src/networkd/config.h @@ -48,4 +48,7 @@ int nw_config_set(nw_config* config, const char* key, const char* value); int nw_config_get_int(nw_config* config, const char* key, const int __default); int nw_config_set_int(nw_config* config, const char* key, const int value); +int nw_config_get_bool(nw_config* config, const char* key); +int nw_config_set_bool(nw_config* config, const char* key, const int value); + #endif /* NETWORKD_CONFIG_H */