pull-in block-arg again

This commit is contained in:
BVK Chaitanya 2010-07-22 05:34:38 +05:30
commit 8527be0c5d
6 changed files with 79 additions and 5 deletions

View file

@ -42,6 +42,10 @@ struct grub_script
unsigned refcnt;
struct grub_script_mem *mem;
struct grub_script_cmd *cmd;
/* Other grub_script's from block arguments. */
struct grub_script *siblings;
struct grub_script *children;
};
typedef enum
@ -207,6 +211,9 @@ struct grub_parser_param
/* The memory that was used while parsing and scanning. */
struct grub_script_mem *memused;
/* The block argument scripts. */
struct grub_script *scripts;
/* The result of the parser. */
struct grub_script_cmd *parsed;
@ -331,6 +338,7 @@ grub_script_function_t grub_script_function_create (struct grub_script_arg *func
struct grub_script *cmd);
void grub_script_function_remove (const char *name);
grub_script_function_t grub_script_function_find (char *functionname);
grub_err_t grub_script_function_call (grub_script_function_t func,
int argc, char **args);
@ -340,13 +348,17 @@ grub_script_execute_arglist_to_argv (struct grub_script_arglist *arglist, int *c
static inline struct grub_script *
grub_script_get (struct grub_script *script)
{
script->refcnt++;
if (script)
script->refcnt++;
return script;
}
static inline void
grub_script_put (struct grub_script *script)
{
if (! script)
return;
if (script->refcnt == 0)
grub_script_free (script);
else