X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=discover%2Fgrub2%2Fparser-api.c;h=765bd873e2fa4d333062fb5ce9484647593c2db2;hb=fb5a2b71f85614114663c86dbba62c5c491a11b9;hp=d3bec3d31029b60689546b68c84884d70d7ab63b;hpb=c0b2be44ee953f9f50737b959e0def6e2df24629;p=petitboot diff --git a/discover/grub2/parser-api.c b/discover/grub2/parser-api.c index d3bec3d..765bd87 100644 --- a/discover/grub2/parser-api.c +++ b/discover/grub2/parser-api.c @@ -17,6 +17,7 @@ struct grub2_statement *create_statement_simple(struct grub2_parser *parser, struct grub2_statement_simple *stmt = talloc(parser, struct grub2_statement_simple); stmt->st.type = STMT_TYPE_SIMPLE; + stmt->st.exec = statement_simple_execute; stmt->argv = argv; return &stmt->st; } @@ -27,6 +28,7 @@ struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser, struct grub2_statement_menuentry *stmt = talloc(parser, struct grub2_statement_menuentry); stmt->st.type = STMT_TYPE_MENUENTRY; + stmt->st.exec = NULL; stmt->argv = argv; stmt->statements = stmts; return &stmt->st; @@ -40,6 +42,7 @@ struct grub2_statement *create_statement_if(struct grub2_parser *parser, struct grub2_statement_if *stmt = talloc(parser, struct grub2_statement_if); stmt->st.type = STMT_TYPE_IF; + stmt->st.exec = statement_if_execute; stmt->condition = condition; stmt->true_case = true_case; stmt->false_case = false_case; @@ -52,6 +55,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->statements = stmts; return &stmt->st; } @@ -64,13 +68,23 @@ void statement_append(struct grub2_statements *stmts, list_add_tail(&stmts->list, &stmt->list); } -struct grub2_word *create_word(struct grub2_parser *parser, const char *text, - bool expand, bool split) +struct grub2_word *create_word_text(struct grub2_parser *parser, + const char *text) { struct grub2_word *word = talloc(parser, struct grub2_word); + word->type = GRUB2_WORD_TEXT; word->text = talloc_strdup(word, text); - word->expand = expand; - word->split = split; + word->next = NULL; + return word; +} + +struct grub2_word *create_word_var(struct grub2_parser *parser, + const char *name, bool split) +{ + struct grub2_word *word = talloc(parser, struct grub2_word); + word->type = GRUB2_WORD_VAR; + word->var.name = talloc_strdup(word, name); + word->var.split = split; word->next = NULL; return word; }