Merge branch 'vendor/EXPAT'
[dragonfly.git] / contrib / expat / conftools / PrintPath
1 #!/bin/sh
2 # Look for program[s] somewhere in $PATH.
3 #
4 # Options:
5 #  -s
6 #    Do not print out full pathname. (silent)
7 #  -pPATHNAME
8 #    Look in PATHNAME instead of $PATH
9 #
10 # Usage:
11 #  PrintPath [-s] [-pPATHNAME] program [program ...]
12 #
13 # Initially written by Jim Jagielski for the Apache configuration mechanism
14 #  (with kudos to Kernighan/Pike)
15 #
16 # This script falls under the Apache License.
17 # See http://www.apache.org/licenses/LICENSE
18
19 ##
20 # Some "constants"
21 ##
22 pathname=$PATH
23 echo="yes"
24
25 ##
26 # Find out what OS we are running for later on
27 ##
28 os=`(uname) 2>/dev/null`
29
30 ##
31 # Parse command line
32 ##
33 for args in $*
34 do
35     case $args in
36         -s  ) echo="no" ;;
37         -p* ) pathname="`echo $args | sed 's/^..//'`" ;;
38         *   ) programs="$programs $args" ;;
39     esac
40 done
41
42 ##
43 # Now we make the adjustments required for OS/2 and everyone
44 # else :)
45 #
46 # First of all, all OS/2 programs have the '.exe' extension.
47 # Next, we adjust PATH (or what was given to us as PATH) to
48 # be whitespace separated directories.
49 # Finally, we try to determine the best flag to use for
50 # test/[] to look for an executable file. OS/2 just has '-r'
51 # but with other OSs, we do some funny stuff to check to see
52 # if test/[] knows about -x, which is the preferred flag.
53 ##
54
55 if [ "x$os" = "xOS/2" ]
56 then
57     ext=".exe"
58     pathname=`echo -E $pathname |
59      sed 's/^;/.;/
60           s/;;/;.;/g
61           s/;$/;./
62           s/;/ /g
63           s/\\\\/\\//g' `
64     test_exec_flag="-r"
65 else
66     ext=""      # No default extensions
67     pathname=`echo $pathname |
68      sed 's/^:/.:/
69           s/::/:.:/g
70           s/:$/:./
71           s/:/ /g' `
72     # Here is how we test to see if test/[] can handle -x
73     testfile="pp.t.$$"
74
75     cat > $testfile <<ENDTEST
76 #!/bin/sh
77 if [ -x / ] || [ -x /bin ] || [ -x /bin/ls ]; then
78     exit 0
79 fi
80 exit 1
81 ENDTEST
82
83     if `/bin/sh $testfile 2>/dev/null`; then
84         test_exec_flag="-x"
85     else
86         test_exec_flag="-r"
87     fi
88     rm -f $testfile
89 fi
90
91 for program in $programs
92 do
93     for path in $pathname
94     do
95         if [ $test_exec_flag $path/${program}${ext} ] && \
96            [ ! -d $path/${program}${ext} ]; then
97             if [ "x$echo" = "xyes" ]; then
98                 echo $path/${program}${ext}
99             fi
100             exit 0
101         fi
102
103 # Next try without extension (if one was used above)
104         if [ "x$ext" != "x" ]; then
105             if [ $test_exec_flag $path/${program} ] && \
106                [ ! -d $path/${program} ]; then
107                 if [ "x$echo" = "xyes" ]; then
108                     echo $path/${program}
109                 fi
110                 exit 0
111             fi
112         fi
113     done
114 done
115 exit 1
116