diff --git a/src/config/options.c b/src/config/options.c index 175d09ac..4bbc2639 100644 --- a/src/config/options.c +++ b/src/config/options.c @@ -797,9 +797,136 @@ register_autocreated_options(void) #endif } -static union option_info config_options_info[]; extern union option_info cmdline_options_info[]; -static const struct change_hook_info change_hooks[]; + +#include "config/options.inc" + +static int +change_hook_cache(struct session *ses, struct option *current, struct option *changed) +{ + shrink_memory(0); + return 0; +} + +static int +change_hook_connection(struct session *ses, struct option *current, struct option *changed) +{ + register_check_queue(); + return 0; +} + +static int +change_hook_html(struct session *ses, struct option *current, struct option *changed) +{ + foreach (ses, sessions) ses->tab->resize = 1; + + return 0; +} + +static int +change_hook_insert_mode(struct session *ses, struct option *current, struct option *changed) +{ + update_status(); + return 0; +} + +static int +change_hook_active_link(struct session *ses, struct option *current, struct option *changed) +{ + update_cached_document_options(ses); + return 0; +} + +static int +change_hook_terminal(struct session *ses, struct option *current, struct option *changed) +{ + cls_redraw_all_terminals(); + return 0; +} + +static int +change_hook_ui(struct session *ses, struct option *current, struct option *changed) +{ + update_status(); + return 0; +} + +/** Make option templates visible or invisible in the option manager. + * This is called once on startup, and then each time the value of the + * "config.show_template" option is changed. + * + * @param tree + * The option tree whose children should be affected. + * + * @param show + * A set of bits: + * - The 0x01 bit means templates should be made visible. + * If the bit is clear, templates become invisible instead. + * - The 0x02 bit means @a tree is itself part of a template, + * and so all of its children should be affected, regardless + * of whether they are templates of their own. + * + * Deleted options are never visible. + * + * @relates option */ +static void +update_visibility(LIST_OF(struct option) *tree, int show) +{ + struct option *opt; + + foreach (opt, *tree) { + if (opt->flags & OPT_DELETED) continue; + + if (!strcmp(opt->name, "_template_")) { + if (opt->box_item) + opt->box_item->visible = (show & 1); + + if (opt->type == OPT_TREE) + update_visibility(opt->value.tree, show | 2); + } else { + if (opt->box_item && (show & 2)) + opt->box_item->visible = (show & 1); + + if (opt->type == OPT_TREE) + update_visibility(opt->value.tree, show); + } + } +} + +static int +change_hook_stemplate(struct session *ses, struct option *current, struct option *changed) +{ + update_visibility(config_options->value.tree, changed->value.number); + return 0; +} + +static int +change_hook_language(struct session *ses, struct option *current, struct option *changed) +{ +#ifdef CONFIG_NLS + set_language(changed->value.number); +#endif + return 0; +} + +static const struct change_hook_info change_hooks[] = { + { "config.show_template", change_hook_stemplate }, + { "connection", change_hook_connection }, + { "document.browse", change_hook_html }, + { "document.browse.forms.insert_mode", + change_hook_insert_mode }, + { "document.browse.links.active_link", + change_hook_active_link }, + { "document.cache", change_hook_cache }, + { "document.codepage", change_hook_html }, + { "document.colors", change_hook_html }, + { "document.html", change_hook_html }, + { "document.plain", change_hook_html }, + { "terminal", change_hook_terminal }, + { "ui.language", change_hook_language }, + { "ui", change_hook_ui }, + { NULL, NULL }, +}; void init_options(void) @@ -1006,98 +1133,6 @@ smart_config_string(struct string *str, int print_comment, int i18n, } -static int -change_hook_cache(struct session *ses, struct option *current, struct option *changed) -{ - shrink_memory(0); - return 0; -} - -static int -change_hook_connection(struct session *ses, struct option *current, struct option *changed) -{ - register_check_queue(); - return 0; -} - -static int -change_hook_html(struct session *ses, struct option *current, struct option *changed) -{ - foreach (ses, sessions) ses->tab->resize = 1; - - return 0; -} - -static int -change_hook_insert_mode(struct session *ses, struct option *current, struct option *changed) -{ - update_status(); - return 0; -} - -static int -change_hook_active_link(struct session *ses, struct option *current, struct option *changed) -{ - update_cached_document_options(ses); - return 0; -} - -static int -change_hook_terminal(struct session *ses, struct option *current, struct option *changed) -{ - cls_redraw_all_terminals(); - return 0; -} - -static int -change_hook_ui(struct session *ses, struct option *current, struct option *changed) -{ - update_status(); - return 0; -} - -/** Make option templates visible or invisible in the option manager. - * This is called once on startup, and then each time the value of the - * "config.show_template" option is changed. - * - * @param tree - * The option tree whose children should be affected. - * - * @param show - * A set of bits: - * - The 0x01 bit means templates should be made visible. - * If the bit is clear, templates become invisible instead. - * - The 0x02 bit means @a tree is itself part of a template, - * and so all of its children should be affected, regardless - * of whether they are templates of their own. - * - * Deleted options are never visible. - * - * @relates option */ -static void -update_visibility(LIST_OF(struct option) *tree, int show) -{ - struct option *opt; - - foreach (opt, *tree) { - if (opt->flags & OPT_DELETED) continue; - - if (!strcmp(opt->name, "_template_")) { - if (opt->box_item) - opt->box_item->visible = (show & 1); - - if (opt->type == OPT_TREE) - update_visibility(opt->value.tree, show | 2); - } else { - if (opt->box_item && (show & 2)) - opt->box_item->visible = (show & 1); - - if (opt->type == OPT_TREE) - update_visibility(opt->value.tree, show); - } - } -} - void update_options_visibility(void) { @@ -1117,40 +1152,7 @@ toggle_option(struct session *ses, struct option *option) option_changed(ses, option); } -static int -change_hook_stemplate(struct session *ses, struct option *current, struct option *changed) -{ - update_visibility(config_options->value.tree, changed->value.number); - return 0; -} -static int -change_hook_language(struct session *ses, struct option *current, struct option *changed) -{ -#ifdef CONFIG_NLS - set_language(changed->value.number); -#endif - return 0; -} - -static const struct change_hook_info change_hooks[] = { - { "config.show_template", change_hook_stemplate }, - { "connection", change_hook_connection }, - { "document.browse", change_hook_html }, - { "document.browse.forms.insert_mode", - change_hook_insert_mode }, - { "document.browse.links.active_link", - change_hook_active_link }, - { "document.cache", change_hook_cache }, - { "document.codepage", change_hook_html }, - { "document.colors", change_hook_html }, - { "document.html", change_hook_html }, - { "document.plain", change_hook_html }, - { "terminal", change_hook_terminal }, - { "ui.language", change_hook_language }, - { "ui", change_hook_ui }, - { NULL, NULL }, -}; void call_change_hooks(struct session *ses, struct option *current, struct option *option) @@ -1238,7 +1240,6 @@ checkout_option_values(struct option_resolver *resolvers, Options values **********************************************************************/ -#include "config/options.inc" /*! @relates option_info */ void diff --git a/src/cookies/cookies.c b/src/cookies/cookies.c index 19d6cf35..27d059fb 100644 --- a/src/cookies/cookies.c +++ b/src/cookies/cookies.c @@ -719,7 +719,8 @@ load_cookies(void) { while (fgets(in_buffer, 6 * MAX_STR_LEN, fp)) { struct cookie *cookie; unsigned char *p, *q = in_buffer; - enum { NAME = 0, VALUE, SERVER, PATH, DOMAIN, EXPIRES, SECURE, MEMBERS } member; + enum { NAME = 0, VALUE, SERVER, PATH, DOMAIN, EXPIRES, SECURE, MEMBERS }; + int member; struct { unsigned char *pos; int len; diff --git a/src/dialogs/info.c b/src/dialogs/info.c index 4c4434ab..d4f4f798 100644 --- a/src/dialogs/info.c +++ b/src/dialogs/info.c @@ -102,7 +102,7 @@ menu_keys(struct terminal *term, void *d_, void *xxx) if (info->toggle) { action_id_T action_id; - enum keymap_id keymap_id; + int keymap_id; for (action_id = 0; action_id < MAIN_ACTIONS - 1; action_id++) { action_ids[action_id] = action_id + 1; diff --git a/src/document/css/property.h b/src/document/css/property.h index 91766244..27535b22 100644 --- a/src/document/css/property.h +++ b/src/document/css/property.h @@ -8,6 +8,81 @@ #include "util/color.h" #include "util/lists.h" +enum css_property_type { + CSS_PT_NONE, + CSS_PT_BACKGROUND, + CSS_PT_BACKGROUND_COLOR, + CSS_PT_COLOR, + CSS_PT_DISPLAY, + CSS_PT_FONT_STYLE, + CSS_PT_FONT_WEIGHT, + CSS_PT_LIST_STYLE, + CSS_PT_LIST_STYLE_TYPE, + CSS_PT_TEXT_ALIGN, + CSS_PT_TEXT_DECORATION, + CSS_PT_WHITE_SPACE, + CSS_PT_LAST, +}; + +enum css_property_value_type { + CSS_VT_NONE, + CSS_VT_COLOR, + CSS_VT_DISPLAY, + CSS_VT_FONT_ATTRIBUTE, + CSS_VT_LIST_STYLE, + CSS_VT_TEXT_ALIGN, + CSS_VT_LAST, +}; + +enum css_display { + CSS_DISP_INLINE, + CSS_DISP_BLOCK, + CSS_DISP_NONE, +}; + +enum css_list_style { + CSS_LIST_NONE, + CSS_LIST_DISC, + CSS_LIST_CIRCLE, + CSS_LIST_SQUARE, + CSS_LIST_ORDINAL, /* Marker value */ + CSS_LIST_DECIMAL, + CSS_LIST_DECIMAL_LEADING_ZERO, + CSS_LIST_LOWER_ROMAN, + CSS_LIST_UPPER_ROMAN, + CSS_LIST_LOWER_ALPHA, + CSS_LIST_UPPER_ALPHA, + CSS_LIST_LOWER_GREEK, + CSS_LIST_LOWER_LATIN, + CSS_LIST_UPPER_LATIN, + CSS_LIST_HEBREW, + CSS_LIST_ARMENIAN, + CSS_LIST_GEORGIAN, + CSS_LIST_CJK_IDEOGRAPHIC, + CSS_LIST_HIRAGANA, + CSS_LIST_KATAKANA, + CSS_LIST_HIRAGANA_IROHA, + CSS_LIST_KATAKANA_IROHA, +}; + +union css_property_value { + void *none; + color_T color; + enum css_display display; + struct { + enum text_style_format add, rem; + } font_attribute; + enum format_align text_align; + enum css_list_style list_style; + /* TODO: + * Generic numbers + * Percentages + * URL + * Align (struct format_align) */ + /* TODO: The size units will be fun yet. --pasky */ +}; + + /** The struct css_property describes one CSS declaration in a rule, therefore * being basically a parsed instance of struct css_property_info. One list of * these contains all the declarations contained in one rule. */ @@ -16,78 +91,14 @@ struct css_property { /** Declared property. The enum item name is derived from the * property name, just uppercase it and tr/-/_/. */ - enum css_property_type { - CSS_PT_NONE, - CSS_PT_BACKGROUND, - CSS_PT_BACKGROUND_COLOR, - CSS_PT_COLOR, - CSS_PT_DISPLAY, - CSS_PT_FONT_STYLE, - CSS_PT_FONT_WEIGHT, - CSS_PT_LIST_STYLE, - CSS_PT_LIST_STYLE_TYPE, - CSS_PT_TEXT_ALIGN, - CSS_PT_TEXT_DECORATION, - CSS_PT_WHITE_SPACE, - CSS_PT_LAST, - } type; + enum css_property_type type; /** Type of the property value. Discriminates the #value union. */ - enum css_property_value_type { - CSS_VT_NONE, - CSS_VT_COLOR, - CSS_VT_DISPLAY, - CSS_VT_FONT_ATTRIBUTE, - CSS_VT_LIST_STYLE, - CSS_VT_TEXT_ALIGN, - CSS_VT_LAST, - } value_type; + enum css_property_value_type value_type; /** Property value. If it is a pointer, it points always to a * memory to be free()d together with this structure. */ - union css_property_value { - void *none; - color_T color; - enum css_display { - CSS_DISP_INLINE, - CSS_DISP_BLOCK, - CSS_DISP_NONE, - } display; - struct { - enum text_style_format add, rem; - } font_attribute; - enum format_align text_align; - enum css_list_style { - CSS_LIST_NONE, - CSS_LIST_DISC, - CSS_LIST_CIRCLE, - CSS_LIST_SQUARE, - CSS_LIST_ORDINAL, /* Marker value */ - CSS_LIST_DECIMAL, - CSS_LIST_DECIMAL_LEADING_ZERO, - CSS_LIST_LOWER_ROMAN, - CSS_LIST_UPPER_ROMAN, - CSS_LIST_LOWER_ALPHA, - CSS_LIST_UPPER_ALPHA, - CSS_LIST_LOWER_GREEK, - CSS_LIST_LOWER_LATIN, - CSS_LIST_UPPER_LATIN, - CSS_LIST_HEBREW, - CSS_LIST_ARMENIAN, - CSS_LIST_GEORGIAN, - CSS_LIST_CJK_IDEOGRAPHIC, - CSS_LIST_HIRAGANA, - CSS_LIST_KATAKANA, - CSS_LIST_HIRAGANA_IROHA, - CSS_LIST_KATAKANA_IROHA, - } list_style; - /* TODO: - * Generic numbers - * Percentages - * URL - * Align (struct format_align) */ - /* TODO: The size units will be fun yet. --pasky */ - } value; + union css_property_value value; }; struct css_property_info; diff --git a/src/document/css/stylesheet.h b/src/document/css/stylesheet.h index 01f0e9e5..d97ea499 100644 --- a/src/document/css/stylesheet.h +++ b/src/document/css/stylesheet.h @@ -64,6 +64,21 @@ struct css_selector_set { }; #define INIT_CSS_SELECTOR_SET(set) { 0, { D_LIST_HEAD(set.list) } } +enum css_selector_relation { + CSR_ROOT, /**< First class stylesheet member. */ + CSR_SPECIFITY, /**< Narrowing-down, i.e. the "x" in "foo#x". */ + CSR_ANCESTOR, /**< Ancestor, i.e. the "p" in "p a". */ + CSR_PARENT, /**< Direct parent, i.e. the "div" in "div>img". */ +}; + +enum css_selector_type { + CST_ELEMENT, + CST_ID, + CST_CLASS, + CST_PSEUDO, + CST_INVALID, /**< Auxiliary for the parser */ +}; + /** The struct css_selector is used for mapping elements (or nodes) in the * document structure to properties. See README for some hints about how the * trees of these span. */ @@ -73,21 +88,10 @@ struct css_selector { /** This defines relation between this selector fragment and its * parent in the selector tree. * Update with set_css_selector_relation(). */ - enum css_selector_relation { - CSR_ROOT, /**< First class stylesheet member. */ - CSR_SPECIFITY, /**< Narrowing-down, i.e. the "x" in "foo#x". */ - CSR_ANCESTOR, /**< Ancestor, i.e. the "p" in "p a". */ - CSR_PARENT, /**< Direct parent, i.e. the "div" in "div>img". */ - } relation; + enum css_selector_relation relation; struct css_selector_set leaves; - enum css_selector_type { - CST_ELEMENT, - CST_ID, - CST_CLASS, - CST_PSEUDO, - CST_INVALID, /**< Auxiliary for the parser */ - } type; + enum css_selector_type type; unsigned char *name; LIST_OF(struct css_property) properties; diff --git a/src/document/document.h b/src/document/document.h index 0a24280a..dcce17cf 100644 --- a/src/document/document.h +++ b/src/document/document.h @@ -68,18 +68,20 @@ enum link_type { LINK_AREA, }; +enum script_event_hook_type { + SEVHOOK_ONCLICK, + SEVHOOK_ONDBLCLICK, + SEVHOOK_ONMOUSEOVER, + SEVHOOK_ONHOVER, + SEVHOOK_ONFOCUS, + SEVHOOK_ONMOUSEOUT, + SEVHOOK_ONBLUR, +}; + struct script_event_hook { LIST_HEAD(struct script_event_hook); - enum script_event_hook_type { - SEVHOOK_ONCLICK, - SEVHOOK_ONDBLCLICK, - SEVHOOK_ONMOUSEOVER, - SEVHOOK_ONHOVER, - SEVHOOK_ONFOCUS, - SEVHOOK_ONMOUSEOUT, - SEVHOOK_ONBLUR, - } type; + enum script_event_hook_type type; unsigned char *src; }; diff --git a/src/document/dom/rss.c b/src/document/dom/rss.c index 9f459d20..9af95d5f 100644 --- a/src/document/dom/rss.c +++ b/src/document/dom/rss.c @@ -168,7 +168,7 @@ dom_rss_push_document(struct dom_stack *stack, struct dom_node *root, void *xxx) struct dom_renderer *renderer = stack->current->data; struct document *document = renderer->document; struct rss_renderer *rss; - enum rss_style type; + int type; struct css_stylesheet *css = &default_stylesheet; { diff --git a/src/document/dom/source.c b/src/document/dom/source.c index 30df114e..23b1de11 100644 --- a/src/document/dom/source.c +++ b/src/document/dom/source.c @@ -333,7 +333,7 @@ render_dom_document_start(struct dom_stack *stack, struct dom_node *node, void * struct dom_renderer *renderer = stack->current->data; struct document *document = renderer->document; struct source_renderer *data; - enum dom_node_type type; + int type; struct css_stylesheet *css = &default_stylesheet; { diff --git a/src/document/dom/util.c b/src/document/dom/util.c index 9aa958a6..b585fb86 100644 --- a/src/document/dom/util.c +++ b/src/document/dom/util.c @@ -31,7 +31,7 @@ static inline void init_template(struct screen_char *template_, struct document_options *options, enum screen_char_attr attr, color_T foreground, color_T background) { - struct text_style style = INIT_TEXT_STYLE(attr, foreground, background); + struct text_style style = INIT_TEXT_STYLE((int)attr, foreground, background); get_screen_char_template(template_, options, style); } diff --git a/src/document/html/parser.h b/src/document/html/parser.h index 3df476e0..a865606d 100644 --- a/src/document/html/parser.h +++ b/src/document/html/parser.h @@ -122,6 +122,11 @@ enum html_element_mortality_type { ELEMENT_WEAK, }; +enum html_element_pseudo_class { + ELEMENT_LINK = 1, + ELEMENT_VISITED = 2, +}; + struct html_element { LIST_HEAD(struct html_element); @@ -148,10 +153,7 @@ struct html_element { struct frameset_desc *frameset; /* For the needs of CSS engine. A wannabe bitmask. */ - enum html_element_pseudo_class { - ELEMENT_LINK = 1, - ELEMENT_VISITED = 2, - } pseudo_class; + enum html_element_pseudo_class pseudo_class; }; #define is_inline_element(e) ((e)->linebreak == 0) diff --git a/src/dom/scanner.h b/src/dom/scanner.h index 2357cf87..9e830422 100644 --- a/src/dom/scanner.h +++ b/src/dom/scanner.h @@ -37,9 +37,10 @@ struct dom_scanner_token { ((token)->string.length == (sizeof(str) - 1) \ && !c_strncasecmp((token)->string.string, str, sizeof(str) - 1)) +enum dom_scan_type { DOM_SCAN_RANGE, DOM_SCAN_STRING, DOM_SCAN_END }; struct dom_scan_table_info { - enum { DOM_SCAN_RANGE, DOM_SCAN_STRING, DOM_SCAN_END } type; + enum dom_scan_type type; struct dom_string data; int bits; }; diff --git a/src/intl/gettext/gettextP.h b/src/intl/gettext/gettextP.h index 1baa2e5f..088671df 100644 --- a/src/intl/gettext/gettextP.h +++ b/src/intl/gettext/gettextP.h @@ -41,33 +41,35 @@ SWAP(nls_uint32 i) 24); } +enum operator_ { + /* Without arguments: */ + var, /* The variable "n". */ + num, /* Decimal number. */ + /* Unary operators: */ + lnot, /* Logical NOT. */ + /* Binary operators: */ + mult, /* Multiplication. */ + divide, /* Division. */ + module, /* Module operation. */ + plus, /* Addition. */ + minus, /* Subtraction. */ + less_than, /* Comparison. */ + greater_than, /* Comparison. */ + less_or_equal, /* Comparison. */ + greater_or_equal, /* Comparison. */ + equal, /* Comparision for equality. */ + not_equal, /* Comparision for inequality. */ + land, /* Logical AND. */ + lor, /* Logical OR. */ + /* Ternary operators: */ + qmop /* Question mark operator. */ +}; + /* This is the representation of the expressions to determine the plural form. */ struct expression { int nargs; /* Number of arguments. */ - enum operator { - /* Without arguments: */ - var, /* The variable "n". */ - num, /* Decimal number. */ - /* Unary operators: */ - lnot, /* Logical NOT. */ - /* Binary operators: */ - mult, /* Multiplication. */ - divide, /* Division. */ - module, /* Module operation. */ - plus, /* Addition. */ - minus, /* Subtraction. */ - less_than, /* Comparison. */ - greater_than, /* Comparison. */ - less_or_equal, /* Comparison. */ - greater_or_equal, /* Comparison. */ - equal, /* Comparision for equality. */ - not_equal, /* Comparision for inequality. */ - land, /* Logical AND. */ - lor, /* Logical OR. */ - /* Ternary operators: */ - qmop /* Question mark operator. */ - } operation; + enum operator_ operation; union { unsigned long int num; /* Number value for `num'. */ struct expression *args[3]; /* Up to three arguments. */ diff --git a/src/intl/gettext/plural.c b/src/intl/gettext/plural.c index a268482a..83d3d2e7 100644 --- a/src/intl/gettext/plural.c +++ b/src/intl/gettext/plural.c @@ -161,7 +161,7 @@ union YYSTYPE #line 42 "plural.y" /* yacc.c:355 */ unsigned long int num; - enum operator op; + enum operator_ op; struct expression *exp; #line 168 "plural.c" /* yacc.c:355 */ @@ -182,15 +182,15 @@ int gettext__parse (struct parse_args *arg); #line 48 "plural.y" /* yacc.c:358 */ /* Prototypes for local functions. */ -static struct expression *new_exp(int nargs, enum operator op, +static struct expression *new_exp(int nargs, enum operator_ op, struct expression * const *args); -static inline struct expression *new_exp_0(enum operator op); -static inline struct expression *new_exp_1(enum operator op, +static inline struct expression *new_exp_0(enum operator_ op); +static inline struct expression *new_exp_1(enum operator_ op, struct expression *right); -static struct expression *new_exp_2(enum operator op, +static struct expression *new_exp_2(enum operator_ op, struct expression *left, struct expression *right); -static inline struct expression *new_exp_3(enum operator op, +static inline struct expression *new_exp_3(enum operator_ op, struct expression *bexp, struct expression *tbranch, struct expression *fbranch); @@ -200,7 +200,7 @@ static void yyerror(struct parse_args *arg, const unsigned char *str); /* Allocation of expressions. */ static struct expression * -new_exp(int nargs, enum operator op, struct expression * const *args) +new_exp(int nargs, enum operator_ op, struct expression * const *args) { int i; struct expression *newp; @@ -229,13 +229,13 @@ new_exp(int nargs, enum operator op, struct expression * const *args) } static inline struct expression * -new_exp_0(enum operator op) +new_exp_0(enum operator_ op) { return new_exp (0, op, NULL); } static inline struct expression * -new_exp_1(enum operator op, struct expression *right) +new_exp_1(enum operator_ op, struct expression *right) { struct expression *args[1]; @@ -244,7 +244,7 @@ new_exp_1(enum operator op, struct expression *right) } static struct expression * -new_exp_2(enum operator op, struct expression *left, struct expression *right) +new_exp_2(enum operator_ op, struct expression *left, struct expression *right) { struct expression *args[2]; @@ -254,7 +254,7 @@ new_exp_2(enum operator op, struct expression *left, struct expression *right) } static inline struct expression * -new_exp_3(enum operator op, struct expression *bexp, struct expression *tbranch, +new_exp_3(enum operator_ op, struct expression *bexp, struct expression *tbranch, struct expression *fbranch) { struct expression *args[3]; diff --git a/src/intl/gettext/plural.y b/src/intl/gettext/plural.y index 9303f172..2388e35c 100644 --- a/src/intl/gettext/plural.y +++ b/src/intl/gettext/plural.y @@ -41,21 +41,21 @@ %union { unsigned long int num; - enum operator op; + enum operator_ op; struct expression *exp; } %{ /* Prototypes for local functions. */ -static struct expression *new_exp(int nargs, enum operator op, +static struct expression *new_exp(int nargs, enum operator_ op, struct expression * const *args); -static inline struct expression *new_exp_0(enum operator op); -static inline struct expression *new_exp_1(enum operator op, +static inline struct expression *new_exp_0(enum operator_ op); +static inline struct expression *new_exp_1(enum operator_ op, struct expression *right); -static struct expression *new_exp_2(enum operator op, +static struct expression *new_exp_2(enum operator_ op, struct expression *left, struct expression *right); -static inline struct expression *new_exp_3(enum operator op, +static inline struct expression *new_exp_3(enum operator_ op, struct expression *bexp, struct expression *tbranch, struct expression *fbranch); @@ -65,7 +65,7 @@ static void yyerror(struct parse_args *arg, const unsigned char *str); /* Allocation of expressions. */ static struct expression * -new_exp(int nargs, enum operator op, struct expression * const *args) +new_exp(int nargs, enum operator_ op, struct expression * const *args) { int i; struct expression *newp; @@ -94,13 +94,13 @@ new_exp(int nargs, enum operator op, struct expression * const *args) } static inline struct expression * -new_exp_0(enum operator op) +new_exp_0(enum operator_ op) { return new_exp (0, op, NULL); } static inline struct expression * -new_exp_1(enum operator op, struct expression *right) +new_exp_1(enum operator_ op, struct expression *right) { struct expression *args[1]; @@ -109,7 +109,7 @@ new_exp_1(enum operator op, struct expression *right) } static struct expression * -new_exp_2(enum operator op, struct expression *left, struct expression *right) +new_exp_2(enum operator_ op, struct expression *left, struct expression *right) { struct expression *args[2]; @@ -119,7 +119,7 @@ new_exp_2(enum operator op, struct expression *left, struct expression *right) } static inline struct expression * -new_exp_3(enum operator op, struct expression *bexp, struct expression *tbranch, +new_exp_3(enum operator_ op, struct expression *bexp, struct expression *tbranch, struct expression *fbranch) { struct expression *args[3]; diff --git a/src/network/connection.c b/src/network/connection.c index 05cb4c60..9b761a17 100644 --- a/src/network/connection.c +++ b/src/network/connection.c @@ -70,7 +70,7 @@ static void notify_connection_callbacks(struct connection *conn); static /* inline */ enum connection_priority get_priority(struct connection *conn) { - enum connection_priority priority; + int priority; for (priority = 0; priority < PRIORITIES; priority++) if (conn->pri[priority]) diff --git a/src/protocol/auth/dialogs.c b/src/protocol/auth/dialogs.c index 71fd4e6f..7c734f13 100644 --- a/src/protocol/auth/dialogs.c +++ b/src/protocol/auth/dialogs.c @@ -43,12 +43,12 @@ auth_ok(void *data) unsigned char *url = get_uri_string(entry->uri, URI_HTTP_AUTH); if (url) { - struct form form = { - .action = url, - }; + struct form form; INIT_LIST_OF(struct submitted_value, submit); struct submitted_value *user, *password; + form.action = url; + user = init_submitted_value("user", entry->user, FC_TEXT, NULL, 0); if (user) { add_to_list(submit, user); diff --git a/src/session/session.h b/src/session/session.h index f4f679b9..d8243b1d 100644 --- a/src/session/session.h +++ b/src/session/session.h @@ -47,6 +47,8 @@ struct frame { struct view_state vs; }; +enum kp_mark { KP_MARK_NOTHING, KP_MARK_SET, KP_MARK_GOTO }; + /** Use for keyboard prefixes. */ struct kbdprefix { /** This is the repeat count being inserted by user so far. @@ -56,7 +58,7 @@ struct kbdprefix { #ifdef CONFIG_MARKS /** If the previous key was a mark prefix, this describes what kind * of action are we supposed to do when we receive the next key. */ - enum { KP_MARK_NOTHING, KP_MARK_SET, KP_MARK_GOTO } mark; + enum kp_mark mark; #endif }; @@ -165,7 +167,7 @@ struct session { struct download loading; struct uri *loading_uri; - enum cache_mode reloadlevel; + int reloadlevel; int redirect_cnt; struct document_view *doc_view; diff --git a/src/terminal/kbd.c b/src/terminal/kbd.c index e22d0fd9..85cd52af 100644 --- a/src/terminal/kbd.c +++ b/src/terminal/kbd.c @@ -480,8 +480,9 @@ free_itrm(struct itrm *itrm) static inline void resize_terminal_from_str(unsigned char *text) { - enum { NEW_WIDTH = 0, NEW_HEIGHT, OLD_WIDTH, OLD_HEIGHT, NUMBERS } i; + enum { NEW_WIDTH = 0, NEW_HEIGHT, OLD_WIDTH, OLD_HEIGHT, NUMBERS }; int numbers[NUMBERS]; + int i; assert(text && *text); if_assert_failed return; diff --git a/src/terminal/screen.c b/src/terminal/screen.c index 5ec058dc..6ec2611e 100644 --- a/src/terminal/screen.c +++ b/src/terminal/screen.c @@ -208,6 +208,46 @@ static const struct string fbterm_color256_seqs[] = { }; #endif +struct screen_driver_opt { + /** Charsets when doing UTF-8 I/O. + * [0] is the common charset and [1] is the frame charset. + * Test whether to use UTF-8 I/O using the use_utf8_io() macro. */ + int charsets[2]; + + /** The frame translation table. May be NULL. */ + const unsigned char *frame; + + /** The frame mode setup and teardown sequences. May be NULL. */ + const struct string *frame_seqs; + + /** The italic mode setup and teardown sequences. May be NULL. */ + const struct string *italic; + + /** The underline mode setup and teardown sequences. May be NULL. */ + const struct string *underline; + + /** The color mode */ + enum color_mode color_mode; + +#if defined(CONFIG_88_COLORS) || defined(CONFIG_256_COLORS) + const struct string *color256_seqs; +#endif + /** These are directly derived from the terminal options. */ + unsigned int transparent:1; + +#ifdef CONFIG_UTF8 + /* Whether the charset of the terminal is UTF-8. This + * is the same as is_cp_utf8(charsets[0]), except the + * latter might crash if UTF-8 I/O is disabled. */ + unsigned int utf8_cp:1; +#endif /* CONFIG_UTF8 */ + +#ifdef CONFIG_COMBINE + /* Whether the terminal supports combining characters. */ + unsigned int combine:1; +#endif /* CONFIG_COMBINE */ +}; + /** Used in @c add_char*() and @c redraw_screen() to reduce the logic. * It is updated from terminal._template_.* using option.change_hook. * @@ -221,45 +261,7 @@ struct screen_driver { enum term_mode_type type; /** set_screen_driver_opt() sets these. */ - struct screen_driver_opt { - /** Charsets when doing UTF-8 I/O. - * [0] is the common charset and [1] is the frame charset. - * Test whether to use UTF-8 I/O using the use_utf8_io() macro. */ - int charsets[2]; - - /** The frame translation table. May be NULL. */ - const unsigned char *frame; - - /** The frame mode setup and teardown sequences. May be NULL. */ - const struct string *frame_seqs; - - /** The italic mode setup and teardown sequences. May be NULL. */ - const struct string *italic; - - /** The underline mode setup and teardown sequences. May be NULL. */ - const struct string *underline; - - /** The color mode */ - enum color_mode color_mode; - -#if defined(CONFIG_88_COLORS) || defined(CONFIG_256_COLORS) - const struct string *color256_seqs; -#endif - /** These are directly derived from the terminal options. */ - unsigned int transparent:1; - -#ifdef CONFIG_UTF8 - /* Whether the charset of the terminal is UTF-8. This - * is the same as is_cp_utf8(charsets[0]), except the - * latter might crash if UTF-8 I/O is disabled. */ - unsigned int utf8_cp:1; -#endif /* CONFIG_UTF8 */ - -#ifdef CONFIG_COMBINE - /* Whether the terminal supports combining characters. */ - unsigned int combine:1; -#endif /* CONFIG_COMBINE */ - } opt; + struct screen_driver_opt opt; /* The terminal._template_ name. */ unsigned char name[1]; /* XXX: Keep last! */ diff --git a/src/util/scanner.h b/src/util/scanner.h index 64d5fc38..1af37d60 100644 --- a/src/util/scanner.h +++ b/src/util/scanner.h @@ -36,13 +36,15 @@ struct scanner_token { #define scanner_token_contains(token, str) \ scanner_token_strlcasecmp(token, str, sizeof(str) - 1) +enum scan_type { SCAN_RANGE, SCAN_STRING, SCAN_END }; +union scan_table_data { + struct { unsigned char *source; long length; } string; + struct { unsigned char *start; long end; } range; +}; struct scan_table_info { - enum { SCAN_RANGE, SCAN_STRING, SCAN_END } type; - union scan_table_data { - struct { unsigned char *source; long length; } string; - struct { unsigned char *start; long end; } range; - } data; + enum scan_type type; + union scan_table_data data; int bits; };