I agree with the race fix of JG, but I dislike the SUSV3-breaking find, and I don't care about PATH changes, keep it simple, stupid

main
Anselm R. Garbe 2007-05-24 10:34:44 +02:00
parent 53e92b5c17
commit 3a9f3a51ce
1 changed files with 17 additions and 17 deletions

View File

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