config: add config utility accessors

This commit is contained in:
Thomas Haller 2015-06-11 23:43:29 +02:00
parent 7e94785f28
commit 11c0e107b9
2 changed files with 56 additions and 0 deletions

View file

@ -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)
{

View file

@ -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 */