| @ -1,26 +1,26 @@ | |||||
| #!/bin/sh -f | |||||
| #!/bin/sh | |||||
| CACHE=$HOME/.dmenu_cache | CACHE=$HOME/.dmenu_cache | ||||
| IFS=: | 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 | if ! uptodate | ||||
| then | 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 | fi | ||||
| tail -n +2 $CACHE | |||||
| cat $CACHE | |||||