1
/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
1
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2
/* NetworkManager system settings service - keyfile plugin
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License along
15
* with this program; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
* Copyright (C) 2008 Novell, Inc.
19
* Copyright (C) 2008 Red Hat, Inc.
3
22
#include <sys/stat.h>
51
g_key_file_set_string_list (file, setting->name, key, (const char **) list, array->len);
70
g_key_file_set_string_list (file, nm_setting_get_name (setting), key, (const char **) list, array->len);
57
76
for (i = 0; i < array->len; i++)
58
77
tmp_array[i] = g_array_index (array, int, i);
60
g_key_file_set_integer_list (file, setting->name, key, tmp_array, array->len);
79
g_key_file_set_integer_list (file, nm_setting_get_name (setting), key, tmp_array, array->len);
61
80
g_free (tmp_array);
138
157
if (!strcmp (key, NM_SETTING_IP4_CONFIG_ADDRESSES))
139
write_ip4_values (file, setting->name, key, array, 3, 0, 2);
158
write_ip4_values (file, nm_setting_get_name (setting), key, array, 3, 0, 2);
140
159
else if (!strcmp (key, NM_SETTING_IP4_CONFIG_ROUTES))
141
write_ip4_values (file, setting->name, key, array, 4, 0, 2);
160
write_ip4_values (file, nm_setting_get_name (setting), key, array, 4, 0, 2);
177
196
&& !strcmp (key, NM_SETTING_VPN_SECRETS)) {
178
197
info.setting_name = VPN_SECRETS_GROUP;
180
info.setting_name = setting->name;
199
info.setting_name = nm_setting_get_name (setting);
182
201
g_hash_table_foreach (hash, write_hash_of_string_helper, &info);
186
205
write_setting_value (NMSetting *setting,
192
211
GKeyFile *file = (GKeyFile *) user_data;
212
const char *setting_name;
195
215
type = G_VALUE_TYPE (value);
198
218
if (!strcmp (key, NM_SETTING_NAME))
221
/* Don't write the NMSettingConnection object's 'read-only' property */
222
if ( NM_IS_SETTING_CONNECTION (setting)
223
&& !strcmp (key, NM_SETTING_CONNECTION_READ_ONLY))
226
setting_name = nm_setting_get_name (setting);
201
228
if (type == G_TYPE_STRING) {
204
231
str = g_value_get_string (value);
206
g_key_file_set_string (file, setting->name, key, str);
233
g_key_file_set_string (file, setting_name, key, str);
207
234
} else if (type == G_TYPE_UINT)
208
g_key_file_set_integer (file, setting->name, key, (int) g_value_get_uint (value));
235
g_key_file_set_integer (file, setting_name, key, (int) g_value_get_uint (value));
209
236
else if (type == G_TYPE_INT)
210
g_key_file_set_integer (file, setting->name, key, g_value_get_int (value));
237
g_key_file_set_integer (file, setting_name, key, g_value_get_int (value));
211
238
else if (type == G_TYPE_UINT64) {
214
241
numstr = g_strdup_printf ("%" G_GUINT64_FORMAT, g_value_get_uint64 (value));
215
g_key_file_set_value (file, setting->name, key, numstr);
242
g_key_file_set_value (file, setting_name, key, numstr);
217
244
} else if (type == G_TYPE_BOOLEAN) {
218
g_key_file_set_boolean (file, setting->name, key, g_value_get_boolean (value));
245
g_key_file_set_boolean (file, setting_name, key, g_value_get_boolean (value));
219
246
} else if (type == G_TYPE_CHAR) {
220
g_key_file_set_integer (file, setting->name, key, (int) g_value_get_char (value));
247
g_key_file_set_integer (file, setting_name, key, (int) g_value_get_char (value));
221
248
} else if (type == DBUS_TYPE_G_UCHAR_ARRAY) {
222
249
GByteArray *array;
230
257
for (i = 0; i < array->len; i++)
231
258
tmp_array[i] = (int) array->data[i];
233
g_key_file_set_integer_list (file, setting->name, key, tmp_array, array->len);
260
g_key_file_set_integer_list (file, setting_name, key, tmp_array, array->len);
234
261
g_free (tmp_array);
236
263
} else if (type == dbus_g_type_get_collection ("GSList", G_TYPE_STRING)) {
246
273
for (iter = list; iter; iter = iter->next)
247
274
array[i++] = iter->data;
249
g_key_file_set_string_list (file, setting->name, key, (const gchar **const) array, i);
276
g_key_file_set_string_list (file, setting_name, key, (const gchar **const) array, i);
252
279
} else if (type == dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_STRING)) {
254
281
} else if (type == DBUS_TYPE_G_UINT_ARRAY) {
255
282
if (!write_array_of_uint (file, setting, key, value)) {
256
283
g_warning ("Unhandled setting property type (write) '%s/%s' : '%s'",
257
setting->name, key, g_type_name (type));
284
setting_name, key, g_type_name (type));
259
286
} else if (type == DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UINT) {
260
287
if (!write_array_of_array_of_uint (file, setting, key, value)) {
261
288
g_warning ("Unhandled setting property type (write) '%s/%s' : '%s'",
262
setting->name, key, g_type_name (type));
289
setting_name, key, g_type_name (type));
265
292
g_warning ("Unhandled setting property type (write) '%s/%s' : '%s'",
266
setting->name, key, g_type_name (type));
293
setting_name, key, g_type_name (type));