www.pudn.com > httpd-2.2.6-win32-src-r2.zip > PrintPath, change:2007-09-04,size:3303b


#!/bin/sh 
# 
# Licensed to the Apache Software Foundation (ASF) under one or more 
# contributor license agreements.  See the NOTICE file distributed with 
# this work for additional information regarding copyright ownership. 
# The ASF licenses this file to You under the Apache License, Version 2.0 
# (the "License"); you may not use this file except in compliance with 
# the License.  You may obtain a copy of the License at 
# 
#     http://www.apache.org/licenses/LICENSE-2.0 
# 
# Unless required by applicable law or agreed to in writing, software 
# distributed under the License is distributed on an "AS IS" BASIS, 
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
# See the License for the specific language governing permissions and 
# limitations under the License. 
# 
# 
# Look for program[s] somewhere in $PATH. 
# 
# Options: 
#  -s 
#    Do not print out full pathname. (silent) 
#  -pPATHNAME 
#    Look in PATHNAME instead of $PATH 
# 
# Usage: 
#  PrintPath [-s] [-pPATHNAME] program [program ...] 
# 
# Initially written by Jim Jagielski for the Apache configuration mechanism 
#  (with kudos to Kernighan/Pike) 
 
## 
# Some "constants" 
## 
pathname=$PATH 
echo="yes" 
 
## 
# Find out what OS we are running for later on 
## 
os=`(uname) 2>/dev/null` 
 
## 
# Parse command line 
## 
for args in $* 
do 
    case $args in 
	-s  ) echo="no" ;; 
	-p* ) pathname="`echo $args | sed 's/^..//'`" ;; 
	*   ) programs="$programs $args" ;; 
    esac 
done 
 
## 
# Now we make the adjustments required for OS/2 and everyone 
# else :) 
# 
# First of all, all OS/2 programs have the '.exe' extension. 
# Next, we adjust PATH (or what was given to us as PATH) to 
# be whitespace separated directories. 
# Finally, we try to determine the best flag to use for 
# test/[] to look for an executable file. OS/2 just has '-r' 
# but with other OSs, we do some funny stuff to check to see 
# if test/[] knows about -x, which is the prefered flag. 
## 
 
if [ "x$os" = "xOS/2" ] 
then 
    ext=".exe" 
    pathname=`echo -E $pathname | 
     sed 's/^;/.;/ 
	  s/;;/;.;/g 
	  s/;$/;./ 
	  s/;/ /g 
	  s/\\\\/\\//g' ` 
    test_exec_flag="-r" 
else 
    ext=""	# No default extensions 
    pathname=`echo $pathname | 
     sed 's/^:/.:/ 
	  s/::/:.:/g 
	  s/:$/:./ 
	  s/:/ /g' ` 
    # Here is how we test to see if test/[] can handle -x 
    testfile="pp.t.$$" 
 
    cat > $testfile <<ENDTEST 
#!/bin/sh 
if [ -x / ] || [ -x /bin ] || [ -x /bin/ls ]; then 
    exit 0 
fi 
exit 1 
ENDTEST 
 
    if `/bin/sh $testfile 2>/dev/null`; then 
	test_exec_flag="-x" 
    else 
	test_exec_flag="-r" 
    fi 
    rm -f $testfile 
fi 
 
for program in $programs 
do 
    for path in $pathname 
    do 
	if [ $test_exec_flag $path/${program}${ext} ] && \ 
	   [ ! -d $path/${program}${ext} ]; then 
	    if [ "x$echo" = "xyes" ]; then 
		echo $path/${program}${ext} 
	    fi 
	    exit 0 
	fi 
 
# Next try without extension (if one was used above) 
	if [ "x$ext" != "x" ]; then 
            if [ $test_exec_flag $path/${program} ] && \ 
               [ ! -d $path/${program} ]; then 
                if [ "x$echo" = "xyes" ]; then 
                    echo $path/${program} 
                fi 
                exit 0 
            fi 
        fi 
    done 
done 
exit 1