grub_reader_getline_t getline)
{
int len;
-- char *script2;
YY_BUFFER_STATE buffer;
struct grub_lexer_param *lexerstate;
grub_free (lexerstate);
return 0;
}
- buffer = 0;
- script = script ? : "\n";
- len = grub_strlen (script);
-
- if (len != 0 && script[len - 1] == '\n')
- {
- buffer = yy_scan_string (script, lexerstate->yyscanner);
- }
- else
- {
- script2 = append_newline (script);
- if (script2)
- {
- buffer = yy_scan_string (script2, lexerstate->yyscanner);
- grub_free (script2);
- }
- }
+
+ yyset_extra (parser, lexerstate->yyscanner);
+ parser->lexerstate = lexerstate;
- if (!buffer)
+ if (grub_script_lexer_yywrap (parser, script ?: "\n"))
{
+ parser->lexerstate = 0;
yylex_destroy (lexerstate->yyscanner);
grub_free (lexerstate->yyscanner);
-
grub_free (lexerstate->text);
grub_free (lexerstate);
return 0;