mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 18:21:04 +00:00
parse: only escape spaces outside of quotes
When we escape spaces to keep arguments together, only escape when the space is outside a "" string. See https://bugzilla.gnome.org/show_bug.cgi?id=673319
This commit is contained in:
parent
03fae7e32e
commit
fd144c02ab
1 changed files with 9 additions and 1 deletions
|
@ -175,14 +175,21 @@ static gchar *
|
|||
_gst_parse_escape (const gchar * str)
|
||||
{
|
||||
GString *gstr = NULL;
|
||||
gboolean in_quotes;
|
||||
|
||||
g_return_val_if_fail (str != NULL, NULL);
|
||||
|
||||
gstr = g_string_sized_new (strlen (str));
|
||||
|
||||
in_quotes = FALSE;
|
||||
|
||||
while (*str) {
|
||||
if (*str == ' ')
|
||||
if (*str == '"' && (!in_quotes || (in_quotes && *(str - 1) != '\\')))
|
||||
in_quotes = !in_quotes;
|
||||
|
||||
if (*str == ' ' && !in_quotes)
|
||||
g_string_append_c (gstr, '\\');
|
||||
|
||||
g_string_append_c (gstr, *str);
|
||||
str++;
|
||||
}
|
||||
|
@ -244,6 +251,7 @@ gst_parse_launchv_full (const gchar ** argv, GstParseContext * context,
|
|||
argvp = argv;
|
||||
while (*argvp) {
|
||||
arg = *argvp;
|
||||
GST_DEBUG ("eascaping argument %s", arg);
|
||||
tmp = _gst_parse_escape (arg);
|
||||
g_string_append (str, tmp);
|
||||
g_free (tmp);
|
||||
|
|
Loading…
Reference in a new issue