summaryrefslogtreecommitdiff
path: root/plugins/wd/wd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/wd/wd.sh')
-rw-r--r--plugins/wd/wd.sh14
1 files changed, 11 insertions, 3 deletions
diff --git a/plugins/wd/wd.sh b/plugins/wd/wd.sh
index 802ed10ee..618995c63 100644
--- a/plugins/wd/wd.sh
+++ b/plugins/wd/wd.sh
@@ -183,6 +183,11 @@ wd_add()
then
wd_remove $point > /dev/null
printf "%q:%s\n" "${point}" "${PWD/#$HOME/~}" >> $WD_CONFIG
+ if (whence sort >/dev/null); then
+ local config_tmp=$(mktemp "${TMPDIR:-/tmp}/wd.XXXXXXXXXX")
+ # use 'cat' below to ensure we respect $WD_CONFIG as a symlink
+ sort -o "${config_tmp}" $WD_CONFIG && cat "${config_tmp}" > $WD_CONFIG && rm "${config_tmp}"
+ fi
wd_export_static_named_directories
@@ -342,8 +347,8 @@ wd_clean() {
wd_export_static_named_directories() {
if [[ -z $WD_SKIP_EXPORT ]]
then
- grep '^[0-9a-zA-Z_-]\+:' "$WD_CONFIG" | sed -e "s,~,$HOME," -e 's/:/=/' | while read warpdir ; do
- hash -d "$warpdir"
+ command grep '^[0-9a-zA-Z_-]\+:' "$WD_CONFIG" | sed -e "s,~,$HOME," -e 's/:/=/' | while read warpdir ; do
+ hash -d "$warpdir"
done
fi
}
@@ -430,7 +435,10 @@ else
break
;;
"-r"|"--remove"|"rm")
- wd_remove $2
+ # Loop over all arguments after "rm", separated by whitespace
+ for pointname in "${@:2}" ; do
+ wd_remove $pointname
+ done
break
;;
"-l"|"list")