+struct option {
+ char *option;
+ enum opt_type type;
+ unsigned int data;
+ unsigned long init;
+};
+
+static struct option abook_vars[] = {
+ { "autosave", OT_BOOL, BOOL_AUTOSAVE, TRUE },
+
+ { "show_all_emails", OT_BOOL, BOOL_SHOW_ALL_EMAILS, TRUE },
+ { "index_format", OT_STR, STR_INDEX_FORMAT, UL " {name:22} {email:40} {phone:12|workphone|mobile}" },
+ { "mutt_command", OT_STR, STR_MUTT_COMMAND, UL "mutt" },
+ { "mutt_return_all_emails", OT_BOOL, BOOL_MUTT_RETURN_ALL_EMAILS,
+ TRUE },
+
+ { "print_command", OT_STR, STR_PRINT_COMMAND, UL "lpr" },
+
+ { "www_command", OT_STR, STR_WWW_COMMAND, UL "lynx" },
+
+ { "address_style", OT_STR, STR_ADDRESS_STYLE, UL "eu" },
+
+ { "use_ascii_only", OT_BOOL, BOOL_USE_ASCII_ONLY, FALSE },
+
+ { "add_email_prevent_duplicates", OT_BOOL, BOOL_ADD_EMAIL_PREVENT_DUPLICATES, FALSE },
+ { "preserve_fields", OT_STR, STR_PRESERVE_FIELDS, UL "standard" },
+ { "sort_field", OT_STR, STR_SORT_FIELD, UL "nick" },
+ { "show_cursor", OT_BOOL, BOOL_SHOW_CURSOR, FALSE },
+ { "use_mouse", OT_BOOL, BOOL_USE_MOUSE, FALSE },
+ { "scroll_speed", OT_INT, INT_SCROLL_SPEED, UL 2 },
+ { "use_colors", OT_BOOL, BOOL_USE_COLORS, FALSE },
+ { "color_header_fg", OT_STR, STR_COLOR_HEADER_FG, UL "blue" },
+ { "color_header_fg", OT_STR, STR_COLOR_HEADER_FG, UL "blue" },
+ { "color_header_bg", OT_STR, STR_COLOR_HEADER_BG, UL "red" },
+ { "color_footer_fg", OT_STR, STR_COLOR_FOOTER_FG, UL "red" },
+ { "color_footer_bg", OT_STR, STR_COLOR_FOOTER_BG, UL "default" },
+ { "color_list_even_fg", OT_STR, STR_COLOR_LIST_EVEN_FG, UL "yellow" },
+ { "color_list_even_bg", OT_STR, STR_COLOR_LIST_EVEN_BG, UL "default" },
+ { "color_list_odd_fg", OT_STR, STR_COLOR_LIST_ODD_FG, UL "default" },
+ { "color_list_odd_bg", OT_STR, STR_COLOR_LIST_ODD_BG, UL "default" },
+ { "color_list_header_fg", OT_STR, STR_COLOR_LIST_HEADER_FG, UL "white" },
+ { "color_list_header_bg", OT_STR, STR_COLOR_LIST_HEADER_BG, UL "blue" },
+ { "color_list_highlight_fg", OT_STR, STR_COLOR_LIST_HIGHLIGHT_FG, UL "black" },
+ { "color_list_highlight_bg", OT_STR, STR_COLOR_LIST_HIGHLIGHT_BG, UL "green" },
+ { "color_tab_border_fg", OT_STR, STR_COLOR_TAB_BORDER_FG, UL "cyan" },
+ { "color_tab_border_bg", OT_STR, STR_COLOR_TAB_BORDER_BG, UL "default" },
+ { "color_tab_label_fg", OT_STR, STR_COLOR_TAB_LABEL_FG, UL "magenta" },
+ { "color_tab_label_bg", OT_STR, STR_COLOR_TAB_LABEL_BG, UL "default" },
+ { "color_field_name_fg", OT_STR, STR_COLOR_FIELD_NAME_FG, UL "yellow" },
+ { "color_field_name_bg", OT_STR, STR_COLOR_FIELD_NAME_BG, UL "default" },
+ { "color_field_value_fg", OT_STR, STR_COLOR_FIELD_VALUE_FG, UL "green" },
+ { "color_field_value_bg", OT_STR, STR_COLOR_FIELD_VALUE_BG, UL "default" },
+ { NULL }
+};
+
+static unsigned char bool_opts[BOOL_MAX];
+static int int_opts[INT_MAXIMUM];
+static char *str_opts[STR_MAX];
+
+static void
+set_int(enum int_opts opt, int value)