Changed dmenu_path (fixed race, improved speed, check that $PATH is the same as the last run).

This commit is contained in:
Kris Maglione 2007-05-23 16:42:51 -04:00
parent dfe95cb546
commit c04b688cc0
1 changed files with 17 additions and 16 deletions

View File

@ -1,25 +1,26 @@
#!/bin/sh #!/bin/sh -f
CACHE=$HOME/.dmenu_cache CACHE=$HOME/.dmenu_cache
IFS=: IFS=:
qfind() {
find "$@" 2>/dev/null
}
uptodate() { uptodate() {
test ! -f $CACHE && return 1 test -f $CACHE &&
for dir in $PATH test "$(echo "$PATH")" = "$(sed 1q "$CACHE")" &&
do qfind $PATH -maxdepth 0 -newer $CACHE
test $dir -nt $CACHE && return 1 }
done
return 0
}
if ! uptodate if ! uptodate
then then
for dir in $PATH {
do echo "$PATH"
for file in "$dir"/* qfind $PATH -type f -maxdepth 1 -perm -u+x -o -perm -g+x -o -perm -o+x |
do sed 's,.*/,,' | sort | uniq
test -x "$file" && echo "${file##*/}" } > $CACHE.$pid
done mv $CACHE.$pid $CACHE
done | sort | uniq > $CACHE
fi fi
cat $CACHE tail -n +2 $CACHE