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:
		
							
								
								
									
										34
									
								
								dmenu_path
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
					Anselm R. Garbe