diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-09-17 13:02:05 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-09-24 13:14:59 +0800 |
commit | 9638c29114c8d575d1b89c26dcf1f274ea6ab6c4 (patch) | |
tree | d39b3d16444474f7018a1948d59c7e479f3fd5ee /discover/grub2/grub2.h | |
parent | 63575c2045b1505da7a2abca8a51a4a7aa3df6f7 (diff) | |
download | talos-petitboot-9638c29114c8d575d1b89c26dcf1f274ea6ab6c4.tar.gz talos-petitboot-9638c29114c8d575d1b89c26dcf1f274ea6ab6c4.zip |
discover/grub2: Create 'conditional' statements
Rather than holding the condition and conditional-statements in struct
grub2_statment_if, create a new conditional type that contains these. We
can then use this to implement elif statements.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/grub2/grub2.h')
-rw-r--r-- | discover/grub2/grub2.h | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/discover/grub2/grub2.h b/discover/grub2/grub2.h index 5b83fad..7f4a834 100644 --- a/discover/grub2/grub2.h +++ b/discover/grub2/grub2.h @@ -43,6 +43,7 @@ struct grub2_statement { STMT_TYPE_MENUENTRY, STMT_TYPE_IF, STMT_TYPE_BLOCK, + STMT_TYPE_CONDITIONAL, } type; int (*exec)(struct grub2_script *, struct grub2_statement *); @@ -59,11 +60,16 @@ struct grub2_statement_menuentry { struct grub2_statements *statements; }; -struct grub2_statement_if { +struct grub2_statement_conditional { struct grub2_statement st; struct grub2_statement *condition; - struct grub2_statements *true_case; - struct grub2_statements *false_case; + struct grub2_statements *statements; +}; + +struct grub2_statement_if { + struct grub2_statement st; + struct grub2_statement *conditional; + struct grub2_statements *else_case; }; struct grub2_statement_block { @@ -102,10 +108,13 @@ struct grub2_statement *create_statement_simple(struct grub2_parser *parser, struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser, struct grub2_argv *argv, struct grub2_statements *stmts); +struct grub2_statement *create_statement_conditional( + struct grub2_parser *parser, struct grub2_statement *condition, + struct grub2_statements *statements); + struct grub2_statement *create_statement_if(struct grub2_parser *parser, - struct grub2_statement *condition, - struct grub2_statements *true_case, - struct grub2_statements *false_case); + struct grub2_statement *conditional, + struct grub2_statements *else_case); struct grub2_statement *create_statement_block(struct grub2_parser *parser, struct grub2_statements *stmts); |