home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / regular / ActivePerl-5.8.4.810-MSWin32-x86.msi / _d22c64d2f3cb0b4b20459c3de09a4565 < prev    next >
Encoding:
Text File  |  2004-06-01  |  2.5 KB  |  117 lines

  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 seperated 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 prefered 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.  
  117.