aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl-core.c
diff options
context:
space:
mode:
authorGravatar Rob <rob.manea@gmail.com>2009-12-02 22:24:29 +0100
committerGravatar Rob <rob.manea@gmail.com>2009-12-02 22:24:29 +0100
commite81b577aefac01eb2219ee048d84c1ee21106e15 (patch)
tree661be1dddea833bd0bfeae1776c5bebfd428d2ae /uzbl-core.c
parent9b99c3c8245065fe92b90d8b9d5f78cd3044177c (diff)
always execute @(...)@ expansion in a shell
Diffstat (limited to 'uzbl-core.c')
-rw-r--r--uzbl-core.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/uzbl-core.c b/uzbl-core.c
index f224c60..edb3e54 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -267,8 +267,14 @@ expand(const char *s, guint recurse) {
else if(recurse != 1 &&
etype == EXP_EXPR) {
mycmd = expand(ret, 1);
- g_spawn_command_line_sync(mycmd, &cmd_stdout, NULL, NULL, &err);
+ gchar *quoted = g_shell_quote(mycmd);
+ gchar *tmp = g_strdup_printf("%s %s",
+ uzbl.behave.shell_cmd?uzbl.behave.shell_cmd:"/bin/sh -c",
+ quoted);
+ g_spawn_command_line_sync(tmp, &cmd_stdout, NULL, NULL, &err);
g_free(mycmd);
+ g_free(quoted);
+ g_free(tmp);
if (err) {
g_printerr("error on running command: %s\n", err->message);