* Rewrites 'm' to 'm' && MODULES, so that it evaluates to 'n' when running * without modules */
| 81 | * without modules |
| 82 | */ |
| 83 | static struct expr *rewrite_m(struct expr *e) |
| 84 | { |
| 85 | if (!e) |
| 86 | return e; |
| 87 | |
| 88 | switch (e->type) { |
| 89 | case E_NOT: |
| 90 | e->left.expr = rewrite_m(e->left.expr); |
| 91 | break; |
| 92 | case E_OR: |
| 93 | case E_AND: |
| 94 | e->left.expr = rewrite_m(e->left.expr); |
| 95 | e->right.expr = rewrite_m(e->right.expr); |
| 96 | break; |
| 97 | case E_SYMBOL: |
| 98 | /* change 'm' into 'm' && MODULES */ |
| 99 | if (e->left.sym == &symbol_mod) |
| 100 | return expr_alloc_and(e, expr_alloc_symbol(modules_sym)); |
| 101 | break; |
| 102 | default: |
| 103 | break; |
| 104 | } |
| 105 | return e; |
| 106 | } |
| 107 | |
| 108 | void menu_add_dep(struct expr *dep) |
| 109 | { |
no test coverage detected