core: add nm_utils_ascii_str_to_bool()
This is effectively the same as nm_config_parse_boolean(). The difference is, that "nm-config.c" is not available to the interface-helper, thus any code used by interface-helper (like "NetworkManager.c") cannot use this function. Still don't drop nm_config_parse_boolean() entirely, because it's better to have the explicit notion of parsing a string in the config-context. I ended up not using the function. But I'd still keep this patch.
This commit is contained in:
@@ -188,6 +188,40 @@ _nm_singleton_instance_register_destruction (GObject *instance)
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
gint
|
||||||
|
nm_utils_ascii_str_to_bool (const char *str,
|
||||||
|
gint default_value)
|
||||||
|
{
|
||||||
|
gsize len;
|
||||||
|
char *s = NULL;
|
||||||
|
|
||||||
|
if (!str)
|
||||||
|
return default_value;
|
||||||
|
|
||||||
|
while (str[0] && g_ascii_isspace (str[0]))
|
||||||
|
str++;
|
||||||
|
|
||||||
|
if (!str[0])
|
||||||
|
return default_value;
|
||||||
|
|
||||||
|
len = strlen (str);
|
||||||
|
if (g_ascii_isspace (str[len - 1])) {
|
||||||
|
s = g_strdup (str);
|
||||||
|
g_strchomp (s);
|
||||||
|
str = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!g_ascii_strcasecmp (str, "true") || !g_ascii_strcasecmp (str, "yes") || !g_ascii_strcasecmp (str, "on") || !g_ascii_strcasecmp (str, "1"))
|
||||||
|
default_value = TRUE;
|
||||||
|
else if (!g_ascii_strcasecmp (str, "false") || !g_ascii_strcasecmp (str, "no") || !g_ascii_strcasecmp (str, "off") || !g_ascii_strcasecmp (str, "0"))
|
||||||
|
default_value = FALSE;
|
||||||
|
if (s)
|
||||||
|
g_free (s);
|
||||||
|
return default_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* nm_ethernet_address_is_valid:
|
* nm_ethernet_address_is_valid:
|
||||||
* @addr: pointer to a binary or ASCII Ethernet address
|
* @addr: pointer to a binary or ASCII Ethernet address
|
||||||
|
@@ -114,6 +114,11 @@ gboolean nm_utils_error_is_cancelled (GError *error,
|
|||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
gint nm_utils_ascii_str_to_bool (const char *str,
|
||||||
|
gint default_value);
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
gboolean nm_ethernet_address_is_valid (gconstpointer addr, gssize len);
|
gboolean nm_ethernet_address_is_valid (gconstpointer addr, gssize len);
|
||||||
|
|
||||||
in_addr_t nm_utils_ip4_address_clear_host_address (in_addr_t addr, guint8 plen);
|
in_addr_t nm_utils_ip4_address_clear_host_address (in_addr_t addr, guint8 plen);
|
||||||
|
@@ -126,32 +126,7 @@ gint
|
|||||||
nm_config_parse_boolean (const char *str,
|
nm_config_parse_boolean (const char *str,
|
||||||
gint default_value)
|
gint default_value)
|
||||||
{
|
{
|
||||||
gsize len;
|
return nm_utils_ascii_str_to_bool (str, default_value);
|
||||||
char *s = NULL;
|
|
||||||
|
|
||||||
if (!str)
|
|
||||||
return default_value;
|
|
||||||
|
|
||||||
while (str[0] && g_ascii_isspace (str[0]))
|
|
||||||
str++;
|
|
||||||
|
|
||||||
if (!str[0])
|
|
||||||
return default_value;
|
|
||||||
|
|
||||||
len = strlen (str);
|
|
||||||
if (g_ascii_isspace (str[len - 1])) {
|
|
||||||
s = g_strdup (str);
|
|
||||||
g_strchomp (s);
|
|
||||||
str = s;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!g_ascii_strcasecmp (str, "true") || !g_ascii_strcasecmp (str, "yes") || !g_ascii_strcasecmp (str, "on") || !g_ascii_strcasecmp (str, "1"))
|
|
||||||
default_value = TRUE;
|
|
||||||
else if (!g_ascii_strcasecmp (str, "false") || !g_ascii_strcasecmp (str, "no") || !g_ascii_strcasecmp (str, "off") || !g_ascii_strcasecmp (str, "0"))
|
|
||||||
default_value = FALSE;
|
|
||||||
if (s)
|
|
||||||
g_free (s);
|
|
||||||
return default_value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
gint
|
||||||
|
Reference in New Issue
Block a user