mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-23 20:46:14 +01:00
gshell: Fix parsing of comments in command lines.
Fixes bug 562907
This commit is contained in:
parent
9bca5bb49f
commit
6e4acf44b3
@ -520,6 +520,24 @@ tokenize_command_line (const gchar *command_line,
|
|||||||
/* FALL THRU */
|
/* FALL THRU */
|
||||||
|
|
||||||
case '#':
|
case '#':
|
||||||
|
if (p == command_line)
|
||||||
|
{ /* '#' was the first char */
|
||||||
|
current_quote = *p;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch(*(p-1))
|
||||||
|
{
|
||||||
|
case ' ':
|
||||||
|
case '\n':
|
||||||
|
case '\0':
|
||||||
|
current_quote = *p;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ensure_token (¤t_token);
|
||||||
|
g_string_append_c (current_token, *p);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case '\\':
|
case '\\':
|
||||||
current_quote = *p;
|
current_quote = *p;
|
||||||
break;
|
break;
|
||||||
|
@ -59,6 +59,8 @@ static CmdlineTest cmdline_tests[] =
|
|||||||
{ "foo \"yada yada \\$\\\"\"", 2, { "foo", "yada yada $\"", NULL }, -1 },
|
{ "foo \"yada yada \\$\\\"\"", 2, { "foo", "yada yada $\"", NULL }, -1 },
|
||||||
{ "foo \"c:\\\\\"", 2, { "foo", "c:\\", NULL }, -1 },
|
{ "foo \"c:\\\\\"", 2, { "foo", "c:\\", NULL }, -1 },
|
||||||
{ "foo # bla bla bla\n bar", 2, { "foo", "bar", NULL }, -1 },
|
{ "foo # bla bla bla\n bar", 2, { "foo", "bar", NULL }, -1 },
|
||||||
|
{ "foo a#b", 2, { "foo", "a#b", NULL }, -1 },
|
||||||
|
{ "#foo", 0, { NULL }, -1 },
|
||||||
{ "foo bar \\", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },
|
{ "foo bar \\", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },
|
||||||
{ "foo 'bar baz", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },
|
{ "foo 'bar baz", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },
|
||||||
{ "foo '\"bar\" baz", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },
|
{ "foo '\"bar\" baz", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },
|
||||||
|
Loading…
Reference in New Issue
Block a user