mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-25 02:30:08 +01:00
config: add nm_config_data_get_value_cached() function
nm_config_data_get_value() returns an allocated string. This is inconvenient for the caller. Add a utility function nm_config_data_get_value_cached() that caches the returned value. Of course, use with care as the returned string will be invalidated by each call to nm_config_data_get_value_cached().
This commit is contained in:
parent
5cc2eabe5d
commit
aa54d5a36e
2 changed files with 22 additions and 0 deletions
|
|
@ -72,6 +72,9 @@ typedef struct {
|
|||
|
||||
char *dns_mode;
|
||||
char *rc_manager;
|
||||
|
||||
/* mutable field */
|
||||
char *value_cached;
|
||||
} NMConfigDataPrivate;
|
||||
|
||||
|
||||
|
|
@ -138,6 +141,22 @@ nm_config_data_get_value (const NMConfigData *self, const char *group, const cha
|
|||
return nm_config_keyfile_get_value (NM_CONFIG_DATA_GET_PRIVATE (self)->keyfile, group, key, flags);
|
||||
}
|
||||
|
||||
const char *nm_config_data_get_value_cached (const NMConfigData *self, const char *group, const char *key, NMConfigGetValueFlags flags)
|
||||
{
|
||||
NMConfigDataPrivate *priv;
|
||||
|
||||
g_return_val_if_fail (NM_IS_CONFIG_DATA (self), NULL);
|
||||
g_return_val_if_fail (group && *group, NULL);
|
||||
g_return_val_if_fail (key && *key, NULL);
|
||||
|
||||
priv = NM_CONFIG_DATA_GET_PRIVATE (self);
|
||||
|
||||
/* we modify @value_cached. In C++ jargon, the field is mutable. */
|
||||
g_free (priv->value_cached);
|
||||
priv->value_cached = nm_config_keyfile_get_value (priv->keyfile, group, key, flags);
|
||||
return priv->value_cached;
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_config_data_has_value (const NMConfigData *self, const char *group, const char *key, NMConfigGetValueFlags flags)
|
||||
{
|
||||
|
|
@ -801,6 +820,8 @@ finalize (GObject *gobject)
|
|||
g_key_file_unref (priv->keyfile_intern);
|
||||
|
||||
G_OBJECT_CLASS (nm_config_data_parent_class)->finalize (gobject);
|
||||
|
||||
g_free (priv->value_cached);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ const char *nm_config_data_get_config_description (const NMConfigData *config_da
|
|||
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, NMConfigGetValueFlags flags);
|
||||
char *nm_config_data_get_value (const NMConfigData *config_data, const char *group, const char *key, NMConfigGetValueFlags flags);
|
||||
const char *nm_config_data_get_value_cached (const NMConfigData *config_data, const char *group, const char *key, NMConfigGetValueFlags flags);
|
||||
gint nm_config_data_get_value_boolean (const NMConfigData *self, const char *group, const char *key, gint default_value);
|
||||
|
||||
const char *nm_config_data_get_connectivity_uri (const NMConfigData *config_data);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue