Annotation of embedaddon/expat/conftools/PrintPath, revision 1.1.1.1

1.1       misho       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: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>