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