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