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_hex,
15 tok_make,
16 tok_define,
17 tok_choose,
18 tok_choice,
19 tok_endmenu,
20 tok_unknown
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
78
79
80
81 void fix_conditionals(struct kconfig * scfg);
82 void dump_tk_script(struct kconfig *scfg);