@@ -28,26 +28,39 @@ UNAME_S="${UNAME_S:-"$(uname -s)"}"
28
28
main () {
29
29
local type bin key0 value0 key1 value1
30
30
31
+ search_in () {
32
+ local saved_path name
33
+ saved_path=" $PATH "
34
+ export PATH=" $1 "
35
+ for type in client server; do
36
+ for name in " ${2} _$type " " ${2} -$type " " ${type} _${3} _$4 " ; do
37
+ if hash " $name " 2> /dev/null; then
38
+ export PATH=" $saved_path "
39
+ bin=" $1 /$name "
40
+ return
41
+ fi
42
+ done
43
+ if [ " $4 " = amd64 ]; then
44
+ name=" ${type} _${3} _386"
45
+ if hash " $name " 2> /dev/null; then
46
+ export PATH=" $saved_path "
47
+ bin=" $1 /$name "
48
+ return
49
+ fi
50
+ fi
51
+ done
52
+ export PATH=" $saved_path "
53
+ return 1
54
+ }
55
+
31
56
findBinary () {
32
- local os suffix name arch cwd bn
57
+ local os arch bn
33
58
os=$( printf " %s" " $UNAME_S " | awk ' {print tolower($0)}' )
34
- case " $os " in
35
- MINGW* |CYGWIN* |mingw* |cygwin* ) os=windows; suffix=" .exe" ;;
36
- esac
59
+ case " $os " in MINGW* | CYGWIN* | mingw* | cygwin* ) os=windows ;; * ) ;; esac
37
60
arch=" $( printf " %s" " $UNAME_M " | sed -e ' s/^[Ii][3-6]86$/386/;s/^[Xx]86$/386/;s/^[Xx]\(86[-_]\)\{0,1\}64$/amd64/;s/^[Aa][Mm][Dd]64$/amd64/' ) "
38
- cwd=" $( pwd) "
39
61
bn=" ${BASENAME% .* } "
40
62
41
- for type in client server; do
42
- for name in " ${bn} _$type " " ${bn} -$type " " ${type} _${os} _$arch " ; do
43
- bin=" $cwd /$name$suffix "
44
- if [ -f " $bin " ] && [ -x " $bin " ]; then return ; fi
45
- done
46
- if [ " $arch " = " amd64" ]; then
47
- bin=" $cwd /${type} _${os} _386$suffix "
48
- if [ -f " $bin " ] && [ -x " $bin " ]; then return ; fi
49
- fi
50
- done
63
+ if search_in . " $bn " " $os " " $arch " ; then return ; fi
51
64
52
65
for type in client server; do
53
66
for bin in " ${bn} _$type " " ${bn} -$type " ; do
0 commit comments