pre_path()ing directories with spaces is broken due to bad quoting.

This diff takes care of that by properly passing double quotes through
eval and quoting the arguments for no_path() individually.

Feedback?

diff --git a/etc/ksh.kshrc b/etc/ksh.kshrc
index 5b5bd040f79..66736da5e11 100644
--- a/etc/ksh.kshrc
+++ b/etc/ksh.kshrc
@@ -131,14 +131,14 @@ function no_path {
 }
 # if $1 exists and is not in path, append it
 function add_path {
-       [[ -d ${1:-.} ]] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
+       [[ -d "${1:-.}" ]] && no_path "$@" && eval 
${2:-PATH}=\"\$${2:-PATH}:$1\"
 }
 # if $1 exists and is not in path, prepend it
 function pre_path {
-       [[ -d ${1:-.} ]] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
+       [[ -d "${1:-.}" ]] && no_path "$@" && eval 
${2:-PATH}=\"$1:\$${2:-PATH}\"
 }
 # if $1 is in path, remove it
 function del_path {
-       no_path $* || eval ${2:-PATH}=$(eval echo :'$'${2:-PATH}: |
-               sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;")
+       no_path "$1" || eval ${2:-PATH}=\"$(eval echo :'$'${2:-PATH}: |
+               sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;")\"
 }

Reply via email to