diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-09-17 15:04:19 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-09-24 13:14:59 +0800 |
commit | a33e7992485e95a60add27af37327dc9f0eb3a34 (patch) | |
tree | 11c2e116f71d4b3c82fdd7912e54afa9efc35fbe /discover | |
parent | bbf4805d8750a363b1ec78831ad085b8c56a1c99 (diff) | |
download | petitboot-a33e7992485e95a60add27af37327dc9f0eb3a34.zip petitboot-a33e7992485e95a60add27af37327dc9f0eb3a34.tar.gz |
discover/grub2: Implement statement_block_execute
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover')
-rw-r--r-- | discover/grub2/grub2.h | 2 | ||||
-rw-r--r-- | discover/grub2/parser.y | 2 | ||||
-rw-r--r-- | discover/grub2/script.c | 9 |
3 files changed, 12 insertions, 1 deletions
diff --git a/discover/grub2/grub2.h b/discover/grub2/grub2.h index c7f43de..4d083ae 100644 --- a/discover/grub2/grub2.h +++ b/discover/grub2/grub2.h @@ -143,6 +143,8 @@ void script_execute(struct grub2_script *script); int statement_simple_execute(struct grub2_script *script, struct grub2_statement *statement); +int statement_block_execute(struct grub2_script *script, + struct grub2_statement *statement); int statement_if_execute(struct grub2_script *script, struct grub2_statement *statement); int statement_menuentry_execute(struct grub2_script *script, diff --git a/discover/grub2/parser.y b/discover/grub2/parser.y index 292ce07..6d3ff21 100644 --- a/discover/grub2/parser.y +++ b/discover/grub2/parser.y @@ -227,7 +227,7 @@ struct grub2_statement *create_statement_block(struct grub2_parser *parser, struct grub2_statement_block *stmt = talloc(parser, struct grub2_statement_block); stmt->st.type = STMT_TYPE_BLOCK; - stmt->st.exec = NULL; + stmt->st.exec = statement_block_execute; stmt->statements = stmts; return &stmt->st; } diff --git a/discover/grub2/script.c b/discover/grub2/script.c index 5fb13aa..43259aa 100644 --- a/discover/grub2/script.c +++ b/discover/grub2/script.c @@ -9,6 +9,8 @@ #define to_stmt_simple(stmt) \ container_of(stmt, struct grub2_statement_simple, st) +#define to_stmt_block(stmt) \ + container_of(stmt, struct grub2_statement_block, st) #define to_stmt_if(stmt) \ container_of(stmt, struct grub2_statement_if, st) #define to_stmt_menuentry(stmt) \ @@ -254,6 +256,13 @@ int statement_simple_execute(struct grub2_script *script, return rc; } +int statement_block_execute(struct grub2_script *script, + struct grub2_statement *statement) +{ + struct grub2_statement_block *st = to_stmt_block(statement); + return statements_execute(script, st->statements); +} + /* returns 0 if the statement was executed, 1 otherwise */ static int statement_conditional_execute(struct grub2_script *script, struct grub2_statement *statement, bool *executed) |