gshell: Fix parsing of comments in command lines.

Fixes bug 562907
This commit is contained in:
Dominique Leuenberger 2012-08-17 11:10:41 +02:00 committed by Matthias Clasen
parent 9bca5bb49f
commit 6e4acf44b3
2 changed files with 20 additions and 0 deletions

View File

@ -520,6 +520,24 @@ tokenize_command_line (const gchar *command_line,
/* FALL THRU */
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 (&current_token);
g_string_append_c (current_token, *p);
break;
}
break;
case '\\':
current_quote = *p;
break;

View File

@ -59,6 +59,8 @@ static CmdlineTest cmdline_tests[] =
{ "foo \"yada yada \\$\\\"\"", 2, { "foo", "yada yada $\"", NULL }, -1 },
{ "foo \"c:\\\\\"", 2, { "foo", "c:\\", 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 baz", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },
{ "foo '\"bar\" baz", 0, { NULL }, G_SHELL_ERROR_BAD_QUOTING },