From a3b8ecb9ea4a2020a318e735f2c5443b18ef5ea5 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 25 May 2010 23:34:39 -0700 Subject: [PATCH] keyfile: don't write out default values --- system-settings/plugins/keyfile/io/writer.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/system-settings/plugins/keyfile/io/writer.c b/system-settings/plugins/keyfile/io/writer.c index b1398067bb..348fa515f4 100644 --- a/system-settings/plugins/keyfile/io/writer.c +++ b/system-settings/plugins/keyfile/io/writer.c @@ -509,10 +509,9 @@ write_setting_value (NMSetting *setting, { GKeyFile *file = (GKeyFile *) user_data; const char *setting_name; - GType type; + GType type = G_VALUE_TYPE (value); KeyWriter *writer = &key_writers[0]; - - type = G_VALUE_TYPE (value); + GParamSpec *pspec; /* Setting name gets picked up from the keyfile's section name instead */ if (!strcmp (key, NM_SETTING_NAME)) @@ -525,6 +524,15 @@ write_setting_value (NMSetting *setting, setting_name = nm_setting_get_name (setting); + /* If the value is the default value, remove the item from the keyfile */ + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (setting), key); + if (pspec) { + if (g_param_value_defaults (pspec, (GValue *) value)) { + g_key_file_remove_key (file, setting_name, key, NULL); + return; + } + } + /* Look through the list of handlers for non-standard format key values */ while (writer->setting_name) { if (!strcmp (writer->setting_name, setting_name) && !strcmp (writer->key, key)) {