1 /*
2  * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3  * Copyright (C) 1999-2020 the Claws Mail team and Hiroyuki Yamamoto
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifdef HAVE_CONFIG_H
20 #include "config.h"
21 #include "claws-features.h"
22 #endif
23 
24 #include "defs.h"
25 
26 #include <glib.h>
27 #include <glib/gi18n.h>
28 #include <gtk/gtk.h>
29 #include <gdk/gdkkeysyms.h>
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include <string.h>
33 #include <unistd.h>
34 #include <sys/types.h>
35 #include <sys/stat.h>
36 #include <errno.h>
37 
38 #include "main.h"
39 #include "prefs_gtk.h"
40 #include "prefs_common.h"
41 #include "prefs_display_header.h"
42 #include "prefs_summary_column.h"
43 #include "prefs_folder_column.h"
44 #include "prefs_migration.h"
45 #include "mainwindow.h"
46 #include "summaryview.h"
47 #include "folderview.h"
48 #include "messageview.h"
49 #include "manage_window.h"
50 #include "inc.h"
51 #include "menu.h"
52 #include "codeconv.h"
53 #include "utils.h"
54 #include "gtkutils.h"
55 #include "alertpanel.h"
56 #include "folder.h"
57 #include "socket.h"
58 #include "filesel.h"
59 #include "folderview.h"
60 #include "stock_pixmap.h"
61 #include "prefswindow.h"
62 #include "colorlabel.h"
63 #include "passwordstore.h"
64 #include "file-utils.h"
65 
66 #ifndef USE_ALT_ADDRBOOK
67 	#include "addrcustomattr.h"
68 #endif
69 
70 enum {
71 	DATEFMT_FMT,
72 	DATEFMT_TXT,
73 	N_DATEFMT_COLUMNS
74 };
75 
76 PrefsCommon prefs_common;
77 
78 GtkWidget *notebook;
79 
80 #ifdef G_OS_WIN32
81 /*
82  * In the Windows version prefs_common contains
83  *   - the non-OS-specific settings of the "Common" section and
84  *   - the OS-specific settings of the "CommonWin32" section
85  * The OS-specific settings of the "Common" section are not used
86  * but saved in prefs_unix.
87  */
88 
89 #  define SPECIFIC_PREFS prefs_unix
90 
91 static PrefsCommon prefs_unix;
92 
93 static PrefParam param_os_specific[] = {
94 	/* Receive */
95 	{"ext_inc_path", "",
96 	 &prefs_common.extinc_cmd, P_STRING, NULL, NULL, NULL},
97 	{"newmail_notify_cmd", "",
98 	 &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL},
99 
100 	/* new fonts */
101 	{"message_font_gtk2",	"Monospace 9",
102 	 &prefs_common.textfont,		P_STRING, NULL, NULL, NULL},
103         {"print_font_gtk2",     "Monospace 9",
104          &prefs_common.printfont,		P_STRING, NULL, NULL, NULL},
105 	{"small_font_gtk2",	"Sans 9",
106 	  &prefs_common.smallfont,		P_STRING, NULL, NULL, NULL},
107 	{"normal_font_gtk2",	"Sans 9",
108 	  &prefs_common.normalfont,		P_STRING, NULL, NULL, NULL},
109 	{"bold_font_gtk2",	"Sans 9 Bold",
110 	  &prefs_common.boldfont,		P_STRING, NULL, NULL, NULL},
111 	/* Message */
112 	{"attach_save_directory", NULL,
113 	 &prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
114 	{"attach_load_directory", NULL,
115 	 &prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
116 
117 	/* MIME viewer */
118 	{"mime_textviewer", NULL,
119 	 &prefs_common.mime_textviewer,   P_STRING, NULL, NULL, NULL},
120 	{"mime_open_command", "notepad '%s'",
121 	 &prefs_common.mime_open_cmd,     P_STRING, NULL, NULL, NULL},
122 
123 	/* Interface */
124 	{"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
125 	 &prefs_common.pixmap_theme_path, P_STRING, NULL, NULL, NULL},
126 #ifdef HAVE_SVG
127 	{"enable_alpha_svg", "TRUE",
128 	 &prefs_common.enable_alpha_svg, P_BOOL, NULL, NULL, NULL},
129 	{"enable_pixmap_scaling", "TRUE",
130 	 &prefs_common.enable_pixmap_scaling, P_BOOL, NULL, NULL, NULL},
131 	{"pixmap_scaling_auto", "TRUE",
132 	 &prefs_common.pixmap_scaling_auto, P_BOOL, NULL, NULL, NULL},
133 	{"pixmap_scaling_ppi", "96",
134 	 &prefs_common.pixmap_scaling_ppi, P_INT, NULL, NULL, NULL},
135 #endif
136 
137 	/* Other */
138 	{"ext_editor_command", "notepad %s",
139 	 &prefs_common.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
140 
141 	{NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
142 };
143 #else
144 #  define SPECIFIC_PREFS prefs_common
145 #endif
146 
147 /*
148    parameter name, default value, pointer to the prefs variable, data type,
149    pointer to the widget pointer,
150    pointer to the function for data setting,
151    pointer to the function for widget setting
152  */
153 
154 static PrefParam param[] = {
155 	{"config_version", "0",
156 	 &prefs_common.config_version, P_INT, NULL, NULL, NULL},
157 
158 	/* Receive */
159 	{"use_ext_inc", "FALSE", &prefs_common.use_extinc, P_BOOL,
160 	 NULL, NULL, NULL},
161 	{"ext_inc_path", DEFAULT_INC_PATH, &SPECIFIC_PREFS.extinc_cmd, P_STRING,
162 	 NULL, NULL, NULL},
163 
164 	{"autochk_newmail", "FALSE", &prefs_common.autochk_newmail, P_BOOL,
165 	 NULL, NULL, NULL},
166 	{"autochk_interval", "600", &prefs_common.autochk_itv, P_INT,
167 	 NULL, NULL, NULL},
168 	{"check_on_startup", "FALSE", &prefs_common.chk_on_startup, P_BOOL,
169 	 NULL, NULL, NULL},
170 	{"open_inbox_on_inc", "FALSE", &prefs_common.open_inbox_on_inc,
171 	 P_BOOL, NULL, NULL, NULL},
172 	{"scan_all_after_inc", "FALSE", &prefs_common.scan_all_after_inc,
173 	 P_BOOL, NULL, NULL, NULL},
174 	{"newmail_notify_manu", "FALSE", &prefs_common.newmail_notify_manu,
175 	 P_BOOL, NULL, NULL, NULL},
176  	{"newmail_notify_auto", "FALSE", &prefs_common.newmail_notify_auto,
177 	P_BOOL, NULL, NULL, NULL},
178  	{"newmail_notify_cmd", "", &SPECIFIC_PREFS.newmail_notify_cmd, P_STRING,
179  	 NULL, NULL, NULL},
180 	{"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM,
181 	 NULL, NULL, NULL},
182 	{"receivewin_width", "460", &prefs_common.receivewin_width, P_INT,
183 	 NULL, NULL, NULL},
184 	{"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT,
185 	 NULL, NULL, NULL},
186 	{"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
187 	 P_BOOL, NULL, NULL, NULL},
188 	{"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog,
189 	 P_BOOL, NULL, NULL, NULL},
190 
191 	/* Send */
192 	{"save_message", "TRUE", &prefs_common.savemsg, P_BOOL,
193 	 NULL, NULL, NULL},
194 	{"confirm_send_queued_messages", "FALSE", &prefs_common.confirm_send_queued_messages,
195 	 P_BOOL, NULL, NULL, NULL},
196 #ifndef GENERIC_UMPC
197 	{"send_dialog_mode", "0", &prefs_common.send_dialog_invisible, P_BOOL,
198 	 NULL, NULL, NULL},
199 #else
200 	{"send_dialog_mode", "1", &prefs_common.send_dialog_invisible, P_BOOL,
201 	 NULL, NULL, NULL},
202 #endif
203 	{"sendwin_width", "460", &prefs_common.sendwin_width, P_INT,
204 	 NULL, NULL, NULL},
205 	{"sendwin_height", "-1", &prefs_common.sendwin_height, P_INT,
206 	 NULL, NULL, NULL},
207 
208 	{"outgoing_charset", CS_AUTO, &prefs_common.outgoing_charset, P_STRING,
209 	 NULL, NULL, NULL},
210 	{"encoding_method", "0", &prefs_common.encoding_method, P_ENUM,
211 	 NULL, NULL, NULL},
212 	{"outgoing_fallback_to_ascii", "TRUE", &prefs_common.outgoing_fallback_to_ascii, P_BOOL,
213 	 NULL, NULL, NULL},
214 	 {"rewrite_first_from", "TRUE", &prefs_common.rewrite_first_from,
215 	  P_BOOL, NULL, NULL, NULL},
216 	{"warn_empty_subj", "TRUE", &prefs_common.warn_empty_subj,
217 	 P_BOOL, NULL, NULL, NULL},
218 	{"warn_sending_many_recipients_num", "0", &prefs_common.warn_sending_many_recipients_num, P_INT,
219 	 NULL, NULL, NULL},
220 	{"hide_timezone", "FALSE", &prefs_common.hide_timezone,
221 	 P_BOOL, NULL, NULL, NULL},
222 	{"allow_jisx0201_kana", "FALSE", &prefs_common.allow_jisx0201_kana,
223 	 P_BOOL, NULL, NULL, NULL},
224 
225 	/* Compose */
226 	{"auto_ext_editor", "FALSE", &prefs_common.auto_exteditor, P_BOOL,
227 	 NULL, NULL, NULL},
228 	{"forward_as_attachment", "FALSE", &prefs_common.forward_as_attachment,
229 	 P_BOOL, NULL, NULL, NULL},
230 	{"redirect_keep_from", "FALSE",
231 	 &prefs_common.redirect_keep_from, P_BOOL,
232 	 NULL, NULL, NULL},
233 	{"undo_level", "50", &prefs_common.undolevels, P_INT,
234 	 NULL, NULL, NULL},
235 	{"compose_with_format", "FALSE", &prefs_common.compose_with_format, P_BOOL,
236 	 NULL, NULL, NULL},
237 	{"compose_subject_format", "",
238 	 &prefs_common.compose_subject_format, P_STRING, NULL, NULL, NULL},
239 	{"compose_body_format", N_("Hello,\\n"),
240 	 &prefs_common.compose_body_format, P_STRING, NULL, NULL, NULL},
241 	{"show_compose_margin", "FALSE", &prefs_common.show_compose_margin, P_BOOL,
242 	 NULL, NULL, NULL},
243 	{"type_any_header", "FALSE", &prefs_common.type_any_header, P_BOOL,
244 	 NULL, NULL, NULL},
245 
246 
247 	{"linewrap_length", "72", &prefs_common.linewrap_len, P_INT,
248 	 NULL, NULL, NULL},
249 	{"linewrap_quotation", "TRUE", &prefs_common.linewrap_quote, P_BOOL,
250 	 NULL, NULL, NULL},
251 	{"linewrap_pastes", "TRUE", &prefs_common.linewrap_pastes, P_BOOL,
252 	 NULL, NULL, NULL},
253 	{"primary_paste_unselects", "FALSE", &prefs_common.primary_paste_unselects, P_BOOL,
254 	 NULL, NULL, NULL},
255 	{"linewrap_auto", "TRUE", &prefs_common.autowrap, P_BOOL,
256 	 NULL, NULL, NULL},
257 	{"auto_indent", "TRUE", &prefs_common.auto_indent, P_BOOL,
258 	 NULL, NULL, NULL},
259         {"autosave", "TRUE", &prefs_common.autosave,
260 	 P_BOOL, NULL, NULL, NULL},
261         {"autosave_length", "50", &prefs_common.autosave_length, P_INT,
262 	 NULL, NULL, NULL},
263         {"autosave_encrypted", "FALSE", &prefs_common.autosave_encrypted,
264 	 P_BOOL, NULL, NULL, NULL},
265         {"warn_large_insert", "TRUE", &prefs_common.warn_large_insert,
266 	 P_BOOL, NULL, NULL, NULL},
267         {"warn_large_insert_size", "500", &prefs_common.warn_large_insert_size,
268 	 P_INT, NULL, NULL, NULL},
269 
270 	{"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
271 	 NULL, NULL, NULL},
272 	{"dictionary",  "", &prefs_common.dictionary, P_STRING,
273 	 NULL, NULL, NULL},
274 	{"alt_dictionary",  "", &prefs_common.alt_dictionary, P_STRING,
275 	 NULL, NULL, NULL},
276 	{"use_alternate_dict", "FALSE", &prefs_common.use_alternate, P_BOOL,
277 	 NULL, NULL, NULL},
278 	{"check_while_typing", "TRUE", &prefs_common.check_while_typing, P_BOOL,
279 	 NULL, NULL, NULL},
280 	{"recheck_when_changing_dict", "TRUE", &prefs_common.recheck_when_changing_dict,
281 	 P_BOOL, NULL, NULL, NULL},
282 	{"misspelled_color", "#ff0000", &prefs_common.color[COL_MISSPELLED],
283 	 P_COLOR, NULL, NULL, NULL},
284 	{"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
285 	 NULL, NULL, NULL},
286 
287 	{"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
288 	 NULL, NULL, NULL},
289 	{"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
290 	 NULL, NULL, NULL},
291 
292 	/* Account autoselection */
293 	{"reply_account_autoselect", "TRUE",
294 	 &prefs_common.reply_account_autosel, P_BOOL,
295 	 NULL, NULL, NULL},
296 	{"forward_account_autoselect", "TRUE",
297 	 &prefs_common.forward_account_autosel, P_BOOL,
298 	 NULL, NULL, NULL},
299 	{"reedit_account_autoselect", "TRUE",
300 	 &prefs_common.reedit_account_autosel, P_BOOL,
301 	 NULL, NULL, NULL},
302 
303 	{"default_reply_list", "TRUE", &prefs_common.default_reply_list, P_BOOL,
304 	 NULL, NULL, NULL},
305 
306 #ifndef GENERIC_UMPC
307 	{"show_ruler", "TRUE", &prefs_common.show_ruler, P_BOOL,
308 	 NULL, NULL, NULL},
309 #else
310 	{"show_ruler", "FALSE", &prefs_common.show_ruler, P_BOOL,
311 	 NULL, NULL, NULL},
312 #endif
313 
314 	/* Quote */
315 	{"reply_quote_mark", "> ", &prefs_common.quotemark, P_STRING,
316 	 NULL, NULL, NULL},
317 	{"reply_quote_format", N_("On %d\\n%f wrote:\\n\\n%q\\n%X"),
318 	 &prefs_common.quotefmt, P_STRING, NULL, NULL, NULL},
319 
320 	{"forward_quote_mark", "> ", &prefs_common.fw_quotemark, P_STRING,
321 	 NULL, NULL, NULL},
322 	{"forward_quote_format",
323 	 N_("\\n\\nBegin forwarded message:\\n\\n"
324  	 "?d{Date: %d\\n}?f{From: %f\\n}?t{To: %t\\n}?c{Cc: %c\\n}"
325  	 "?n{Newsgroups: %n\\n}?s{Subject: %s\\n}\\n\\n%M"),
326 	 &prefs_common.fw_quotefmt, P_STRING,
327 	 NULL, NULL, NULL},
328 	{"quote_chars", ">", &prefs_common.quote_chars, P_STRING,
329 	 NULL, NULL, NULL},
330 
331 	/* Display */
332 	/* fonts */
333 #ifndef GENERIC_UMPC
334 	{"message_font_gtk2",	"Monospace 9",
335 	 &SPECIFIC_PREFS.textfont,			P_STRING, NULL, NULL, NULL},
336         {"print_font_gtk2",     "Monospace 9",
337          &SPECIFIC_PREFS.printfont,             P_STRING, NULL, NULL, NULL},
338 	{"small_font_gtk2",	"Sans 9",
339 	  &SPECIFIC_PREFS.smallfont,		P_STRING, NULL, NULL, NULL},
340 	{"normal_font_gtk2",	"Sans 9",
341 	  &SPECIFIC_PREFS.normalfont,		P_STRING, NULL, NULL, NULL},
342 	{"bold_font_gtk2",	"Sans Bold 9",
343 	  &SPECIFIC_PREFS.boldfont,		P_STRING, NULL, NULL, NULL},
344 #else
345 	{"message_font_gtk2",	"Monospace 8",
346 	 &SPECIFIC_PREFS.textfont,			P_STRING, NULL, NULL, NULL},
347         {"print_font_gtk2",     "Monospace 8",
348          &SPECIFIC_PREFS.printfont,             P_STRING, NULL, NULL, NULL},
349 	{"small_font_gtk2",	"Sans 8",
350 	  &SPECIFIC_PREFS.smallfont,		P_STRING, NULL, NULL, NULL},
351 	{"normal_font_gtk2",	"Sans 8",
352 	  &SPECIFIC_PREFS.normalfont,		P_STRING, NULL, NULL, NULL},
353 	{"bold_font_gtk2",	"Sans Bold 8",
354 	  &SPECIFIC_PREFS.boldfont,		P_STRING, NULL, NULL, NULL},
355 #endif
356 
357 	{"use_different_print_font", "FALSE", &prefs_common.use_different_print_font, P_BOOL,
358 	 NULL, NULL, NULL},
359 	{"derive_from_normal_font", "TRUE", &prefs_common.derive_from_normal_font, P_BOOL,
360 	 NULL, NULL, NULL},
361 
362 	/* custom colors */
363 	{"custom_color1", "#ff9900", &prefs_common.custom_colorlabel[0].color, P_COLOR,
364 	 NULL, NULL, NULL},
365 	{"custom_colorlabel1", N_("Orange"), &prefs_common.custom_colorlabel[0].label, P_STRING,
366 	 NULL, NULL, NULL},
367 	{"custom_color2", "#ff0000", &prefs_common.custom_colorlabel[1].color, P_COLOR,
368 	 NULL, NULL, NULL},
369 	{"custom_colorlabel2", N_("Red"), &prefs_common.custom_colorlabel[1].label, P_STRING,
370 	 NULL, NULL, NULL},
371 	{"custom_color3", "#ff66ff", &prefs_common.custom_colorlabel[2].color, P_COLOR,
372 	 NULL, NULL, NULL},
373 	{"custom_colorlabel3", N_("Pink"), &prefs_common.custom_colorlabel[2].label, P_STRING,
374 	 NULL, NULL, NULL},
375 	{"custom_color4", "#00ccff", &prefs_common.custom_colorlabel[3].color, P_COLOR,
376 	 NULL, NULL, NULL},
377 	{"custom_colorlabel4", N_("Sky blue"), &prefs_common.custom_colorlabel[3].label, P_STRING,
378 	 NULL, NULL, NULL},
379 	{"custom_color5", "#0000ff", &prefs_common.custom_colorlabel[4].color, P_COLOR,
380 	 NULL, NULL, NULL},
381 	{"custom_colorlabel5", N_("Blue"), &prefs_common.custom_colorlabel[4].label, P_STRING,
382 	 NULL, NULL, NULL},
383 	{"custom_color6", "#009900", &prefs_common.custom_colorlabel[5].color, P_COLOR,
384 	 NULL, NULL, NULL},
385 	{"custom_colorlabel6", N_("Green"), &prefs_common.custom_colorlabel[5].label, P_STRING,
386 	 NULL, NULL, NULL},
387 	{"custom_color7", "#663333", &prefs_common.custom_colorlabel[6].color, P_COLOR,
388 	 NULL, NULL, NULL},
389 	{"custom_colorlabel7", N_("Brown"), &prefs_common.custom_colorlabel[6].label, P_STRING,
390 	 NULL, NULL, NULL},
391 	{"custom_color8", "#aaaaaa", &prefs_common.custom_colorlabel[7].color, P_COLOR,
392 	 NULL, NULL, NULL},
393 	{"custom_colorlabel8", N_("Grey"), &prefs_common.custom_colorlabel[7].label, P_STRING,
394 	 NULL, NULL, NULL},
395 	{"custom_color9", "#c07254", &prefs_common.custom_colorlabel[8].color, P_COLOR,
396 	 NULL, NULL, NULL},
397 	{"custom_colorlabel9", N_("Light brown"), &prefs_common.custom_colorlabel[8].label, P_STRING,
398 	 NULL, NULL, NULL},
399 	{"custom_color10", "#c00000", &prefs_common.custom_colorlabel[9].color, P_COLOR,
400 	 NULL, NULL, NULL},
401 	{"custom_colorlabel10", N_("Dark red"), &prefs_common.custom_colorlabel[9].label, P_STRING,
402 	 NULL, NULL, NULL},
403 	{"custom_color11", "#cc1074", &prefs_common.custom_colorlabel[10].color, P_COLOR,
404 	 NULL, NULL, NULL},
405 	{"custom_colorlabel11", N_("Dark pink"), &prefs_common.custom_colorlabel[10].label, P_STRING,
406 	 NULL, NULL, NULL},
407 	{"custom_color12", "#5094cd", &prefs_common.custom_colorlabel[11].color, P_COLOR,
408 	 NULL, NULL, NULL},
409 	{"custom_colorlabel12", N_("Steel blue"), &prefs_common.custom_colorlabel[11].label, P_STRING,
410 	 NULL, NULL, NULL},
411 	{"custom_color13", "#ffd500", &prefs_common.custom_colorlabel[12].color, P_COLOR,
412 	 NULL, NULL, NULL},
413 	{"custom_colorlabel13", N_("Gold"), &prefs_common.custom_colorlabel[12].label, P_STRING,
414 	 NULL, NULL, NULL},
415 	{"custom_color14", "#00d800", &prefs_common.custom_colorlabel[13].color, P_COLOR,
416 	 NULL, NULL, NULL},
417 	{"custom_colorlabel14", N_("Bright green"), &prefs_common.custom_colorlabel[13].label, P_STRING,
418 	 NULL, NULL, NULL},
419 	{"custom_color15", "#c060c0", &prefs_common.custom_colorlabel[14].color, P_COLOR,
420 	 NULL, NULL, NULL},
421 	{"custom_colorlabel15", N_("Magenta"), &prefs_common.custom_colorlabel[14].label, P_STRING,
422 	 NULL, NULL, NULL},
423 
424 	/* image viewer */
425 	{"display_image", "TRUE", &prefs_common.display_img, P_BOOL,
426 	 NULL, NULL, NULL},
427 	{"resize_image", "TRUE", &prefs_common.resize_img, P_BOOL,
428 	 NULL, NULL, NULL},
429 	{"inline_image", "TRUE", &prefs_common.inline_img, P_BOOL,
430 	 NULL, NULL, NULL},
431 	{"fit_image_height", "TRUE", &prefs_common.fit_img_height, P_BOOL,
432 	 NULL, NULL, NULL},
433 
434 	{"display_folder_unread_num", "0",
435 	 &prefs_common.display_folder_unread, P_INT,
436 	 NULL, NULL, NULL},
437 	{"newsgroup_abbrev_len", "16",
438 	 &prefs_common.ng_abbrev_len, P_INT,
439 	 NULL, NULL, NULL},
440 
441 #ifdef ENABLE_NLS
442 	{"translate_header", "TRUE", &prefs_common.trans_hdr, P_BOOL,
443 	 NULL, NULL, NULL},
444 #else
445 	{"translate_header", "FALSE", &prefs_common.trans_hdr, P_BOOL,
446 	 NULL, NULL, NULL},
447 #endif
448 
449 	/* Display: Summary View */
450 	{"default_sort_key", "3", &prefs_common.default_sort_key, P_ENUM,
451 	 NULL, NULL, NULL},
452 	{"default_sort_type", "1", &prefs_common.default_sort_type, P_ENUM,
453 	 NULL, NULL, NULL},
454 	{"use_address_book", "FALSE", &prefs_common.use_addr_book, P_BOOL,
455 	 NULL, NULL, NULL},
456 	{"thread_by_subject", "TRUE", &prefs_common.thread_by_subject, P_BOOL,
457 	 NULL, NULL, NULL},
458 	{"date_format", N_("%x(%a) %H:%M"), &prefs_common.date_format,
459 	 P_STRING, NULL, NULL, NULL},
460 	{"msgview_date_format", "FALSE", &prefs_common.msgview_date_format, P_BOOL,
461 	 NULL, NULL, NULL},
462 
463 	{"next_on_delete", "FALSE", &prefs_common.next_on_delete, P_BOOL,
464 	 NULL, NULL, NULL},
465 
466 	 {"bold_unread", "TRUE", &prefs_common.bold_unread, P_BOOL,
467 	 NULL, NULL, NULL},
468 
469 #ifndef GENERIC_UMPC
470 	{"toolbar_style", "3", &prefs_common.toolbar_style, P_ENUM,
471 	 NULL, NULL, NULL},
472 #else
473 	{"toolbar_style", "1", &prefs_common.toolbar_style, P_ENUM,
474 	 NULL, NULL, NULL},
475 #endif
476 	{"toolbar_detachable", "FALSE", &prefs_common.toolbar_detachable, P_BOOL,
477 	 NULL, NULL, NULL},
478 	{"show_col_headers", "TRUE", &prefs_common.show_col_headers, P_BOOL,
479 	 NULL, NULL, NULL},
480 #ifndef GENERIC_UMPC
481 	{"show_statusbar", "TRUE", &prefs_common.show_statusbar, P_BOOL,
482 	 NULL, NULL, NULL},
483 	{"show_searchbar", "TRUE", &prefs_common.show_searchbar, P_BOOL,
484 	 NULL, NULL, NULL},
485 #else
486 	{"show_statusbar", "FALSE", &prefs_common.show_statusbar, P_BOOL,
487 	 NULL, NULL, NULL},
488 	{"show_searchbar", "FALSE", &prefs_common.show_searchbar, P_BOOL,
489 	 NULL, NULL, NULL},
490 #endif
491 
492 	{"summary_col_show_mark", "TRUE",
493 	 &prefs_common.summary_col_visible[S_COL_MARK], P_BOOL, NULL, NULL, NULL},
494 	{"summary_col_show_unread", "TRUE",
495 	 &prefs_common.summary_col_visible[S_COL_STATUS], P_BOOL, NULL, NULL, NULL},
496 	{"summary_col_show_subject", "TRUE",
497 	 &prefs_common.summary_col_visible[S_COL_SUBJECT], P_BOOL, NULL, NULL, NULL},
498 	{"summary_col_show_from", "TRUE",
499 	 &prefs_common.summary_col_visible[S_COL_FROM], P_BOOL, NULL, NULL, NULL},
500 	{"summary_col_show_to", "FALSE",
501 	 &prefs_common.summary_col_visible[S_COL_TO], P_BOOL, NULL, NULL, NULL},
502 	{"summary_col_show_date", "TRUE",
503 	 &prefs_common.summary_col_visible[S_COL_DATE], P_BOOL, NULL, NULL, NULL},
504 	{"summary_col_show_mime", "TRUE",
505 	 &prefs_common.summary_col_visible[S_COL_MIME], P_BOOL, NULL, NULL, NULL},
506 	{"summary_col_show_size", "TRUE",
507 	 &prefs_common.summary_col_visible[S_COL_SIZE], P_BOOL, NULL, NULL, NULL},
508 	{"summary_col_show_number", "FALSE",
509 	 &prefs_common.summary_col_visible[S_COL_NUMBER], P_BOOL, NULL, NULL, NULL},
510 	{"summary_col_show_score", "FALSE",
511 	 &prefs_common.summary_col_visible[S_COL_SCORE], P_BOOL, NULL, NULL, NULL},
512 	{"summary_col_show_locked", "FALSE",
513 	 &prefs_common.summary_col_visible[S_COL_LOCKED], P_BOOL, NULL, NULL, NULL},
514 	{"summary_col_show_tags", "FALSE",
515 	 &prefs_common.summary_col_visible[S_COL_TAGS], P_BOOL, NULL, NULL, NULL},
516 
517 	{"summary_col_lock", "FALSE", &prefs_common.summary_col_lock, P_BOOL,
518 	 NULL, NULL, NULL},
519 
520 	 {"summary_col_pos_mark", "0",
521 	  &prefs_common.summary_col_pos[S_COL_MARK], P_INT, NULL, NULL, NULL},
522 	{"summary_col_pos_unread", "1",
523 	  &prefs_common.summary_col_pos[S_COL_STATUS], P_INT, NULL, NULL, NULL},
524 	{"summary_col_pos_mime", "2",
525 	  &prefs_common.summary_col_pos[S_COL_MIME], P_INT, NULL, NULL, NULL},
526 	{"summary_col_pos_subject", "3",
527 	  &prefs_common.summary_col_pos[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
528 	{"summary_col_pos_from", "4",
529 	  &prefs_common.summary_col_pos[S_COL_FROM], P_INT, NULL, NULL, NULL},
530 	{"summary_col_pos_date", "5",
531 	  &prefs_common.summary_col_pos[S_COL_DATE], P_INT, NULL, NULL, NULL},
532 	{"summary_col_pos_size", "6",
533 	  &prefs_common.summary_col_pos[S_COL_SIZE], P_INT, NULL, NULL, NULL},
534 	{"summary_col_pos_number", "7",
535 	  &prefs_common.summary_col_pos[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
536 	{"summary_col_pos_score", "8",
537 	 &prefs_common.summary_col_pos[S_COL_SCORE], P_INT, NULL, NULL, NULL},
538 	{"summary_col_pos_locked", "9",
539 	 &prefs_common.summary_col_pos[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
540 	{"summary_col_pos_to", "10",
541 	  &prefs_common.summary_col_pos[S_COL_TO], P_INT, NULL, NULL, NULL},
542 	{"summary_col_pos_tags", "11",
543 	  &prefs_common.summary_col_pos[S_COL_TAGS], P_INT, NULL, NULL, NULL},
544 
545 	{"summary_col_size_mark", "10",
546 	 &prefs_common.summary_col_size[S_COL_MARK], P_INT, NULL, NULL, NULL},
547 	{"summary_col_size_unread", "13",
548 	 &prefs_common.summary_col_size[S_COL_STATUS], P_INT, NULL, NULL, NULL},
549 	{"summary_col_size_mime", "10",
550 	 &prefs_common.summary_col_size[S_COL_MIME], P_INT, NULL, NULL, NULL},
551 #ifndef GENERIC_UMPC
552 	{"summary_col_size_subject", "200",
553 	 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
554 	{"summary_col_size_from", "120",
555 	 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
556 	{"summary_col_size_to", "120",
557 	 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
558 #else
559 	{"summary_col_size_subject", "300",
560 	 &prefs_common.summary_col_size[S_COL_SUBJECT], P_INT, NULL, NULL, NULL},
561 	{"summary_col_size_from", "150",
562 	 &prefs_common.summary_col_size[S_COL_FROM], P_INT, NULL, NULL, NULL},
563 	{"summary_col_size_to", "150",
564 	 &prefs_common.summary_col_size[S_COL_TO], P_INT, NULL, NULL, NULL},
565 
566 #endif
567 	{"summary_col_size_date", "118",
568 	 &prefs_common.summary_col_size[S_COL_DATE], P_INT, NULL, NULL, NULL},
569 	{"summary_col_size_size", "45",
570 	 &prefs_common.summary_col_size[S_COL_SIZE], P_INT, NULL, NULL, NULL},
571 	{"summary_col_size_number", "40",
572 	 &prefs_common.summary_col_size[S_COL_NUMBER], P_INT, NULL, NULL, NULL},
573 	{"summary_col_size_score", "40",
574 	 &prefs_common.summary_col_size[S_COL_SCORE], P_INT, NULL, NULL, NULL},
575 	{"summary_col_size_locked", "13",
576 	 &prefs_common.summary_col_size[S_COL_LOCKED], P_INT, NULL, NULL, NULL},
577 	{"summary_col_size_tags", "150",
578 	 &prefs_common.summary_col_size[S_COL_TAGS], P_INT, NULL, NULL, NULL},
579 
580 	/* Widget size */
581 	{"folderwin_x", "16", &prefs_common.folderwin_x, P_INT,
582 	 NULL, NULL, NULL},
583 	{"folderwin_y", "16", &prefs_common.folderwin_y, P_INT,
584 	 NULL, NULL, NULL},
585 	{"folderview_width", "270", &prefs_common.folderview_width, P_INT,
586 	 NULL, NULL, NULL},
587 	{"folderview_height", "450", &prefs_common.folderview_height, P_INT,
588 	 NULL, NULL, NULL},
589 	{"folderview_visible", "TRUE", &prefs_common.folderview_visible, P_BOOL,
590 	 NULL, NULL, NULL},
591 
592 	{"folder_col_show_folder", "TRUE",
593 	 &prefs_common.folder_col_visible[F_COL_FOLDER], P_BOOL, NULL, NULL, NULL},
594 	{"folder_col_show_new", "TRUE",
595 	 &prefs_common.folder_col_visible[F_COL_NEW], P_BOOL, NULL, NULL, NULL},
596 	{"folder_col_show_unread", "TRUE",
597 	 &prefs_common.folder_col_visible[F_COL_UNREAD], P_BOOL, NULL, NULL, NULL},
598 	{"folder_col_show_total", "TRUE",
599 	 &prefs_common.folder_col_visible[F_COL_TOTAL], P_BOOL, NULL, NULL, NULL},
600 
601 	{"folder_col_pos_folder", "0",
602 	 &prefs_common.folder_col_pos[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
603 	{"folder_col_pos_new", "1",
604 	 &prefs_common.folder_col_pos[F_COL_NEW], P_INT, NULL, NULL, NULL},
605 	{"folder_col_pos_unread", "2",
606 	 &prefs_common.folder_col_pos[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
607 	{"folder_col_pos_total", "3",
608 	 &prefs_common.folder_col_pos[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
609 
610 #ifndef GENERIC_UMPC
611 	{"folder_col_size_folder", "120",
612 	 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
613 	{"folder_col_size_new", "32",
614 	 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
615 	{"folder_col_size_unread", "32",
616 	 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
617 	{"folder_col_size_total", "32",
618 	 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
619 #else
620 	{"folder_col_size_folder", "400",
621 	 &prefs_common.folder_col_size[F_COL_FOLDER], P_INT, NULL, NULL, NULL},
622 	{"folder_col_size_new", "32",
623 	 &prefs_common.folder_col_size[F_COL_NEW], P_INT, NULL, NULL, NULL},
624 	{"folder_col_size_unread", "32",
625 	 &prefs_common.folder_col_size[F_COL_UNREAD], P_INT, NULL, NULL, NULL},
626 	{"folder_col_size_total", "32",
627 	 &prefs_common.folder_col_size[F_COL_TOTAL], P_INT, NULL, NULL, NULL},
628 #endif
629 
630 	{"folder_default_thread", "TRUE", &prefs_common.folder_default_thread, P_BOOL,
631 	 NULL, NULL, NULL},
632 	{"folder_default_thread_collapsed", "FALSE", &prefs_common.folder_default_thread_collapsed, P_BOOL,
633 	 NULL, NULL, NULL},
634 	{"folder_default_hide_read_threads", "FALSE", &prefs_common.folder_default_hide_read_threads, P_BOOL,
635 	 NULL, NULL, NULL},
636 	{"folder_default_hide_read_msgs", "FALSE", &prefs_common.folder_default_hide_read_msgs, P_BOOL,
637 	 NULL, NULL, NULL},
638 	{"folder_default_hide_del_msgs", "FALSE", &prefs_common.folder_default_hide_del_msgs, P_BOOL,
639 	 NULL, NULL, NULL},
640 
641 	{"summaryview_width", "500", &prefs_common.summaryview_width, P_INT,
642 	 NULL, NULL, NULL},
643 	{"summaryview_height", "244", &prefs_common.summaryview_height, P_INT,
644 	 NULL, NULL, NULL},
645 
646 	{"main_messagewin_x", "256", &prefs_common.main_msgwin_x, P_INT,
647 	 NULL, NULL, NULL},
648 	{"main_messagewin_y", "210", &prefs_common.main_msgwin_y, P_INT,
649 	 NULL, NULL, NULL},
650 	{"messageview_width", "500", &prefs_common.msgview_width, P_INT,
651 	 NULL, NULL, NULL},
652 	{"messageview_height", "213", &prefs_common.msgview_height, P_INT,
653 	 NULL, NULL, NULL},
654 	{"messageview_visible", "TRUE", &prefs_common.msgview_visible, P_BOOL,
655 	 NULL, NULL, NULL},
656 
657 	{"mainview_x", "64", &prefs_common.mainview_x, P_INT,
658 	 NULL, NULL, NULL},
659 	{"mainview_y", "64", &prefs_common.mainview_y, P_INT,
660 	 NULL, NULL, NULL},
661 	{"mainview_width", "500", &prefs_common.mainview_width, P_INT,
662 	 NULL, NULL, NULL},
663 	{"mainview_height", "400", &prefs_common.mainview_height, P_INT,
664 	 NULL, NULL, NULL},
665 	{"mainwin_x", "64", &prefs_common.mainwin_x, P_INT,
666 	 NULL, NULL, NULL},
667 	{"mainwin_y", "64", &prefs_common.mainwin_y, P_INT,
668 	 NULL, NULL, NULL},
669 	{"mainwin_maximised", "FALSE", &prefs_common.mainwin_maximised, P_BOOL,
670 	 NULL, NULL, NULL},
671 	{"mainwin_fullscreen", "FALSE", &prefs_common.mainwin_fullscreen, P_BOOL,
672 	 NULL, NULL, NULL},
673 	{"mainwin_menubar", "TRUE", &prefs_common.mainwin_menubar, P_BOOL,
674 	 NULL, NULL, NULL},
675 #ifndef GENERIC_UMPC
676 	{"mainwin_width", "800", &prefs_common.mainwin_width, P_INT,
677 	 NULL, NULL, NULL},
678 	{"mainwin_height", "600", &prefs_common.mainwin_height, P_INT,
679 	 NULL, NULL, NULL},
680 	{"messagewin_width", "600", &prefs_common.msgwin_width, P_INT,
681 	 NULL, NULL, NULL},
682 	{"messagewin_height", "540", &prefs_common.msgwin_height, P_INT,
683 	 NULL, NULL, NULL},
684 	{"mimeview_tree_height", "60", &prefs_common.mimeview_tree_height, P_INT,
685 	 NULL, NULL, NULL},
686 	{"sourcewin_width", "600", &prefs_common.sourcewin_width, P_INT,
687 	 NULL, NULL, NULL},
688 	{"sourcewin_height", "500", &prefs_common.sourcewin_height, P_INT,
689 	 NULL, NULL, NULL},
690 	{"compose_width", "600", &prefs_common.compose_width, P_INT,
691 	 NULL, NULL, NULL},
692 	{"compose_height", "560", &prefs_common.compose_height, P_INT,
693 	 NULL, NULL, NULL},
694 #else
695 	{"mainwin_width", "700", &prefs_common.mainwin_width, P_INT,
696 	 NULL, NULL, NULL},
697 	{"mainwin_height", "470", &prefs_common.mainwin_height, P_INT,
698 	 NULL, NULL, NULL},
699 	{"messagewin_width", "700", &prefs_common.msgwin_width, P_INT,
700 	 NULL, NULL, NULL},
701 	{"messagewin_height", "470", &prefs_common.msgwin_height, P_INT,
702 	 NULL, NULL, NULL},
703 	{"sourcewin_width", "700", &prefs_common.sourcewin_width, P_INT,
704 	 NULL, NULL, NULL},
705 	{"sourcewin_height", "470", &prefs_common.sourcewin_height, P_INT,
706 	 NULL, NULL, NULL},
707 	{"compose_width", "700", &prefs_common.compose_width, P_INT,
708 	 NULL, NULL, NULL},
709 	{"compose_height", "470", &prefs_common.compose_height, P_INT,
710 	 NULL, NULL, NULL},
711 #endif
712 	{"compose_notebook_height", "130", &prefs_common.compose_notebook_height, P_INT,
713 	 NULL, NULL, NULL},
714 	{"compose_x", "0", &prefs_common.compose_x, P_INT,
715 	 NULL, NULL, NULL},
716 	{"compose_y", "0", &prefs_common.compose_y, P_INT,
717 	 NULL, NULL, NULL},
718 	/* Message */
719 	{"enable_color", "TRUE", &prefs_common.enable_color, P_BOOL,
720 	 NULL, NULL, NULL},
721 
722 	{"quote_level1_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL1],
723 	 P_COLOR, NULL, NULL, NULL},
724 	{"quote_level2_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL2],
725 	 P_COLOR, NULL, NULL, NULL},
726 	{"quote_level3_color", "#0000b3", &prefs_common.color[COL_QUOTE_LEVEL3],
727 	 P_COLOR, NULL, NULL, NULL},
728 	{"enable_bgcolor", "FALSE", &prefs_common.enable_bgcolor, P_BOOL,
729 	 NULL, NULL, NULL},
730 	{"quote_level1_bgcolor", "#cccccc", &prefs_common.color[COL_QUOTE_LEVEL1_BG],
731 	 P_COLOR, NULL, NULL, NULL},
732 	{"quote_level2_bgcolor", "#d4d4d4", &prefs_common.color[COL_QUOTE_LEVEL2_BG],
733 	 P_COLOR, NULL, NULL, NULL},
734 	{"quote_level3_bgcolor", "#dddddd", &prefs_common.color[COL_QUOTE_LEVEL3_BG],
735 	 P_COLOR, NULL, NULL, NULL},
736 	{"uri_color", "#007f00", &prefs_common.color[COL_URI],
737 	 P_COLOR, NULL, NULL, NULL},
738 	{"emphasis_color", "#0000cf", &prefs_common.color[COL_EMPHASIS],
739 	 P_COLOR, NULL, NULL, NULL},
740 	{"target_folder_color", "#da1cca", &prefs_common.color[COL_TGT_FOLDER],
741 	 P_COLOR, NULL, NULL, NULL},
742 	{"signature_color", "#797979", &prefs_common.color[COL_SIGNATURE],
743 	 P_COLOR, NULL, NULL, NULL},
744 	{"recycle_quote_colors", "FALSE", &prefs_common.recycle_quote_colors,
745 	 P_BOOL, NULL, NULL, NULL},
746 
747 	{"default_header_color", "#000000", &prefs_common.color[COL_DEFAULT_HEADER],
748 	 P_COLOR, NULL, NULL, NULL},
749 	{"default_header_bgcolor", "#f5f6be", &prefs_common.color[COL_DEFAULT_HEADER_BG],
750 	 P_COLOR, NULL, NULL, NULL},
751 	{"tags_color", "#000000", &prefs_common.color[COL_TAGS],
752 	 P_COLOR, NULL, NULL, NULL},
753 	{"tags_bgcolor", "#f5f6be", &prefs_common.color[COL_TAGS_BG],
754 	 P_COLOR, NULL, NULL, NULL},
755 	{"qs_active_color", "#000000", &prefs_common.color[COL_QS_ACTIVE],
756 	 P_COLOR, NULL, NULL, NULL},
757 	{"qs_active_bgcolor", "#f5f6be", &prefs_common.color[COL_QS_ACTIVE_BG],
758 	 P_COLOR, NULL, NULL, NULL},
759 	{"qs_error_color", "#000000", &prefs_common.color[COL_QS_ERROR],
760 	 P_COLOR, NULL, NULL, NULL},
761 	{"qs_error_bgcolor", "#ff7070", &prefs_common.color[COL_QS_ERROR_BG],
762 	 P_COLOR, NULL, NULL, NULL},
763 
764 	{"display_header_pane", "FALSE", &prefs_common.display_header_pane,
765 	 P_BOOL, NULL, NULL, NULL},
766 	{"display_header", "TRUE", &prefs_common.display_header, P_BOOL,
767 	 NULL, NULL, NULL},
768 	{"display_xface", "TRUE", &prefs_common.display_xface,
769 	 P_BOOL, NULL, NULL, NULL},
770 	{"save_xface", "TRUE", &prefs_common.save_xface,
771 	 P_BOOL, NULL, NULL, NULL},
772 	{"render_html", "TRUE", &prefs_common.render_html, P_BOOL,
773 	 NULL, NULL, NULL},
774 	{"invoke_plugin_on_html", "FALSE", &prefs_common.invoke_plugin_on_html, P_BOOL,
775 	 NULL, NULL, NULL},
776 	{"promote_html_part", "FALSE", &prefs_common.promote_html_part, P_BOOL,
777 	 NULL, NULL, NULL},
778 	{"line_space", "2", &prefs_common.line_space, P_INT,
779 	 NULL, NULL, NULL},
780 	{"never_send_retrcpt", "FALSE", &prefs_common.never_send_retrcpt, P_BOOL,
781 	 NULL, NULL, NULL},
782 
783 	{"enable_smooth_scroll", "FALSE",
784 	 &prefs_common.enable_smooth_scroll, P_BOOL,
785 	 NULL, NULL, NULL},
786 	{"scroll_step", "1", &prefs_common.scroll_step, P_INT,
787 	 NULL, NULL, NULL},
788 	{"scroll_half_page", "FALSE", &prefs_common.scroll_halfpage, P_BOOL,
789 	 NULL, NULL, NULL},
790 	{"hide_quoted", "TRUE",
791 	 &prefs_common.hide_quoted, P_BOOL,
792 	 NULL, NULL, NULL},
793 	{"respect_flowed_format", "FALSE", &prefs_common.respect_flowed_format, P_BOOL,
794 	 NULL, NULL, NULL},
795 	{"show_all_headers", "FALSE", &prefs_common.show_all_headers, P_BOOL,
796 	 NULL, NULL, NULL},
797 
798 	{"show_other_header", "FALSE", &prefs_common.show_other_header, P_BOOL,
799 	 NULL, NULL, NULL},
800 
801 	{"attach_desc", "TRUE", &prefs_common.attach_desc, P_BOOL,
802 	 NULL, NULL, NULL},
803 	{"attach_save_directory", NULL,
804 	 &SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
805 	{"attach_load_directory", NULL,
806 	 &SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
807 
808 	/* MIME viewer */
809 	{"mime_textviewer",   NULL,
810 	 &SPECIFIC_PREFS.mime_textviewer,   P_STRING, NULL, NULL, NULL},
811 	{"mime_open_command", "xdg-open '%s'",
812 	 &SPECIFIC_PREFS.mime_open_cmd,     P_STRING, NULL, NULL, NULL},
813 	{"show_inline_attachments", "TRUE",
814 	 &prefs_common.show_inline_attachments, P_BOOL, NULL, NULL, NULL},
815 
816 	/* Interface */
817 #ifndef GENERIC_UMPC
818 	{"layout_mode", "0", &prefs_common.layout_mode, P_INT,
819 	 NULL, NULL, NULL},
820 #else
821 	{"layout_mode", "5", &prefs_common.layout_mode, P_INT,
822 	 NULL, NULL, NULL},
823 #endif
824 	/* {"emulate_emacs", "FALSE", &prefs_common.emulate_emacs, P_BOOL,
825 	 NULL, NULL, NULL}, */
826 	{"open_selected_message_on_folder_open", "FALSE",
827 	 &prefs_common.open_selected_on_folder_open,
828 	 P_BOOL, NULL, NULL, NULL},
829 	{"open_selected_message_on_search_results", "FALSE",
830 	 &prefs_common.open_selected_on_search_results,
831 	 P_BOOL, NULL, NULL, NULL},
832 	{"open_selected_message_on_prevnext", "FALSE",
833 	 &prefs_common.open_selected_on_prevnext,
834 	 P_BOOL, NULL, NULL, NULL},
835 	{"open_selected_message_on_deletemove", "FALSE",
836 	 &prefs_common.open_selected_on_deletemove,
837 	 P_BOOL, NULL, NULL, NULL},
838 	{"open_selected_message_on_directional", "FALSE",
839 	 &prefs_common.open_selected_on_directional,
840 	 P_BOOL, NULL, NULL, NULL},
841 	{"always_show_message_when_selected", "FALSE",
842 	 &prefs_common.always_show_msg,
843 	 P_BOOL, NULL, NULL, NULL},
844 	{"select_on_entry", "3", &prefs_common.select_on_entry,
845 	 P_ENUM, NULL, NULL, NULL},
846 	{"show_tooltips", "TRUE", &prefs_common.show_tooltips,
847 	 P_BOOL, NULL, NULL, NULL},
848 
849 	/* do it SUMMARY_OPEN_ACTIONS-1 times */
850 	{"summary_select_prio1", "0", &prefs_common.summary_select_prio[0], P_ENUM,
851 	 NULL, NULL, NULL},
852 	{"summary_select_prio2", "0", &prefs_common.summary_select_prio[1], P_ENUM,
853 	 NULL, NULL, NULL},
854 	{"summary_select_prio3", "0", &prefs_common.summary_select_prio[2], P_ENUM,
855 	 NULL, NULL, NULL},
856 	{"summary_select_prio4", "0", &prefs_common.summary_select_prio[3], P_ENUM,
857 	 NULL, NULL, NULL},
858 	{"summary_select_prio5", "0", &prefs_common.summary_select_prio[4], P_ENUM,
859 	 NULL, NULL, NULL},
860 	{"summary_select_prio6", "0", &prefs_common.summary_select_prio[5], P_ENUM,
861 	 NULL, NULL, NULL},
862 	{"summary_select_prio7", "0", &prefs_common.summary_select_prio[6], P_ENUM,
863 	 NULL, NULL, NULL},
864 	{"summary_select_prio8", "0", &prefs_common.summary_select_prio[7], P_ENUM,
865 	 NULL, NULL, NULL},
866 	{"summary_select_prio9", "0", &prefs_common.summary_select_prio[8], P_ENUM,
867 	 NULL, NULL, NULL},
868 	{"summary_select_prio10", "0", &prefs_common.summary_select_prio[9], P_ENUM,
869 	 NULL, NULL, NULL},
870 
871 	{"mark_as_read_on_new_window", "FALSE",
872 	 &prefs_common.mark_as_read_on_new_window,
873 	 P_BOOL, NULL, NULL, NULL},
874 	{"mark_as_read_delay", "0",
875 	 &prefs_common.mark_as_read_delay, P_INT,
876 	 NULL, NULL, NULL},
877 	{"immediate_execution", "TRUE", &prefs_common.immediate_exec, P_BOOL,
878 	 NULL, NULL, NULL},
879 	{"nextunreadmsg_dialog", "1", &prefs_common.next_unread_msg_dialog, P_ENUM,
880 	 NULL, NULL, NULL},
881 	{"summary_from_show", "0", &prefs_common.summary_from_show, P_ENUM,
882 	 NULL, NULL, NULL},
883 
884 	{"pixmap_theme_path", DEFAULT_PIXMAP_THEME,
885 	 &SPECIFIC_PREFS.pixmap_theme_path, P_STRING,
886 	 NULL, NULL, NULL},
887 #ifdef HAVE_SVG
888 	{"enable_alpha_svg", "TRUE",
889 	 &SPECIFIC_PREFS.enable_alpha_svg, P_BOOL,
890 	 NULL, NULL, NULL},
891 	{"enable_pixmap_scaling", "TRUE",
892 	 &SPECIFIC_PREFS.enable_pixmap_scaling, P_BOOL,
893 	 NULL, NULL, NULL},
894 	{"pixmap_scaling_auto", "TRUE",
895 	 &SPECIFIC_PREFS.pixmap_scaling_auto, P_BOOL,
896 	 NULL, NULL, NULL},
897 	{"pixmap_scaling_ppi", "96",
898 	 &SPECIFIC_PREFS.pixmap_scaling_ppi, P_INT,
899 	 NULL, NULL, NULL},
900 #endif
901 
902 	{"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
903 	 NULL, NULL, NULL},
904 	{"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
905 	 NULL, NULL, NULL},
906 
907 	{"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
908 	 NULL, NULL, NULL},
909 	{"apply_per_account_filtering_rules", "0", &prefs_common.apply_per_account_filtering_rules, P_ENUM,
910 	 NULL, NULL, NULL},
911 
912 	/* Addressbook */
913 	{"addressbook_use_editaddress_dialog", "TRUE", &prefs_common.addressbook_use_editaddress_dialog,
914 	 P_BOOL, NULL, NULL, NULL},
915 	{"addressbook_hpaned_pos", "-1", &prefs_common.addressbook_hpaned_pos,
916 	 P_INT, NULL, NULL, NULL},
917 	{"addressbook_vpaned_pos", "-1", &prefs_common.addressbook_vpaned_pos,
918 	 P_INT, NULL, NULL, NULL},
919 
920 	/* Other */
921 #ifndef G_OS_WIN32
922 	{"uri_open_command", DEFAULT_BROWSER_CMD,
923 	 &SPECIFIC_PREFS.uri_cmd, P_STRING, NULL, NULL, NULL},
924 #else
925 	{"gtk_theme", DEFAULT_W32_GTK_THEME,
926 	 &SPECIFIC_PREFS.gtk_theme, P_STRING, NULL, NULL, NULL},
927 #endif
928 	{"ext_editor_command", DEFAULT_EDITOR_CMD,
929 	 &SPECIFIC_PREFS.ext_editor_cmd, P_STRING, NULL, NULL, NULL},
930 	{"cmds_use_system_default", "TRUE",
931 	 &prefs_common.cmds_use_system_default, P_BOOL, NULL, NULL, NULL},
932 	{"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
933 	 P_BOOL, NULL, NULL, NULL},
934 	{"session_passwords", "FALSE", &prefs_common.session_passwords,
935 	 P_BOOL, NULL, NULL, NULL},
936 	{"confirm_on_exit", "FALSE", &prefs_common.confirm_on_exit, P_BOOL,
937 	 NULL, NULL, NULL},
938 	{"clean_trash_on_exit", "FALSE", &prefs_common.clean_on_exit, P_BOOL,
939 	 NULL, NULL, NULL},
940 	{"ask_on_cleaning", "TRUE", &prefs_common.ask_on_clean, P_BOOL,
941 	 NULL, NULL, NULL},
942 	{"warn_queued_on_exit", "TRUE", &prefs_common.warn_queued_on_exit,
943 	 P_BOOL, NULL, NULL, NULL},
944 	{"work_offline", "FALSE", &prefs_common.work_offline, P_BOOL,
945 	 NULL, NULL, NULL},
946 	{"summary_quicksearch_type", "0", &prefs_common.summary_quicksearch_type, P_INT,
947 	 NULL, NULL, NULL},
948 #ifndef GENERIC_UMPC
949 	{"summary_quicksearch_recurse", "1", &prefs_common.summary_quicksearch_recurse, P_INT,
950 	 NULL, NULL, NULL},
951 #else
952 	{"summary_quicksearch_recurse", "0", &prefs_common.summary_quicksearch_recurse, P_INT,
953 	 NULL, NULL, NULL},
954 #endif
955 
956 #if defined(__OpenBSD__)
957 	{"io_timeout_secs", "80", &prefs_common.io_timeout_secs,
958 	 P_INT, NULL, NULL, NULL},
959 #else
960 	{"io_timeout_secs", "60", &prefs_common.io_timeout_secs,
961 	 P_INT, NULL, NULL, NULL},
962 #endif
963 	{"hide_score", "-9999", &prefs_common.kill_score, P_INT,
964 	 NULL, NULL, NULL},
965 	{"important_score", "1", &prefs_common.important_score, P_INT,
966 	 NULL, NULL, NULL},
967 
968     	{"clip_log", "TRUE", &prefs_common.cliplog, P_BOOL,
969 	 NULL, NULL, NULL},
970 	{"log_length", "500", &prefs_common.loglength, P_INT,
971 	 NULL, NULL, NULL},
972 #ifndef GENERIC_UMPC
973     	{"enable_log_standard", "TRUE", &prefs_common.enable_log_standard, P_BOOL,
974 	 NULL, NULL, NULL},
975     	{"enable_log_warning", "TRUE", &prefs_common.enable_log_warning, P_BOOL,
976 	 NULL, NULL, NULL},
977     	{"enable_log_error", "TRUE", &prefs_common.enable_log_error, P_BOOL,
978 	 NULL, NULL, NULL},
979     	{"enable_log_status", "TRUE", &prefs_common.enable_log_status, P_BOOL,
980 	 NULL, NULL, NULL},
981 #else
982     	{"enable_log_standard", "FALSE", &prefs_common.enable_log_standard, P_BOOL,
983 	 NULL, NULL, NULL},
984     	{"enable_log_warning", "FALSE", &prefs_common.enable_log_warning, P_BOOL,
985 	 NULL, NULL, NULL},
986     	{"enable_log_error", "FALSE", &prefs_common.enable_log_error, P_BOOL,
987 	 NULL, NULL, NULL},
988     	{"enable_log_status", "FALSE", &prefs_common.enable_log_status, P_BOOL,
989 	 NULL, NULL, NULL},
990 #endif
991 	{"log_msg_color", "#00af00", &prefs_common.color[COL_LOG_MSG],
992 	 P_COLOR, NULL, NULL, NULL},
993 	{"log_warn_color", "#af0000", &prefs_common.color[COL_LOG_WARN],
994 	 P_COLOR, NULL, NULL, NULL},
995 	{"log_error_color", "#af0000", &prefs_common.color[COL_LOG_ERROR],
996 	 P_COLOR, NULL, NULL, NULL},
997 	{"log_in_color", "#000000", &prefs_common.color[COL_LOG_IN],
998 	 P_COLOR, NULL, NULL, NULL},
999 	{"log_out_color", "#0000ef", &prefs_common.color[COL_LOG_OUT],
1000 	 P_COLOR, NULL, NULL, NULL},
1001 	{"log_status_ok_color", "#00af00", &prefs_common.color[COL_LOG_STATUS_OK],
1002 	 P_COLOR, NULL, NULL, NULL},
1003 	{"log_status_nok_color", "#0000af", &prefs_common.color[COL_LOG_STATUS_NOK],
1004 	 P_COLOR, NULL, NULL, NULL},
1005 	{"log_status_skip_color", "#aa00aa", &prefs_common.color[COL_LOG_STATUS_SKIP],
1006 	 P_COLOR, NULL, NULL, NULL},
1007 
1008     {"enable_filtering_debug", "FALSE", &prefs_common.enable_filtering_debug, P_BOOL,
1009 	 NULL, NULL, NULL},
1010     {"filtering_debug_level", "1", &prefs_common.filtering_debug_level, P_INT,
1011 	 NULL, NULL, NULL},
1012     {"enable_filtering_debug_inc", "TRUE", &prefs_common.enable_filtering_debug_inc, P_BOOL,
1013 	 NULL, NULL, NULL},
1014     {"enable_filtering_debug_manual", "TRUE", &prefs_common.enable_filtering_debug_manual, P_BOOL,
1015 	 NULL, NULL, NULL},
1016     {"enable_filtering_debug_folder_proc", "FALSE", &prefs_common.enable_filtering_debug_folder_proc, P_BOOL,
1017 	 NULL, NULL, NULL},
1018     {"enable_filtering_debug_pre_proc", "FALSE", &prefs_common.enable_filtering_debug_pre_proc, P_BOOL,
1019 	 NULL, NULL, NULL},
1020     {"enable_filtering_debug_post_proc", "FALSE", &prefs_common.enable_filtering_debug_post_proc, P_BOOL,
1021 	 NULL, NULL, NULL},
1022     {"filtering_debug_clip_log", "TRUE", &prefs_common.filtering_debug_cliplog, P_BOOL,
1023 	 NULL, NULL, NULL},
1024 	{"filtering_debug_log_length", "500", &prefs_common.filtering_debug_loglength, P_INT,
1025 	 NULL, NULL, NULL},
1026 
1027 	{"gtk_can_change_accels", "FALSE", &prefs_common.gtk_can_change_accels, P_BOOL,
1028 	 NULL, NULL, NULL},
1029 	{"gtk_enable_accels", "TRUE", &prefs_common.gtk_enable_accels, P_BOOL,
1030 	 NULL, NULL, NULL},
1031 
1032 	{"color_new", "#0000b3", &prefs_common.color[COL_NEW],
1033 	 P_COLOR, NULL, NULL, NULL},
1034 
1035 	/* Some windows' sizes */
1036 	{"filteringwin_width", "500", &prefs_common.filteringwin_width, P_INT,
1037 	 NULL, NULL, NULL},
1038 	{"filteringwin_height", "-1", &prefs_common.filteringwin_height, P_INT,
1039 	 NULL, NULL, NULL},
1040 
1041 	{"filteringactionwin_width", "490", &prefs_common.filteringactionwin_width, P_INT,
1042 	 NULL, NULL, NULL},
1043 	{"filteringactionwin_height", "-1", &prefs_common.filteringactionwin_height, P_INT,
1044 	 NULL, NULL, NULL},
1045 
1046 	{"matcherwin_width", "520", &prefs_common.matcherwin_width, P_INT,
1047 	 NULL, NULL, NULL},
1048 	{"matcherwin_height", "-1", &prefs_common.matcherwin_height, P_INT,
1049 	 NULL, NULL, NULL},
1050 
1051 	{"templateswin_width", "480", &prefs_common.templateswin_width, P_INT,
1052 	 NULL, NULL, NULL},
1053 	{"templateswin_height", "-1", &prefs_common.templateswin_height, P_INT,
1054 	 NULL, NULL, NULL},
1055 
1056 	{"actionsiodialog_width", "582", &prefs_common.actionsiodialog_width, P_INT,
1057 	 NULL, NULL, NULL},
1058 	{"actionsiodialog_height", "310", &prefs_common.actionsiodialog_height, P_INT,
1059 	 NULL, NULL, NULL},
1060 
1061 	{"actionswin_width", "486", &prefs_common.actionswin_width, P_INT,
1062 	 NULL, NULL, NULL},
1063 	{"actionswin_height", "-1", &prefs_common.actionswin_height, P_INT,
1064 	 NULL, NULL, NULL},
1065 
1066 	{"tagswin_width", "586", &prefs_common.tagswin_width, P_INT,
1067 	 NULL, NULL, NULL},
1068 	{"tagswin_height", "-1", &prefs_common.tagswin_height, P_INT,
1069 	 NULL, NULL, NULL},
1070 
1071 	{"sslmanwin_width", "486", &prefs_common.sslmanwin_width, P_INT,
1072 	 NULL, NULL, NULL},
1073 	{"sslmanwin_height", "-1", &prefs_common.sslmanwin_height, P_INT,
1074 	 NULL, NULL, NULL},
1075 
1076 	{"uriopenerwin_width", "-1", &prefs_common.uriopenerwin_width, P_INT,
1077 	 NULL, NULL, NULL},
1078 	{"uriopenerwin_height", "-1", &prefs_common.uriopenerwin_height, P_INT,
1079 	 NULL, NULL, NULL},
1080 
1081 	{"foldersortwin_width", "400", &prefs_common.foldersortwin_width, P_INT,
1082 	 NULL, NULL, NULL},
1083 	{"foldersortwin_height", "300", &prefs_common.foldersortwin_height, P_INT,
1084 	 NULL, NULL, NULL},
1085 
1086 	{"addressbookwin_width", "520", &prefs_common.addressbookwin_width, P_INT,
1087 	 NULL, NULL, NULL},
1088 	{"addressbookwin_height", "-1", &prefs_common.addressbookwin_height, P_INT,
1089 	 NULL, NULL, NULL},
1090 
1091 	{"addressbookeditpersonwin_width", "640", &prefs_common.addressbookeditpersonwin_width, P_INT,
1092 	 NULL, NULL, NULL},
1093 	{"addressbookeditpersonwin_height", "320", &prefs_common.addressbookeditpersonwin_height, P_INT,
1094 	 NULL, NULL, NULL},
1095 
1096 	{"addressbookeditgroupwin_width", "580", &prefs_common.addressbookeditgroupwin_width, P_INT,
1097 	 NULL, NULL, NULL},
1098 	{"addressbookeditgroupwin_height", "340", &prefs_common.addressbookeditgroupwin_height, P_INT,
1099 	 NULL, NULL, NULL},
1100 
1101 	{"pluginswin_width", "-1", &prefs_common.pluginswin_width, P_INT,
1102 	 NULL, NULL, NULL},
1103 	{"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
1104 	 NULL, NULL, NULL},
1105 
1106 	{"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
1107 	 NULL, NULL, NULL},
1108 	{"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
1109 	 NULL, NULL, NULL},
1110 
1111 	{"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
1112 	 NULL, NULL, NULL},
1113 	{"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
1114 	 NULL, NULL, NULL},
1115 
1116 	{"zero_replacement_char", "0", &prefs_common.zero_replacement, P_STRING,
1117 	 NULL, NULL, NULL},
1118 
1119 	{"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
1120 	 NULL, NULL, NULL},
1121 	{"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
1122 	 NULL, NULL, NULL},
1123 
1124 	{"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
1125 	 NULL, NULL, NULL},
1126 	{"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
1127 	 NULL, NULL, NULL},
1128 
1129 	{"logwin_width", "520", &prefs_common.logwin_width, P_INT,
1130 	 NULL, NULL, NULL},
1131 	{"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
1132 	 NULL, NULL, NULL},
1133 
1134 	{"filtering_debugwin_width", "600", &prefs_common.filtering_debugwin_width, P_INT,
1135 	 NULL, NULL, NULL},
1136 	{"filtering_debugwin_height", "-1", &prefs_common.filtering_debugwin_height, P_INT,
1137 	 NULL, NULL, NULL},
1138 
1139 	{"folderselwin_width", "300", &prefs_common.folderselwin_width, P_INT,
1140 	 NULL, NULL, NULL},
1141 	{"folderselwin_height", "-1", &prefs_common.folderselwin_height, P_INT,
1142 	 NULL, NULL, NULL},
1143 
1144 	{"addressaddwin_width", "300", &prefs_common.addressaddwin_width, P_INT,
1145 	 NULL, NULL, NULL},
1146 	{"addressaddwin_height", "-1", &prefs_common.addressaddwin_height, P_INT,
1147 	 NULL, NULL, NULL},
1148 
1149 	{"addressbook_folderselwin_width", "300", &prefs_common.addressbook_folderselwin_width, P_INT,
1150 	 NULL, NULL, NULL},
1151 	{"addressbook_folderselwin_height", "-1", &prefs_common.addressbook_folderselwin_height, P_INT,
1152 	 NULL, NULL, NULL},
1153 
1154 	{"aboutwin_width", "450", &prefs_common.aboutwin_width, P_INT,
1155 	 NULL, NULL, NULL},
1156 	{"aboutwin_height", "500", &prefs_common.aboutwin_height, P_INT,
1157 	 NULL, NULL, NULL},
1158 
1159 	{"addrgather_width", "450", &prefs_common.addrgather_width, P_INT,
1160 	 NULL, NULL, NULL},
1161 	{"addrgather_height", "-1", &prefs_common.addrgather_height, P_INT,
1162 	 NULL, NULL, NULL},
1163 
1164 	{"news_subscribe_width", "450", &prefs_common.news_subscribe_width, P_INT,
1165 	 NULL, NULL, NULL},
1166 	{"news_subscribe_height", "400", &prefs_common.news_subscribe_height, P_INT,
1167 	 NULL, NULL, NULL},
1168 
1169 	/* Hidden */
1170 	{"imap_scan_tree_recurs_limit", "64", &prefs_common.imap_scan_tree_recurs_limit, P_INT,
1171 	 NULL, NULL, NULL},
1172 	{"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
1173 	 NULL, NULL, NULL},
1174 	{"utf8_instead_of_locale_for_broken_mail", "0",
1175 	 &prefs_common.broken_are_utf8, P_INT,
1176 	 NULL, NULL, NULL},
1177 	{"enable_swap_from", "FALSE", &prefs_common.swap_from, P_BOOL,
1178 	 NULL, NULL, NULL},
1179 	{"use_stripes_everywhere", "TRUE", &prefs_common.use_stripes_everywhere, P_BOOL,
1180 	 NULL, NULL, NULL},
1181 	{"use_stripes_in_summaries", "TRUE", &prefs_common.use_stripes_in_summaries, P_BOOL,
1182 	 NULL, NULL, NULL},
1183 	{"stripes_color_offset", "4000", &prefs_common.stripes_color_offset, P_INT,
1184 	 NULL, NULL, NULL},
1185 	{"enable_hscrollbar", "TRUE", &prefs_common.enable_hscrollbar, P_BOOL,
1186 	 NULL, NULL, NULL},
1187 	{"folderview_vscrollbar_policy", "0",
1188 	 &prefs_common.folderview_vscrollbar_policy, P_ENUM,
1189 	 NULL, NULL, NULL},
1190 	{"textview_cursor_visible", "FALSE",
1191 	 &prefs_common.textview_cursor_visible, P_BOOL,
1192 	 NULL, NULL, NULL},
1193 	{"hover_timeout", "500", &prefs_common.hover_timeout, P_INT,
1194 	 NULL, NULL, NULL},
1195 #ifndef GENERIC_UMPC
1196 	{"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1197 	 NULL, NULL, NULL},
1198 	{"cache_min_keep_time", "15", &prefs_common.cache_min_keep_time, P_INT,
1199 	 NULL, NULL, NULL},
1200 #else
1201 	{"cache_max_mem_usage", "4096", &prefs_common.cache_max_mem_usage, P_INT,
1202 	 NULL, NULL, NULL},
1203 	{"cache_min_keep_time", "0", &prefs_common.cache_min_keep_time, P_INT,
1204 	 NULL, NULL, NULL},
1205 #endif
1206 	{"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age,
1207 	P_INT, NULL, NULL, NULL },
1208 	{"last_opened_folder", "", &prefs_common.last_opened_folder,
1209 	P_STRING, NULL, NULL, NULL },
1210 	{"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup,
1211 	P_BOOL, NULL, NULL, NULL },
1212 	{"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
1213 	 NULL, NULL, NULL},
1214 	{"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
1215 	 NULL, NULL, NULL},
1216 	{"summary_quicksearch_autorun", "0", &prefs_common.summary_quicksearch_autorun, P_INT,
1217 	 NULL, NULL, NULL},
1218 	{"statusbar_update_step", "10", &prefs_common.statusbar_update_step, P_INT,
1219 	 NULL, NULL, NULL},
1220 	{"compose_no_markup", "FALSE", &prefs_common.compose_no_markup, P_BOOL,
1221 	 NULL, NULL, NULL},
1222 	{"skip_ssl_cert_check", "FALSE", &prefs_common.skip_ssl_cert_check, P_BOOL,
1223 	 NULL, NULL, NULL},
1224 	{"live_dangerously", "FALSE", &prefs_common.live_dangerously, P_BOOL,
1225 	 NULL, NULL, NULL},
1226 	{"save_parts_readwrite", "FALSE", &prefs_common.save_parts_readwrite, P_BOOL,
1227 	 NULL, NULL, NULL},
1228 	{"hide_quotes", "0", &prefs_common.hide_quotes, P_INT,
1229 	 NULL, NULL, NULL},
1230 	{"unsafe_ssl_certs", "FALSE", &prefs_common.unsafe_ssl_certs, P_BOOL,
1231 	 NULL, NULL, NULL},
1232 #ifndef GENERIC_UMPC
1233 	{"real_time_sync", "FALSE", &prefs_common.real_time_sync, P_BOOL,
1234 	 NULL, NULL, NULL},
1235 #else
1236 	{"real_time_sync", "TRUE", &prefs_common.real_time_sync, P_BOOL,
1237 	 NULL, NULL, NULL},
1238 #endif
1239 
1240 	{"print_paper_type", NULL, &prefs_common.print_paper_type, P_STRING,
1241 	 NULL, NULL, NULL},
1242 	{"print_paper_orientation", "0", &prefs_common.print_paper_orientation, P_INT,
1243 	 NULL, NULL, NULL},
1244 	{"print_margin_top", "-1", &prefs_common.print_margin_top, P_INT,
1245 	 NULL, NULL, NULL},
1246 	{"print_margin_bottom", "-1", &prefs_common.print_margin_bottom, P_INT,
1247 	 NULL, NULL, NULL},
1248 	{"print_margin_left", "-1", &prefs_common.print_margin_left, P_INT,
1249 	 NULL, NULL, NULL},
1250 	{"print_margin_right", "-1", &prefs_common.print_margin_right, P_INT,
1251 	 NULL, NULL, NULL},
1252 	{"print_use_color", "0", &prefs_common.print_use_color, P_INT,
1253 	 NULL, NULL, NULL},
1254 	{"print_use_collate", "0", &prefs_common.print_use_collate, P_INT,
1255 	 NULL, NULL, NULL},
1256 	{"print_use_reverse", "0", &prefs_common.print_use_reverse, P_INT,
1257 	 NULL, NULL, NULL},
1258 	{"print_use_duplex", "0", &prefs_common.print_use_duplex, P_INT,
1259 	 NULL, NULL, NULL},
1260 	{"print_imgs", "1", &prefs_common.print_imgs, P_INT,
1261 	 NULL, NULL, NULL},
1262 	{"print_previewwin_width", "600", &prefs_common.print_previewwin_width, P_INT,
1263 	 NULL, NULL, NULL},
1264 	{"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
1265 	 NULL, NULL, NULL},
1266 	{"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
1267 	 NULL, NULL, NULL},
1268 	{"use_shred", "FALSE", &prefs_common.use_shred, P_BOOL,
1269 	 NULL, NULL, NULL},
1270 
1271 	{"two_line_vertical", "TRUE", &prefs_common.two_line_vert,
1272 	P_BOOL, NULL, NULL, NULL },
1273 
1274 	{"inherit_folder_properties", "FALSE", &prefs_common.inherit_folder_props, P_BOOL,
1275 	 NULL, NULL, NULL},
1276 
1277 	{"flush_metadata", "TRUE", &prefs_common.flush_metadata, P_BOOL,
1278 	 NULL, NULL, NULL},
1279 
1280 	{"nav_history_length", "50", &prefs_common.nav_history_length, P_INT,
1281 	 NULL, NULL, NULL},
1282 
1283 	{"diff_added_color", "#008b8b", &prefs_common.color[COL_DIFF_ADDED],
1284 	 P_COLOR, NULL, NULL, NULL},
1285 	{"diff_deleted_color", "#6a5acd", &prefs_common.color[COL_DIFF_DELETED],
1286 	 P_COLOR, NULL, NULL, NULL},
1287 	{"diff_hunk_color", "#a52a2a", &prefs_common.color[COL_DIFF_HUNK],
1288 	 P_COLOR, NULL, NULL, NULL},
1289 
1290 	{"folder_search_wildcard", "TRUE", &prefs_common.folder_search_wildcard, P_BOOL,
1291 	 NULL, NULL, NULL},
1292 	{"address_search_wildcard", "TRUE", &prefs_common.address_search_wildcard, P_BOOL,
1293 	 NULL, NULL, NULL},
1294 	{"enable_avatars", "3", &prefs_common.enable_avatars, P_INT, NULL, NULL, NULL},
1295 #ifndef PASSWORD_CRYPTO_OLD
1296 	{"use_master_passphrase", FALSE, &prefs_common.use_master_passphrase, P_BOOL, NULL, NULL, NULL },
1297 	{"master_passphrase", "", &prefs_common.master_passphrase, P_STRING, NULL, NULL, NULL },
1298 	{"master_passphrase_salt", "", &prefs_common.master_passphrase_salt, P_STRING, NULL, NULL, NULL },
1299 	{"master_passphrase_pbkdf2_rounds", "50000", &prefs_common.master_passphrase_pbkdf2_rounds, P_INT, NULL, NULL, NULL},
1300 #endif
1301 
1302 	{"use_proxy", "FALSE", &prefs_common.use_proxy, P_BOOL, NULL, NULL, NULL},
1303 	{"proxy_type", "1", &prefs_common.proxy_info.proxy_type, P_ENUM, NULL, NULL, NULL},
1304 	{"proxy_host", "localhost", &prefs_common.proxy_info.proxy_host, P_STRING, NULL, NULL, NULL},
1305 	{"proxy_port", "1080", &prefs_common.proxy_info.proxy_port, P_USHORT, NULL, NULL, NULL},
1306 	{"use_proxy_auth", "FALSE", &prefs_common.proxy_info.use_proxy_auth, P_BOOL, NULL, NULL, NULL},
1307 	{"proxy_name", "", &prefs_common.proxy_info.proxy_name, P_STRING, NULL, NULL, NULL},
1308 	{"proxy_pass", NULL, &prefs_common.proxy_info.proxy_pass, P_STRING, NULL, NULL, NULL},
1309 
1310 	{NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
1311 };
1312 
1313 /*
1314  * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1315  * Fallback to default_list if history file is not found
1316  */
prefs_common_read_history_from_dir_with_defaults(const gchar * dirname,const gchar * history,GList * default_list)1317 GList *prefs_common_read_history_from_dir_with_defaults(const gchar *dirname, const gchar *history,
1318 															  GList *default_list)
1319 {
1320 	FILE *fp;
1321 	gchar *path;
1322 	gchar buf[PREFSBUFSIZE];
1323 	GList *tmp = NULL;
1324 
1325 	if (dirname) {
1326 		path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1327 				   G_DIR_SEPARATOR_S, history,
1328 				   NULL);
1329 	} else {
1330 	path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1331 			   NULL);
1332 	}
1333 	if ((fp = claws_fopen(path, "rb")) == NULL) {
1334 		if (ENOENT != errno) FILE_OP_ERROR(path, "claws_fopen");
1335 		g_free(path);
1336 		/* returns default list if set, otherwise NULL */
1337 		return default_list;
1338 	}
1339 	g_free(path);
1340 	while (claws_fgets(buf, sizeof(buf), fp) != NULL) {
1341 		g_strstrip(buf);
1342 		if (buf[0] == '\0') continue;
1343 		tmp = add_history(tmp, buf);
1344 	}
1345 	claws_fclose(fp);
1346 
1347 	tmp = g_list_reverse(tmp);
1348 
1349 	return tmp;
1350 }
1351 
1352 /*
1353  * Read history list from the specified history file in the specified directory (subdir of rc_dir)
1354  */
prefs_common_read_history_from_dir(const gchar * dirname,const gchar * history)1355 static GList *prefs_common_read_history_from_dir(const gchar *dirname, const gchar *history)
1356 {
1357 	return prefs_common_read_history_from_dir_with_defaults(dirname, history, NULL);
1358 }
1359 
1360 /*
1361  * Read history list from the specified history file
1362  */
prefs_common_read_history(const gchar * history)1363 static GList *prefs_common_read_history(const gchar *history)
1364 {
1365 	return prefs_common_read_history_from_dir(NULL, history);
1366 }
1367 
prefs_common_read_config(void)1368 void prefs_common_read_config(void)
1369 {
1370 	gchar *rcpath;
1371 	gchar *tmp;
1372 
1373 	rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL);
1374 	prefs_read_config(param, "Common", rcpath, NULL);
1375 #ifdef G_OS_WIN32
1376 	prefs_read_config(param_os_specific, "CommonWin32", rcpath, NULL);
1377 #endif
1378 
1379 	g_free(rcpath);
1380 
1381 	tmp = g_strdup(gettext(prefs_common.date_format));
1382 	g_free(prefs_common.date_format);
1383 	prefs_common.date_format = tmp;
1384 
1385 	prefs_common.mime_open_cmd_history =
1386 		prefs_common_read_history(COMMAND_HISTORY);
1387 	prefs_common.summary_quicksearch_history =
1388 		prefs_common_read_history(QUICKSEARCH_HISTORY);
1389 	prefs_common.summary_search_from_history =
1390 		prefs_common_read_history(SUMMARY_SEARCH_FROM_HISTORY);
1391 	prefs_common.summary_search_to_history =
1392 		prefs_common_read_history(SUMMARY_SEARCH_TO_HISTORY);
1393 	prefs_common.summary_search_subject_history =
1394 		prefs_common_read_history(SUMMARY_SEARCH_SUBJECT_HISTORY);
1395 	prefs_common.summary_search_body_history =
1396 		prefs_common_read_history(SUMMARY_SEARCH_BODY_HISTORY);
1397 	prefs_common.summary_search_adv_condition_history =
1398 		prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
1399 	prefs_common.message_search_history =
1400 		prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
1401 	prefs_common.compose_save_to_history =
1402 		prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
1403 #ifndef USE_ALT_ADDRBOOK
1404 	prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
1405 #endif
1406 	colorlabel_update_colortable_from_prefs();
1407 }
1408 
1409 #define TRY(func) \
1410 if (!(func)) \
1411 { \
1412 	g_warning("failed to write"); \
1413 	goto out;			\
1414 } \
1415 
1416 /*
1417  * Save history list to the specified history file in the specified directory (subdir of rc_dir)
1418  */
prefs_common_save_history_to_dir(const gchar * dirname,const gchar * history,GList * list)1419 static void prefs_common_save_history_to_dir(const gchar *dirname, const gchar *history, GList *list)
1420 {
1421 	GList *cur;
1422 	FILE *fp;
1423 	gchar *path, *tmp_path;
1424 
1425 	if (dirname) {
1426 		path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, dirname,
1427 				   G_DIR_SEPARATOR_S, history,
1428 				   NULL);
1429 	} else {
1430 	path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, history,
1431 			   NULL);
1432 	}
1433 	tmp_path = g_strconcat(path, ".tmp", NULL);
1434 
1435 	if ((fp = claws_fopen(tmp_path, "wb")) == NULL) {
1436 		FILE_OP_ERROR(tmp_path, "claws_fopen");
1437 		goto out;
1438 	}
1439 
1440 	for (cur = list; cur != NULL; cur = cur->next) {
1441 		TRY(claws_fputs((gchar *)cur->data, fp) != EOF &&
1442 		    claws_fputc('\n', fp) != EOF);
1443 	}
1444 
1445 	if (claws_safe_fclose(fp) == EOF) {
1446 		FILE_OP_ERROR(tmp_path, "claws_fclose");
1447 		fp = NULL;
1448 		goto out;
1449 	}
1450 	fp = NULL;
1451 #ifdef G_OS_WIN32
1452 	claws_unlink(path);
1453 #endif
1454 	if (g_rename(tmp_path, path) < 0) {
1455 		FILE_OP_ERROR(path, "rename");
1456 		goto out;
1457 	}
1458 
1459 out:
1460 	if (fp)
1461 		claws_safe_fclose(fp);
1462 	g_free(tmp_path);
1463 	g_free(path);
1464 }
1465 
1466 /*
1467  * Save history list to the specified history file
1468  */
prefs_common_save_history(const gchar * history,GList * list)1469 static void prefs_common_save_history(const gchar *history, GList *list)
1470 {
1471 	prefs_common_save_history_to_dir(NULL, history, list);
1472 }
1473 
1474 #undef TRY
1475 
prefs_common_write_config(void)1476 void prefs_common_write_config(void)
1477 {
1478 	prefs_write_config(param, "Common", COMMON_RC);
1479 #ifdef G_OS_WIN32
1480 	prefs_write_config(param_os_specific, "CommonWin32", COMMON_RC);
1481 #endif
1482 
1483 	prefs_common_save_history(COMMAND_HISTORY,
1484 		prefs_common.mime_open_cmd_history);
1485 	prefs_common_save_history(QUICKSEARCH_HISTORY,
1486 		prefs_common.summary_quicksearch_history);
1487 	prefs_common_save_history(SUMMARY_SEARCH_FROM_HISTORY,
1488 		prefs_common.summary_search_from_history);
1489 	prefs_common_save_history(SUMMARY_SEARCH_TO_HISTORY,
1490 		prefs_common.summary_search_to_history);
1491 	prefs_common_save_history(SUMMARY_SEARCH_SUBJECT_HISTORY,
1492 		prefs_common.summary_search_subject_history);
1493 	prefs_common_save_history(SUMMARY_SEARCH_BODY_HISTORY,
1494 		prefs_common.summary_search_body_history);
1495 	prefs_common_save_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY,
1496 		prefs_common.summary_search_adv_condition_history);
1497 	prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
1498 		prefs_common.message_search_history);
1499 	prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
1500 		prefs_common.compose_save_to_history);
1501 
1502 #ifndef USE_ALT_ADDRBOOK
1503 		prefs_common_save_history_to_dir(ADDRBOOK_DIR,
1504 		ADDRESSBOOK_CUSTOM_ATTRIBUTES,
1505 		prefs_common.addressbook_custom_attributes);
1506 #endif
1507 }
1508 
1509 /* make a copy of string 'in' into buffer 'out'. un-escape \ sequences.
1510    both 'in' and 'out' must be non-NULL.
1511    'out' must be a pointer to a buffer whose size is at least equal
1512    to strlen(txt)+1, this buffer will get cleared. out's contents
1513    will always get set to a valid string, even if it's "".*/
pref_get_unescaped_pref(gchar * out,const gchar * in)1514 void pref_get_unescaped_pref(gchar *out, const gchar *in)
1515 {
1516 	const gchar *i;
1517 	gchar *o;
1518 
1519 	*out = '\0';
1520 
1521 	cm_return_if_fail( in != NULL );
1522 	cm_return_if_fail( out != NULL );
1523 
1524 	i = in;
1525 	o = out;
1526 	memset(out, 0, strlen(in)+1);
1527 	while (*i != '\0') {
1528 		if (*i == '\\' && *(i+1) == 'n') {
1529 			*o++ = '\n';
1530 			i++;
1531 		} else if (*i == '\\' && *(i+1) == 't') {
1532 			*o++ = '\t';
1533 			i++;
1534 		} else if (*i == '\\' && *(i+1) == '\\') {
1535 			*o++ = '\\';
1536 			i++;
1537 		} else {
1538 			*o++ = *i;
1539 		}
1540 		i++;
1541 	}
1542 	*o='\0';
1543 }
1544 
1545 /* make a copy of string 'in' into buffer 'out'. escape \ sequences.
1546    both 'in' and 'out' must be non-NULL.
1547    'out' must be a pointer to a buffer whose size is at least equal
1548    to 2*strlen(txt)+1. out's contents will always get set to a valid
1549    string, even if it's "". */
pref_get_escaped_pref(gchar * out,const gchar * in)1550 void pref_get_escaped_pref(gchar *out, const gchar *in)
1551 {
1552 	const gchar *i;
1553 	gchar *o;
1554 
1555 	*out = '\0';
1556 
1557 	cm_return_if_fail( in != NULL );
1558 	cm_return_if_fail( out != NULL );
1559 
1560 	i = in;
1561 	o = out;
1562 	while (*i != '\0') {
1563 		if (*i == '\n') {
1564 			*o++ = '\\';
1565 			*o++ = 'n';
1566 		} else if (*i == '\t') {
1567 			*o++ = '\\';
1568 			*o++ = 't';
1569 		} else if (*i == '\\') {
1570 			*o++ = '\\';
1571 			*o++ = '\\';
1572 		} else {
1573 			*o++ = *i;
1574 		}
1575 		i++;
1576 	}
1577 	*o = '\0';
1578 }
1579 
1580 /* set the contents of a textview widget from the internal \-escaped
1581   representation of a pref string. both txt and textview must be non-NULL. */
pref_set_textview_from_pref(GtkTextView * textview,const gchar * txt)1582 void pref_set_textview_from_pref(GtkTextView *textview, const gchar *txt)
1583 {
1584 	GtkTextBuffer *buffer;
1585 	gchar *out = NULL;
1586 
1587 	cm_return_if_fail( textview != NULL );
1588 
1589 	buffer = gtk_text_view_get_buffer(textview);
1590 
1591 	if (!txt) {
1592 		gtk_text_buffer_set_text(buffer, "", -1);
1593 	} else {
1594 		out = g_malloc(strlen(txt)+1);
1595 
1596 		pref_get_unescaped_pref(out, txt);
1597 
1598 		gtk_text_buffer_set_text(buffer, out, -1);
1599 		g_free(out);
1600 	}
1601 }
1602 
1603 /* set the contents of a gtkentry widget from the internal \-escaped
1604   representation of a pref string. both txt and entry must be non-NULL. */
pref_set_entry_from_pref(GtkEntry * entry,const gchar * txt)1605 void pref_set_entry_from_pref(GtkEntry *entry, const gchar *txt)
1606 {
1607 	gchar *out = NULL;
1608 
1609 	cm_return_if_fail( entry != NULL );
1610 	if (!txt) {
1611 		gtk_entry_set_text(entry, "");
1612 	} else {
1613 		out = g_malloc(strlen(txt)+1);
1614 
1615 		pref_get_unescaped_pref(out, txt);
1616 
1617 		gtk_entry_set_text(entry, out);
1618 		g_free(out);
1619 	}
1620 }
1621 
1622 /* get the \-escaped internal representation of a pref from the contents of
1623    a textview widget. textview must be non-NULL. */
pref_get_pref_from_textview(GtkTextView * textview)1624 gchar *pref_get_pref_from_textview(GtkTextView *textview)
1625 {
1626 	GtkTextBuffer *buffer;
1627 	GtkTextIter start, end;
1628 	gchar *out, *tmp;
1629 
1630 	cm_return_val_if_fail( textview != NULL, "" );
1631 
1632 	buffer = gtk_text_view_get_buffer(textview);
1633 	gtk_text_buffer_get_start_iter(buffer, &start);
1634 	gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
1635 	tmp = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
1636 	out = malloc(2*strlen(tmp)+1);
1637 	if (out)
1638 		pref_get_escaped_pref(out, tmp);
1639 	g_free(tmp);
1640 
1641 	return out?out:"";
1642 }
1643 
1644 /* get the \-escaped internal representation of a pref from the contents of
1645    a gtkentry widget. entry must be non-NULL. */
pref_get_pref_from_entry(GtkEntry * entry)1646 gchar *pref_get_pref_from_entry(GtkEntry *entry)
1647 {
1648 	gchar *out, *tmp;
1649 
1650 	cm_return_val_if_fail( entry != NULL, "" );
1651 
1652 	tmp = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
1653 	out = malloc(2*strlen(tmp)+1);
1654 
1655 	if (out)
1656 		pref_get_escaped_pref(out, tmp);
1657 	g_free(tmp);
1658 
1659 	return out?out:"";
1660 }
1661 
1662 /* ugly hack to be able to get this pref from ssl_certificate.c */
prefs_common_unsafe_ssl_certs(void)1663 gboolean prefs_common_unsafe_ssl_certs(void)
1664 {
1665 	return prefs_common.unsafe_ssl_certs;
1666 }
1667 
prefs_common_enable_log_standard(void)1668 gboolean prefs_common_enable_log_standard(void)
1669 {
1670 	return prefs_common.enable_log_standard;
1671 }
1672 
prefs_common_enable_log_warning(void)1673 gboolean prefs_common_enable_log_warning(void)
1674 {
1675 	return prefs_common.enable_log_warning;
1676 }
prefs_common_enable_log_error(void)1677 gboolean prefs_common_enable_log_error(void)
1678 {
1679 	return prefs_common.enable_log_error;
1680 }
prefs_common_enable_log_status(void)1681 gboolean prefs_common_enable_log_status(void)
1682 {
1683 	return prefs_common.enable_log_status;
1684 }
1685 
1686 /**
1687    return the translated name of a header, if the translate_header option is
1688    set, otherwise return the untranslated header name (header_name itself).
1689    this function is provided for convenience, it's an interface to
1690    prefs_common.trans_hdr.
1691    works with header names either with or without trailing colon, provided
1692    that gettext found such header name in the sources (they should all be
1693    found in src/gtk/headers.h anyway).
1694 */
prefs_common_translated_header_name(const gchar * header_name)1695 const gchar *prefs_common_translated_header_name(const gchar *header_name)
1696 {
1697 	if (header_name == NULL || *header_name == '\0')
1698 		return header_name;
1699 
1700 	return prefs_common.trans_hdr ? gettext(header_name) : header_name;
1701 }
1702 
prefs_common_get_uri_cmd(void)1703 const gchar *prefs_common_get_uri_cmd(void)
1704 {
1705 #ifdef G_OS_WIN32
1706 	return NULL;
1707 #else
1708 	gchar *tmp = NULL;
1709 
1710 	if (!prefs_common.cmds_use_system_default)
1711 		return prefs_common.uri_cmd;
1712 
1713 	tmp = g_find_program_in_path("xdg-open");
1714 	if (!tmp)
1715 		return prefs_common.uri_cmd;
1716 
1717 	g_free(tmp);
1718 	return "xdg-open %s";
1719 #endif
1720 }
1721 
prefs_common_get_ext_editor_cmd(void)1722 const gchar *prefs_common_get_ext_editor_cmd(void)
1723 {
1724 	return prefs_common.ext_editor_cmd;
1725 #if 0 /* we should do that, but it detaches the editor and breaks
1726 	 compose.c's external composition. */
1727 	gchar *tmp = NULL;
1728 
1729 	if (!prefs_common.cmds_use_system_default)
1730 		return prefs_common.ext_editor_cmd;
1731 
1732 	tmp = g_find_program_in_path("xdg-open");
1733 	if (!tmp)
1734 		return prefs_common.ext_editor_cmd;
1735 
1736 	g_free(tmp);
1737 	return "xdg-open %s";
1738 #endif
1739 }
1740 
prefs_common_get_use_shred(void)1741 gboolean prefs_common_get_use_shred(void)
1742 {
1743 	return prefs_common.use_shred;
1744 }
1745 
prefs_common_get_flush_metadata(void)1746 gboolean prefs_common_get_flush_metadata (void)
1747 {
1748 	return prefs_common.flush_metadata;
1749 }
1750 
prefs_common_get_prefs(void)1751 PrefsCommon *prefs_common_get_prefs(void)
1752 {
1753 	return &prefs_common;
1754 }
1755