applied reject no match patch
[dmenu.git] / dmenu_path
index f64c82e..3a7cda7 100755 (executable)
@@ -1,9 +1,13 @@
 #!/bin/sh
+
+cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
+cache="$cachedir/dmenu_run"
+
+[ ! -e "$cachedir" ] && mkdir -p "$cachedir"
+
 IFS=:
-for dir in $PATH
-do
-       for file in "$dir"/*
-       do
-               test -x "$file" && echo "${file##*/}"
-       done
-done | sort | uniq
+if stest -dqr -n "$cache" $PATH; then
+       stest -flx $PATH | sort -u | tee "$cache"
+else
+       cat "$cache"
+fi