diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2013-09-16 14:22:27 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2013-09-24 13:14:59 +0800 |
commit | 5c6263a12dd7f859daa0feba8b58a0558f0ff21c (patch) | |
tree | 143877d35b04f91b87ce461e2a58d8258276235f | |
parent | e492b596187d283cfbd65a098fe1b2d0dafa311e (diff) | |
download | talos-petitboot-5c6263a12dd7f859daa0feba8b58a0558f0ff21c.tar.gz talos-petitboot-5c6263a12dd7f859daa0feba8b58a0558f0ff21c.zip |
discover/grub2: Move parser-api definitions to parser.y
No need for a separate file here.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r-- | discover/grub2/parser-api.c | 111 | ||||
-rw-r--r-- | discover/grub2/parser.y | 109 |
2 files changed, 109 insertions, 111 deletions
diff --git a/discover/grub2/parser-api.c b/discover/grub2/parser-api.c deleted file mode 100644 index aa59978..0000000 --- a/discover/grub2/parser-api.c +++ /dev/null @@ -1,111 +0,0 @@ - -#include <talloc/talloc.h> - -#include "grub2.h" - -struct grub2_statements *create_statements(struct grub2_parser *parser) -{ - struct grub2_statements *stmts = talloc(parser, - struct grub2_statements); - list_init(&stmts->list); - return stmts; -} - -struct grub2_statement *create_statement_simple(struct grub2_parser *parser, - struct grub2_argv *argv) -{ - 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; -} - -struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser, - struct grub2_argv *argv, struct grub2_statements *stmts) -{ - struct grub2_statement_menuentry *stmt = - talloc(parser, struct grub2_statement_menuentry); - stmt->st.type = STMT_TYPE_MENUENTRY; - stmt->st.exec = statement_menuentry_execute; - stmt->argv = argv; - stmt->statements = stmts; - return &stmt->st; -} - -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_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; - return &stmt->st; -} - -struct grub2_statement *create_statement_block(struct grub2_parser *parser, - struct grub2_statements *stmts) -{ - 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; -} - -void statement_append(struct grub2_statements *stmts, - struct grub2_statement *stmt) -{ - if (!stmt) - return; - list_add_tail(&stmts->list, &stmt->list); -} - -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->split = false; - word->text = talloc_strdup(word, text); - word->next = NULL; - word->last = word; - 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->name = talloc_strdup(word, name); - word->split = split; - word->next = NULL; - word->last = word; - return word; -} - -struct grub2_argv *create_argv(struct grub2_parser *parser) -{ - struct grub2_argv *argv = talloc(parser, struct grub2_argv); - list_init(&argv->words); - return argv; -} - -void argv_append(struct grub2_argv *argv, struct grub2_word *word) -{ - list_add_tail(&argv->words, &word->argv_list); -} - -void word_append(struct grub2_word *w1, struct grub2_word *w2) -{ - w1->last->next = w2; - w1->last = w2; -} diff --git a/discover/grub2/parser.y b/discover/grub2/parser.y index eb61f55..0d02bc1 100644 --- a/discover/grub2/parser.y +++ b/discover/grub2/parser.y @@ -4,6 +4,8 @@ %parse-param { struct grub2_parser *parser } %{ +#include <talloc/talloc.h> + #include "grub2.h" #include "parser.h" #include "lexer.h" @@ -111,3 +113,110 @@ void yyerror(struct grub2_parser *parser, char const *s) yyget_lineno(parser->scanner), s, yyget_text(parser->scanner)); } + +struct grub2_statements *create_statements(struct grub2_parser *parser) +{ + struct grub2_statements *stmts = talloc(parser, + struct grub2_statements); + list_init(&stmts->list); + return stmts; +} + +struct grub2_statement *create_statement_simple(struct grub2_parser *parser, + struct grub2_argv *argv) +{ + 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; +} + +struct grub2_statement *create_statement_menuentry(struct grub2_parser *parser, + struct grub2_argv *argv, struct grub2_statements *stmts) +{ + struct grub2_statement_menuentry *stmt = + talloc(parser, struct grub2_statement_menuentry); + stmt->st.type = STMT_TYPE_MENUENTRY; + stmt->st.exec = statement_menuentry_execute; + stmt->argv = argv; + stmt->statements = stmts; + return &stmt->st; +} + +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_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; + return &stmt->st; +} + +struct grub2_statement *create_statement_block(struct grub2_parser *parser, + struct grub2_statements *stmts) +{ + 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; +} + +void statement_append(struct grub2_statements *stmts, + struct grub2_statement *stmt) +{ + if (!stmt) + return; + list_add_tail(&stmts->list, &stmt->list); +} + +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->split = false; + word->text = talloc_strdup(word, text); + word->next = NULL; + word->last = word; + 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->name = talloc_strdup(word, name); + word->split = split; + word->next = NULL; + word->last = word; + return word; +} + +struct grub2_argv *create_argv(struct grub2_parser *parser) +{ + struct grub2_argv *argv = talloc(parser, struct grub2_argv); + list_init(&argv->words); + return argv; +} + +void argv_append(struct grub2_argv *argv, struct grub2_word *word) +{ + list_add_tail(&argv->words, &word->argv_list); +} + +void word_append(struct grub2_word *w1, struct grub2_word *w2) +{ + w1->last->next = w2; + w1->last = w2; +} |