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
This commit is contained in:
parent
53e92b5c17
commit
3a9f3a51ce
34
dmenu_path
34
dmenu_path
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user