diff options
author | Thomas Haller <thaller@redhat.com> | 2015-06-11 23:43:29 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-07-02 14:21:41 +0200 |
commit | 7ac0725bca80d701b4330cd6b9d3fcc68e41a959 (patch) | |
tree | 45dcd95abd1107d30619f5340c34e2b952e4b714 | |
parent | 2e3d907328f8ef2294aa63962b4b4ad3ffd12863 (diff) | |
download | NetworkManager-7ac0725bca80d701b4330cd6b9d3fcc68e41a959.tar.gz |
config: add config utility accessors
-rw-r--r-- | src/nm-config-data.c | 51 | ||||
-rw-r--r-- | src/nm-config-data.h | 5 |
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 */ |