We'll need the context to add boot options.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
};
struct grub2_script {
- struct grub2_statements *statements;
- struct list environment;
- struct list commands;
- struct list symtab;
+ struct grub2_statements *statements;
+ struct list environment;
+ struct list commands;
+ struct list symtab;
+ struct discover_context *ctx;
};
struct grub2_parser {
int statement_menuentry_execute(struct grub2_script *script,
struct grub2_statement *statement);
-struct grub2_script *create_script(void *ctx);
+struct grub2_script *create_script(struct grub2_parser *parser,
+ struct discover_context *ctx);
const char *script_env_get(struct grub2_script *script, const char *name);
struct resource *res);
/* external parser api */
-struct grub2_parser *grub2_parser_create(void *ctx);
+struct grub2_parser *grub2_parser_create(struct discover_context *ctx);
void grub2_parser_parse(struct grub2_parser *parser, char *buf, int len);
#endif /* GRUB2_H */
w1->last = w2;
}
-struct grub2_parser *grub2_parser_create(void *ctx)
+struct grub2_parser *grub2_parser_create(struct discover_context *ctx)
{
struct grub2_parser *parser;
parser = talloc(ctx, struct grub2_parser);
yylex_init_extra(parser, &parser->scanner);
- parser->script = create_script(parser);
+ parser->script = create_script(parser, ctx);
return parser;
}
statements_execute(script, script->statements);
}
-struct grub2_script *create_script(void *ctx)
+struct grub2_script *create_script(struct grub2_parser *parser,
+ struct discover_context *ctx)
{
struct grub2_script *script;
- script = talloc(ctx, struct grub2_script);
+ script = talloc(parser, struct grub2_script);
init_env(script);
+ script->ctx = ctx;
+
list_init(&script->commands);
register_builtins(script);