summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-10-01 13:01:39 +0200
committerThomas Haller <thaller@redhat.com>2015-10-05 17:12:50 +0200
commit72ff5e8cac5739c427b1f0c8bfe7f431396d12b9 (patch)
tree4b9d2f54fad1f36b7ee3babe0bdfb6e501c32900
parentced1dcabefdf8663e034822d8773aa79a071a043 (diff)
downloadNetworkManager-72ff5e8cac5739c427b1f0c8bfe7f431396d12b9.tar.gz
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.
-rw-r--r--src/NetworkManagerUtils.c34
-rw-r--r--src/NetworkManagerUtils.h5
-rw-r--r--src/nm-config.c27
3 files changed, 40 insertions, 26 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c
index d5bb6c87f0..5d9df4ec8c 100644
--- a/src/NetworkManagerUtils.c
+++ b/src/NetworkManagerUtils.c
@@ -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:
* @addr: pointer to a binary or ASCII Ethernet address
diff --git a/src/NetworkManagerUtils.h b/src/NetworkManagerUtils.h
index 3af93e5a03..ceaa2c0c77 100644
--- a/src/NetworkManagerUtils.h
+++ b/src/NetworkManagerUtils.h
@@ -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);
in_addr_t nm_utils_ip4_address_clear_host_address (in_addr_t addr, guint8 plen);
diff --git a/src/nm-config.c b/src/nm-config.c
index e09ec48ecd..fb9f0be988 100644
--- a/src/nm-config.c
+++ b/src/nm-config.c
@@ -126,32 +126,7 @@ gint
nm_config_parse_boolean (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;
+ return nm_utils_ascii_str_to_bool (str, default_value);
}
gint