1 2 enum token { 3 tok_menuname, 4 tok_menuoption, 5 tok_comment, 6 tok_bool, 7 tok_tristate, 8 tok_dep_tristate, 9 tok_nop, 10 tok_if, 11 tok_else, 12 tok_fi, 13 tok_int, 14 tok_sound, 15 tok_define, 16 tok_choose, 17 tok_choice, 18 tok_endmenu, 19 tok_unknown 20 21 }; 22 23 enum operator { 24 op_eq, 25 op_neq, 26 op_and, 27 op_and1, 28 op_or, 29 op_bang, 30 op_lparen, 31 op_rparen, 32 op_variable, 33 op_kvariable, 34 op_shellcmd, 35 op_constant, 36 op_nuked 37 }; 38 39 union var 40 { 41 char * str; 42 struct kconfig * cfg; 43 }; 44 45 struct condition 46 { 47 struct condition * next; 48 enum operator op; 49 union var variable; 50 }; 51 52 #define GLOBAL_WRITTEN 1 53 #define CFG_DUP 2 54 #define UNSAFE 4 55 56 struct kconfig 57 { 58 struct kconfig * next; 59 int flags; 60 enum token tok; 61 char menu_number; 62 char menu_line; 63 char submenu_start; 64 char submenu_end; 65 char * optionname; 66 char * label; 67 char * value; 68 int choice_value; 69 struct kconfig * choice_label; 70 union var depend; 71 struct condition * cond; 72 }; 73 74 extern struct kconfig * config; 75 extern struct kconfig * clast; 76 extern struct kconfig * koption; 77