summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-08-28 19:03:58 +0200
committerThomas Haller <thaller@redhat.com>2014-10-12 22:31:39 +0200
commit909150c2f65a652f6ab9d70e928e6a0d0b7a590a (patch)
tree6ab6dc345e87a42a1c544787278cc65c5736a21e
parentb62185fb2a57c7daf3abfd4889d274b3ee4426fa (diff)
downloadNetworkManager-909150c2f65a652f6ab9d70e928e6a0d0b7a590a.tar.gz
keyfile: add support for G_INT64 properties
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/settings/plugins/keyfile/reader.c14
-rw-r--r--src/settings/plugins/keyfile/writer.c6
2 files changed, 20 insertions, 0 deletions
diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c
index c925dc5028..1ed938ed7d 100644
--- a/src/settings/plugins/keyfile/reader.c
+++ b/src/settings/plugins/keyfile/reader.c
@@ -44,6 +44,7 @@
#include "reader.h"
#include "common.h"
#include "utils.h"
+#include "NetworkManagerUtils.h"
/* Some setting properties also contain setting names, such as
* NMSettingConnection's 'type' property (which specifies the base type of the
@@ -1074,6 +1075,7 @@ read_one_setting_value (NMSetting *setting,
{
ReadInfo *info = user_data;
const char *setting_name;
+ int errsv;
GType type;
GError *err = NULL;
gboolean check_for_key = TRUE;
@@ -1174,6 +1176,18 @@ read_one_setting_value (NMSetting *setting,
uint_val = g_ascii_strtoull (tmp_str, NULL, 10);
g_free (tmp_str);
g_object_set (setting, key, uint_val, NULL);
+ } else if (type == G_TYPE_INT64) {
+ char *tmp_str;
+ gint64 int_val;
+
+ tmp_str = nm_keyfile_plugin_kf_get_value (info->keyfile, setting_name, key, NULL);
+ int_val = nm_utils_ascii_str_to_int64 (tmp_str, 10, G_MININT64, G_MAXINT64, 0);
+ errsv = errno;
+ if (errsv)
+ nm_log_warn (LOGD_SETTINGS, "Invalid int64 value (%s)", tmp_str);
+ else
+ g_object_set (setting, key, int_val, NULL);
+ g_free (tmp_str);
} else if (type == G_TYPE_BYTES) {
gint *tmp;
GByteArray *array;
diff --git a/src/settings/plugins/keyfile/writer.c b/src/settings/plugins/keyfile/writer.c
index 2661d50066..50132adbbe 100644
--- a/src/settings/plugins/keyfile/writer.c
+++ b/src/settings/plugins/keyfile/writer.c
@@ -828,6 +828,12 @@ write_setting_value (NMSetting *setting,
numstr = g_strdup_printf ("%" G_GUINT64_FORMAT, g_value_get_uint64 (value));
nm_keyfile_plugin_kf_set_value (info->keyfile, setting_name, key, numstr);
g_free (numstr);
+ } else if (type == G_TYPE_INT64) {
+ char *numstr;
+
+ numstr = g_strdup_printf ("%" G_GINT64_FORMAT, g_value_get_int64 (value));
+ nm_keyfile_plugin_kf_set_value (info->keyfile, setting_name, key, numstr);
+ g_free (numstr);
} else if (type == G_TYPE_BOOLEAN) {
nm_keyfile_plugin_kf_set_boolean (info->keyfile, setting_name, key, g_value_get_boolean (value));
} else if (type == G_TYPE_CHAR) {