struct grub2_statements *statements;
};
-struct grub2_command {
- const char *name;
- int (*exec)(struct grub2_script *script,
- int argc, char *argv[]);
- struct list_item list;
-};
struct grub2_script {
struct grub2_statements *statements;
struct list environment;
- struct list commands;
struct list symtab;
struct discover_context *ctx;
struct discover_boot_option *opt;
struct grub2_script *script;
};
-struct grub2_root {
- char *uuid;
-};
+/* type for builtin functions */
+typedef int (*grub2_function)(struct grub2_script *script, void *data,
+ int argc, char *argv[]);
struct grub2_statements *create_statements(struct grub2_parser *parser);
void script_env_set(struct grub2_script *script,
const char *name, const char *value);
-void script_register_command(struct grub2_script *script,
- struct grub2_command *command);
-
-struct grub2_command *script_lookup_command(struct grub2_script *script,
- const char *name);
+void script_register_function(struct grub2_script *script,
+ const char *name, grub2_function fn, void *data);
void register_builtins(struct grub2_script *script);
/* resources */
struct resource *create_grub2_resource(void *ctx,
struct discover_device *orig_device,
- struct grub2_root *root, const char *path);
+ const char *root, const char *path);
bool resolve_grub2_resource(struct device_handler *handler,
struct resource *res);