dmenu

my fork of dmenu
Index Commits Files Refs README LICENSE
commit 3a9f3a51ce25717813da7321d4771dca11a25af8
parent 53e92b5c1797ae5d259942b0a3f20a63c1a02f1e
Author: Anselm R. Garbe <arg@suckless.org>
Date:   Thu, 24 May 2007 10:34:44 +0200

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
Diffstat:
Mdmenu_path | 34+++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/dmenu_path b/dmenu_path
@@ -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