summary refs log tree commit diff
path: root/shared/nm-shared-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared/nm-shared-utils.c')
-rw-r--r--shared/nm-shared-utils.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/shared/nm-shared-utils.c b/shared/nm-shared-utils.c
index 0ae54bdc..932b7432 100644
--- a/shared/nm-shared-utils.c
+++ b/shared/nm-shared-utils.c
@@ -102,6 +102,40 @@ _nm_utils_ascii_str_to_int64 (const char *str, guint base, gint64 min, gint64 ma
 
 /*****************************************************************************/
 
+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;
+}
+
+/*****************************************************************************/
+
 G_DEFINE_QUARK (nm-utils-error-quark, nm_utils_error)
 
 void