bottleneck testcase based on rubbos
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / srclib / apr / build / PrintPath
1 #!/bin/sh
2 #
3 # Licensed to the Apache Software Foundation (ASF) under one or more
4 # contributor license agreements.  See the NOTICE file distributed with
5 # this work for additional information regarding copyright ownership.
6 # The ASF licenses this file to You under the Apache License, Version 2.0
7 # (the "License"); you may not use this file except in compliance with
8 # the License.  You may obtain a copy of the License at
9 #
10 #     http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 #
19 # Look for program[s] somewhere in $PATH.
20 #
21 # Options:
22 #  -s
23 #    Do not print out full pathname. (silent)
24 #  -pPATHNAME
25 #    Look in PATHNAME instead of $PATH
26 #
27 # Usage:
28 #  PrintPath [-s] [-pPATHNAME] program [program ...]
29 #
30 # Initially written by Jim Jagielski for the Apache configuration mechanism
31 #  (with kudos to Kernighan/Pike)
32
33 ##
34 # Some "constants"
35 ##
36 pathname=$PATH
37 echo="yes"
38
39 ##
40 # Find out what OS we are running for later on
41 ##
42 os=`(uname) 2>/dev/null`
43
44 ##
45 # Parse command line
46 ##
47 for args in $*
48 do
49     case $args in
50         -s  ) echo="no" ;;
51         -p* ) pathname="`echo $args | sed 's/^..//'`" ;;
52         *   ) programs="$programs $args" ;;
53     esac
54 done
55
56 ##
57 # Now we make the adjustments required for OS/2 and everyone
58 # else :)
59 #
60 # First of all, all OS/2 programs have the '.exe' extension.
61 # Next, we adjust PATH (or what was given to us as PATH) to
62 # be whitespace separated directories.
63 # Finally, we try to determine the best flag to use for
64 # test/[] to look for an executable file. OS/2 just has '-r'
65 # but with other OSs, we do some funny stuff to check to see
66 # if test/[] knows about -x, which is the prefered flag.
67 ##
68
69 if [ "x$os" = "xOS/2" ]
70 then
71     ext=".exe"
72     pathname=`echo -E $pathname |
73      sed 's/^;/.;/
74           s/;;/;.;/g
75           s/;$/;./
76           s/;/ /g
77           s/\\\\/\\//g' `
78     test_exec_flag="-r"
79 else
80     ext=""      # No default extensions
81     pathname=`echo $pathname |
82      sed 's/^:/.:/
83           s/::/:.:/g
84           s/:$/:./
85           s/:/ /g' `
86     # Here is how we test to see if test/[] can handle -x
87     testfile="pp.t.$$"
88
89     cat > $testfile <<ENDTEST
90 #!/bin/sh
91 if [ -x / ] || [ -x /bin ] || [ -x /bin/ls ]; then
92     exit 0
93 fi
94 exit 1
95 ENDTEST
96
97     if `/bin/sh $testfile 2>/dev/null`; then
98         test_exec_flag="-x"
99     else
100         test_exec_flag="-r"
101     fi
102     rm -f $testfile
103 fi
104
105 for program in $programs
106 do
107     for path in $pathname
108     do
109         if [ $test_exec_flag $path/${program}${ext} ] && \
110            [ ! -d $path/${program}${ext} ]; then
111             if [ "x$echo" = "xyes" ]; then
112                 echo $path/${program}${ext}
113             fi
114             exit 0
115         fi
116
117 # Next try without extension (if one was used above)
118         if [ "x$ext" != "x" ]; then
119             if [ $test_exec_flag $path/${program} ] && \
120                [ ! -d $path/${program} ]; then
121                 if [ "x$echo" = "xyes" ]; then
122                     echo $path/${program}
123                 fi
124                 exit 0
125             fi
126         fi
127     done
128 done
129 exit 1
130