From 6a1829943f5e0482cd909f0d2bb0d250675039b6 Mon Sep 17 00:00:00 2001 From: CyberLeo Date: Mon, 16 Apr 2012 10:09:32 -0500 Subject: [PATCH] ipcc: handle multiple arguments for browser and editor; canonicalize filenames to avoid absolute symlinks breaking paths outside chroot --- ipcc | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/ipcc b/ipcc index 7104ccf..26dc844 100755 --- a/ipcc +++ b/ipcc @@ -14,6 +14,26 @@ pebkac() { exit 1 } +do_editor() { + while [ "${1}" ] + do + arg="${1}" + arg="$(readlink -f "${arg}")" + echo "editor ${arg}" > "${jipc}" + shift + done +} + +do_browser() { + while [ "${1}" ] + do + arg="${1}" + echo "${arg}" | grep -vq '://' && arg="$(readlink -f "${arg}")" + echo "browser ${arg}" > "${jipc}" + shift + done +} + case "$(basename "${0}")" in ipcc) cmd="${1}"; shift ;; ee) cmd="editor" ;; @@ -23,12 +43,7 @@ esac arg="${1}" case "${cmd}" in -editor|edit|ee) - echo "${arg}" | grep -q '^/' || arg="$(pwd)/${arg}" - echo "editor ${arg}" > "${jipc}" - ;; -browser|browse|ff) - echo "${arg}" | grep -vq "://" && echo "${arg}" | grep -vq '^/' && arg="$(pwd)/${arg}" - echo "browser ${arg}" > "${jipc}" ;; +editor|edit|ee) do_editor "${@}" ;; +browser|browse|ff) do_browser "${@}" ;; *) pebkac ;; esac -- 2.42.0