Let the caller decide how to launch helpers
In the end, we don't need to impose any policy on it, and it removes a level of quoting, as well as an `eval`.
This commit is contained in:
parent
6aa4bd2ff5
commit
63e7895905
|
@ -64,7 +64,7 @@ sdn-navigate () {
|
||||||
# helpers after the terminal has been resized while running sdn
|
# helpers after the terminal has been resized while running sdn
|
||||||
command true
|
command true
|
||||||
|
|
||||||
eval "exec </dev/tty; $helper" || break
|
/bin/sh -c "$helper" </dev/tty || break
|
||||||
done
|
done
|
||||||
# ... possibly zle-line-init
|
# ... possibly zle-line-init
|
||||||
zle reset-prompt
|
zle reset-prompt
|
||||||
|
@ -86,7 +86,7 @@ function sdn-navigate
|
||||||
test -z "$cd" || cd "$cd"
|
test -z "$cd" || cd "$cd"
|
||||||
test -z "$insert" || commandline --insert "$insert "
|
test -z "$insert" || commandline --insert "$insert "
|
||||||
test -z "$helper" && break
|
test -z "$helper" && break
|
||||||
eval $helper || break
|
/bin/sh -c "$helper" || break
|
||||||
end
|
end
|
||||||
commandline --function repaint
|
commandline --function repaint
|
||||||
end
|
end
|
||||||
|
@ -111,7 +111,7 @@ sdn-navigate () {
|
||||||
((SDN_P=SDN_P+${#insert}+1))
|
((SDN_P=SDN_P+${#insert}+1))
|
||||||
}
|
}
|
||||||
[[ -z "$helper" ]] && break
|
[[ -z "$helper" ]] && break
|
||||||
eval "$helper" || break
|
/bin/sh -c "$helper" || break
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
sdn-restore () {
|
sdn-restore () {
|
||||||
|
@ -132,7 +132,7 @@ To start using this navigator, put the following in your 'rc.elv':
|
||||||
use str
|
use str
|
||||||
edit:insert:binding[Alt-o] = {
|
edit:insert:binding[Alt-o] = {
|
||||||
local:reesc = [posix]{ str:replace "'\\''" "''" $posix }
|
local:reesc = [posix]{ str:replace "'\\''" "''" $posix }
|
||||||
local:posix = [cmd]{ eval ($reesc $cmd)" </dev/tty >/dev/tty 2>&1" }
|
local:posix = [cmd]{ /bin/sh -c $cmd </dev/tty >/dev/tty 2>&1 }
|
||||||
|
|
||||||
# XXX: the -dot is not a stable API, and may hence break soon
|
# XXX: the -dot is not a stable API, and may hence break soon
|
||||||
local:buffer = $edit:current-command
|
local:buffer = $edit:current-command
|
||||||
|
|
3
sdn.cpp
3
sdn.cpp
|
@ -861,8 +861,7 @@ fun run_program (initializer_list<const char*> list, const string &filename) {
|
||||||
for (auto program : list)
|
for (auto program : list)
|
||||||
if ((found = program))
|
if ((found = program))
|
||||||
break;
|
break;
|
||||||
g.ext_helper = "/bin/sh -c " +
|
g.ext_helper = found + (" " + shell_escape (filename));
|
||||||
shell_escape (string (found) + " " + shell_escape (filename));
|
|
||||||
g.quitting = true;
|
g.quitting = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue