summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-06-11 23:43:29 +0200
committerThomas Haller <thaller@redhat.com>2015-06-13 12:26:39 +0200
commit04272cd875238ad5c14537b42edecf09bdaab6d1 (patch)
tree5eb369e9cdfba5d4b74219ac7a2a238f08d46ecc
parent69b42fc130704a1d3857ed1b94df4351e9a2d7f8 (diff)
downloadNetworkManager-04272cd875238ad5c14537b42edecf09bdaab6d1.tar.gz
config: add config utility accessors
-rw-r--r--src/nm-config-data.c44
-rw-r--r--src/nm-config-data.h4
2 files changed, 47 insertions, 1 deletions
diff --git a/src/nm-config-data.c b/src/nm-config-data.c
index 969bb8475c..20ef76baa4 100644
--- a/src/nm-config-data.c
+++ b/src/nm-config-data.c
@@ -265,6 +265,45 @@ _nm_config_data_get_keyfile_user (const NMConfigData *self)
/************************************************************************/
+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);
+}
+
+/**
+ * nm_config_data_is_atomic_group:
+ * @self:
+ * @group: name of the group to check.
+ *
+ * whether @group is entirely overwritten by internal configuration, i.e.
+ * whether it is an atomic group that is overwritten. It doesn't say, that
+ * there actually is something to be overwritten.
+ *
+ * Returns: %TRUE if the group is an atomic group and set via internal configuration.
+ */
+gboolean
+nm_config_data_is_atomic_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_key (NM_CONFIG_DATA_GET_PRIVATE (self)->keyfile_intern, group, NM_CONFIG_KEYFILE_KEY_ATOMIC_SECTION_WAS, NULL);
+}
+
+/************************************************************************/
+
static GKeyFile *
_merge_keyfiles (GKeyFile *keyfile_user, GKeyFile *keyfile_intern)
{
@@ -400,9 +439,12 @@ nm_config_data_log (const NMConfigData *self, const char *prefix)
for (g = 0; groups[g]; g++) {
const char *group = groups[g];
gs_strfreev char **keys = NULL;
+ gboolean is_atomic;
+
+ is_atomic = nm_config_data_is_atomic_group (self, group);
_LOG ("");
- _LOG ("[%s]", group);
+ _LOG ("[%s]%s", group, is_atomic ? "*" : "");
keys = g_key_file_get_keys (priv->keyfile, group, NULL, NULL);
for (k = 0; keys && keys[k]; k++) {
diff --git a/src/nm-config-data.h b/src/nm-config-data.h
index c37db9e29c..56a5ff2056 100644
--- a/src/nm-config-data.h
+++ b/src/nm-config-data.h
@@ -106,6 +106,10 @@ 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);
+gboolean nm_config_data_is_atomic_group (const NMConfigData *self, const char *group);
+
GKeyFile *nm_config_data_clone_keyfile_intern (const NMConfigData *self);
/* private accessors */