Remove nested functions from script reading and parsing.
* grub-core/kern/parser.c (grub_parser_split_cmdline): Add getline_data argument, passed to getline. * grub-core/kern/rescue_parser.c (grub_rescue_parse_line): Add getline_data argument, passed to grub_parser_split_cmdline. * grub-core/script/lexer.c (grub_script_lexer_yywrap): Pass lexerstate->getline_data to lexerstate->getline. (grub_script_lexer_init): Add getline_data argument, saved in lexerstate->getline_data. * grub-core/script/main.c (grub_normal_parse_line): Add getline_data argument, passed to grub_script_parse. * grub-core/script/script.c (grub_script_parse): Add getline_data argument, passed to grub_script_lexer_init. * include/grub/parser.h (grub_parser_split_cmdline): Update prototype. Update all callers to pass appropriate getline data. (struct grub_parser.parse_line): Likewise. (grub_rescue_parse_line): Likewise. * include/grub/reader.h (grub_reader_getline_t): Add void * argument. * include/grub/script_sh.h (struct grub_lexer_param): Add getline_data member. (grub_script_parse): Update prototype. Update all callers to pass appropriate getline data. (grub_script_lexer_init): Likewise. (grub_normal_parse_line): Likewise. * grub-core/commands/legacycfg.c (legacy_file_getline): Add unused data argument. * grub-core/kern/parser.c (grub_parser_execute: getline): Make static instead of nested. Rename to ... (grub_parser_execute_getline): ... this. * grub-core/kern/rescue_reader.c (grub_rescue_read_line): Add unused data argument. * grub-core/normal/main.c (read_config_file: getline): Make static instead of nested. Rename to ... (read_config_file_getline): ... this. (grub_normal_read_line): Add unused data argument. * grub-core/script/execute.c (grub_script_execute_sourcecode: getline): Make static instead of nested. Rename to ... (grub_script_execute_sourcecode_getline): ... this. * util/grub-script-check.c (main: get_config_line): Make static instead of nested.
This commit is contained in:
parent
d0d4b8a063
commit
09fd6d8293
15 changed files with 238 additions and 148 deletions
|
@ -161,6 +161,9 @@ struct grub_lexer_param
|
|||
expected, but not available. */
|
||||
grub_reader_getline_t getline;
|
||||
|
||||
/* Caller-supplied data passed to `getline'. */
|
||||
void *getline_data;
|
||||
|
||||
/* A reference counter. If this is >0 it means that the parser
|
||||
expects more tokens and `getline' should be called to fetch more.
|
||||
Otherwise the lexer can stop processing if the current buffer is
|
||||
|
@ -287,14 +290,16 @@ grub_script_arg_add (struct grub_parser_param *state,
|
|||
grub_script_arg_type_t type, char *str);
|
||||
|
||||
struct grub_script *grub_script_parse (char *script,
|
||||
grub_reader_getline_t getline);
|
||||
grub_reader_getline_t getline,
|
||||
void *getline_data);
|
||||
void grub_script_free (struct grub_script *script);
|
||||
struct grub_script *grub_script_create (struct grub_script_cmd *cmd,
|
||||
struct grub_script_mem *mem);
|
||||
|
||||
struct grub_lexer_param *grub_script_lexer_init (struct grub_parser_param *parser,
|
||||
char *script,
|
||||
grub_reader_getline_t getline);
|
||||
grub_reader_getline_t getline,
|
||||
void *getline_data);
|
||||
void grub_script_lexer_fini (struct grub_lexer_param *);
|
||||
void grub_script_lexer_ref (struct grub_lexer_param *);
|
||||
void grub_script_lexer_deref (struct grub_lexer_param *);
|
||||
|
@ -380,7 +385,8 @@ char **
|
|||
grub_script_execute_arglist_to_argv (struct grub_script_arglist *arglist, int *count);
|
||||
|
||||
grub_err_t
|
||||
grub_normal_parse_line (char *line, grub_reader_getline_t getline);
|
||||
grub_normal_parse_line (char *line,
|
||||
grub_reader_getline_t getline, void *getline_data);
|
||||
|
||||
static inline struct grub_script *
|
||||
grub_script_ref (struct grub_script *script)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue