Ticket #1425 (External editor won't open if there are spaces in EDITOR variable)

Fix issue: in function src/utillinux.c:my_system() added code for splitting
command line by spaces, use just first token as argument to function execlp()

Signed-off-by: Slava Zanko <slavazanko@gmail.com>
This commit is contained in:
Slava Zanko 2009-08-04 14:55:41 +03:00
parent 05b590d225
commit 4a5f02698e

View File

@ -163,7 +163,25 @@ int my_system (int flags, const char *shell, const char *command)
if (flags & EXECUTE_AS_SHELL) if (flags & EXECUTE_AS_SHELL)
execl (shell, shell, "-c", command, (char *) NULL); execl (shell, shell, "-c", command, (char *) NULL);
else else
execlp (shell, shell, command, (char *) NULL); {
gchar **shell_tokens, *only_cmd;
shell_tokens = g_strsplit(shell," ", 2);
if (shell_tokens == NULL)
only_cmd = shell;
else
only_cmd = (*shell_tokens) ? *shell_tokens: shell;
execlp (only_cmd, shell, command, (char *) NULL);
/*
execlp will replace current process,
therefore no sence in call of g_strfreev().
But this keeped for estetic reason :)
*/
g_strfreev(shell_tokens);
}
_exit (127); /* Exec error */ _exit (127); /* Exec error */
} else { } else {