summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-06-11 23:43:29 +0200
committerThomas Haller <thaller@redhat.com>2015-07-02 15:50:04 +0200
commit11c0e107b9b903b13c741448eae68b443e98ad2e (patch)
tree3b39bdf91ee428596b34845acbb67cb98223fff7
parent7e94785f28a822bfd95acf2f2551814f84dd3d79 (diff)
downloadNetworkManager-11c0e107b9b903b13c741448eae68b443e98ad2e.tar.gz
config: add config utility accessors
-rw-r--r--src/nm-config-data.c51
-rw-r--r--src/nm-config-data.h5
2 files changed, 56 insertions, 0 deletions
diff --git a/src/nm-config-data.c b/src/nm-config-data.c
index 93ef6bd677..424fe3b7fb 100644
--- a/src/nm-config-data.c
+++ b/src/nm-config-data.c
@@ -108,6 +108,15 @@ nm_config_data_get_config_description (const NMConfigData *self)
return NM_CONFIG_DATA_GET_PRIVATE (self)->config_description;
}
+gboolean
+nm_config_data_has_group (const NMConfigData *self, const char *group)
+{
+ g_return_val_if_fail (NM_IS_CONFIG_DATA (self), FALSE);
+ g_return_val_if_fail (group && *group, FALSE);
+
+ return g_key_file_has_group (NM_CONFIG_DATA_GET_PRIVATE (self)->keyfile, group);
+}
+
char *
nm_config_data_get_value (const NMConfigData *self, const char *group, const char *key)
{
@@ -120,6 +129,21 @@ nm_config_data_get_value (const NMConfigData *self, const char *group, const cha
return g_key_file_get_string (NM_CONFIG_DATA_GET_PRIVATE (self)->keyfile, group, key, NULL);
}
+gboolean
+nm_config_data_has_value (const NMConfigData *self, const char *group, const char *key)
+{
+ gs_free char *value = NULL;
+
+ g_return_val_if_fail (NM_IS_CONFIG_DATA (self), FALSE);
+ g_return_val_if_fail (group && *group, FALSE);
+ g_return_val_if_fail (key && *key, FALSE);
+
+ /* nm_config_data_get_value() translates to g_key_file_get_string(), because we want
+ * to use the string representation, not the (raw) GKeyFile value. */
+ value = g_key_file_get_string (NM_CONFIG_DATA_GET_PRIVATE (self)->keyfile, group, key, NULL);
+ return !!value;
+}
+
gint
nm_config_data_get_value_boolean (const NMConfigData *self, const char *group, const char *key, gint default_value)
{
@@ -220,6 +244,33 @@ nm_config_data_get_assume_ipv6ll_only (const NMConfigData *self, NMDevice *devic
/************************************************************************/
+/**
+ * nm_config_data_get_groups:
+ * @self: the #NMConfigData instance
+ *
+ * Returns: (transfer-full): the list of groups in the configuration. The order
+ * of the section is undefined, as the configuration gets merged from multiple
+ * sources.
+ */
+char **
+nm_config_data_get_groups (const NMConfigData *self)
+{
+ g_return_val_if_fail (NM_IS_CONFIG_DATA (self), NULL);
+
+ return g_key_file_get_groups (NM_CONFIG_DATA_GET_PRIVATE (self)->keyfile, NULL);
+}
+
+char **
+nm_config_data_get_keys (const NMConfigData *self, const char *group)
+{
+ g_return_val_if_fail (NM_IS_CONFIG_DATA (self), NULL);
+ g_return_val_if_fail (group && *group, NULL);
+
+ return g_key_file_get_keys (NM_CONFIG_DATA_GET_PRIVATE (self)->keyfile, group, NULL, NULL);
+}
+
+/************************************************************************/
+
static int
_nm_config_data_log_sort (const char **pa, const char **pb, gpointer dummy)
{
diff --git a/src/nm-config-data.h b/src/nm-config-data.h
index ada1d3c931..54a20e20ff 100644
--- a/src/nm-config-data.h
+++ b/src/nm-config-data.h
@@ -86,6 +86,8 @@ void nm_config_data_log (const NMConfigData *config_data, const char *prefix);
const char *nm_config_data_get_config_main_file (const NMConfigData *config_data);
const char *nm_config_data_get_config_description (const NMConfigData *config_data);
+gboolean nm_config_data_has_group (const NMConfigData *self, const char *group);
+gboolean nm_config_data_has_value (const NMConfigData *self, const char *group, const char *key);
char *nm_config_data_get_value (const NMConfigData *config_data, const char *group, const char *key);
gint nm_config_data_get_value_boolean (const NMConfigData *self, const char *group, const char *key, gint default_value);
@@ -106,6 +108,9 @@ char *nm_config_data_get_connection_default (const NMConfigData *self,
const char *property,
NMDevice *device);
+char **nm_config_data_get_groups (const NMConfigData *self);
+char **nm_config_data_get_keys (const NMConfigData *self, const char *group);
+
G_END_DECLS
#endif /* NM_CONFIG_DATA_H */