all repos — fluxbox @ a11035440c30eda5b14118694f6f9aa15c0105ea

custom fork of the fluxbox windowmanager

fix fbsetbg in combination with picky shells

in *BSD, /bin/sh is Almquist Shell(ash). the 'hash' built-in command of ash
returns 0, always. 'hash' is not usable for find_it() function in
util/fbsetbg and util/fluxbox-generate_menu.in.

this patch changes the behavior of find_it(): when 'hash' is detected to
not work correctly, switch back to 'which'.


this patch is the work of Yamashiro, Jun and appeared first as patch-160
on sourceforge: https://sourceforge.net/p/fluxbox/patches/160/. i submit
it on behalf of the author.
Mathias Gumz akira@fluxbox.org
commit

a11035440c30eda5b14118694f6f9aa15c0105ea

parent

5d90b7984cb73ede2763346382fb6e038ae5d16d

2 files changed, 36 insertions(+), 10 deletions(-)

jump to
M util/fbsetbgutil/fbsetbg

@@ -133,9 +133,20 @@

EOF } -find_it() { - [ -n "$1" ] && hash $1 2> /dev/null -} +# some shell's hash returns 0 always +if hash this_program_does_not_exist-no_really-aA1zZ9 > /dev/null 2>&1; then + # can't rely on return value + # ash / ksh + find_it() { + which "$1" > /dev/null 2>&1 + } +else + # can rely on return value + # bash / dash / zsh / sh on Solaris + find_it() { + [ -n "$1" ] && hash "$1" 2> /dev/null + } +fi message() {
M util/fluxbox-generate_menu.inutil/fluxbox-generate_menu.in

@@ -145,13 +145,28 @@ ;;

esac } -find_it() { - [ -n "$1" ] && hash $1 2> /dev/null && shift && "$@" -} +# some shell's hash returns 0 always +if hash this_program_does_not_exist-no_really-aA1zZ9 > /dev/null 2>&1; then + # can't rely on return value + # ash / ksh + find_it() { + which "$1" > /dev/null 2>&1 && shift && "$@" + } + + find_it_options() { + which "$1" > /dev/null 2>&1 + } +else + # can rely on return value + # bash / dash / zsh / sh on Solaris + find_it() { + [ -n "$1" ] && hash "$1" 2> /dev/null && shift && "$@" + } -find_it_options() { - [ -n "$1" ] && hash $1 2> /dev/null -} + find_it_options() { + [ -n "$1" ] && hash "$1" 2> /dev/null + } +fi #echo "replaceWithinString: $1, $2, $3" >&2 #echo ${1//$2/$3} # causes error in BSD even though not used

@@ -203,7 +218,7 @@ entry_icon="$2/${BASENAME%.*}.xpm"

if [ -f "${entry_icon}" ]; then : echo "File exists. To overwrite, type: convert \"$1\" \"$entry_icon\"" >&2 else - if hash convert 2> /dev/null; then + if find_it_options convert; then convert "$1" "$entry_icon" # echo convert "$1" , "$entry_icon" >> $ICONMAPPING else