+2012-06-02 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/kern/parser.c (grub_parser_state_transitions): Handle \t.
+ (grub_parser_cmdline_state): Likewise.
+ (grub_parser_split_cmdline): Likewise.
+
2012-06-02 Vladimir Serbinenko <phcoder@gmail.com>
* util/getroot.c (grub_guess_root_devices): Don't canonicalise
{GRUB_PARSER_STATE_VAR, GRUB_PARSER_STATE_VARNAME2, '{', 0},
{GRUB_PARSER_STATE_VAR, GRUB_PARSER_STATE_VARNAME, 0, 1},
{GRUB_PARSER_STATE_VARNAME, GRUB_PARSER_STATE_TEXT, ' ', 1},
+ {GRUB_PARSER_STATE_VARNAME, GRUB_PARSER_STATE_TEXT, '\t', 1},
{GRUB_PARSER_STATE_VARNAME2, GRUB_PARSER_STATE_TEXT, '}', 0},
{GRUB_PARSER_STATE_QVAR, GRUB_PARSER_STATE_QVARNAME2, '{', 0},
{GRUB_PARSER_STATE_QVAR, GRUB_PARSER_STATE_QVARNAME, 0, 1},
{GRUB_PARSER_STATE_QVARNAME, GRUB_PARSER_STATE_TEXT, '\"', 0},
{GRUB_PARSER_STATE_QVARNAME, GRUB_PARSER_STATE_DQUOTE, ' ', 1},
+ {GRUB_PARSER_STATE_QVARNAME, GRUB_PARSER_STATE_DQUOTE, '\t', 1},
{GRUB_PARSER_STATE_QVARNAME2, GRUB_PARSER_STATE_DQUOTE, '}', 0},
{0, 0, 0, 0}
if (transition->input == c)
break;
- if (transition->input == ' ' && !grub_isalpha (c)
+ if (grub_isspace (transition->input) && !grub_isalpha (c)
&& !grub_isdigit (c) && c != '_')
break;
else
{
if (newstate == GRUB_PARSER_STATE_TEXT
- && state != GRUB_PARSER_STATE_ESC && use == ' ')
+ && state != GRUB_PARSER_STATE_ESC && grub_isspace (use))
{
/* Don't add more than one argument if multiple
spaces are used. */