diff options
Diffstat (limited to 'src/settings/plugins/keyfile/reader.c')
-rw-r--r-- | src/settings/plugins/keyfile/reader.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c index c925dc5028..ccb4ea4b4d 100644 --- a/src/settings/plugins/keyfile/reader.c +++ b/src/settings/plugins/keyfile/reader.c @@ -1214,6 +1214,27 @@ read_one_setting_value (NMSetting *setting, nm_log_warn (LOGD_SETTINGS, "Unhandled setting property type (read): '%s/%s' : '%s'", setting_name, key, G_VALUE_TYPE_NAME (value)); } + } else if (G_VALUE_HOLDS_FLAGS (value)) { + guint64 uint_val; + + uint_val = nm_keyfile_plugin_kf_get_uint64 (info->keyfile, setting_name, key, &err); + if (!err) { + /* Flags are 32-bit but GKeyFile only has uint64 functions */ + if (uint_val <= G_MAXUINT32) + g_object_set (setting, key, uint_val, NULL); + else { + nm_log_warn (LOGD_SETTINGS, "Too large FLAGS property (read): '%s/%s' : '%s'", + setting_name, key, G_VALUE_TYPE_NAME (value)); + } + } + g_clear_error (&err); + } else if (G_VALUE_HOLDS_ENUM (value)) { + int int_val; + + int_val = nm_keyfile_plugin_kf_get_integer (info->keyfile, setting_name, key, &err); + if (!err) + g_object_set (setting, key, int_val, NULL); + g_clear_error (&err); } else { nm_log_warn (LOGD_SETTINGS, "Unhandled setting property type (read): '%s/%s' : '%s'", setting_name, key, G_VALUE_TYPE_NAME (value)); |