install.sh 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #! /bin/sh
  2. #
  3. # Copyright (c) 1999 Marcel Moolenaar
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions
  8. # are met:
  9. # 1. Redistributions of source code must retain the above copyright
  10. # notice, this list of conditions and the following disclaimer
  11. # in this position and unchanged.
  12. # 2. Redistributions in binary form must reproduce the above copyright
  13. # notice, this list of conditions and the following disclaimer in the
  14. # documentation and/or other materials provided with the distribution.
  15. # 3. The name of the author may not be used to endorse or promote products
  16. # derived from this software without specific prior written permission
  17. #
  18. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  19. # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  20. # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  21. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  22. # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  23. # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  24. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  25. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  26. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  27. # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28. #
  29. # parse install's options and ignore them completely.
  30. dirmode=""
  31. linkmode=""
  32. while [ $# -gt 0 ]; do
  33. case $1 in
  34. -d) dirmode="YES"; shift;;
  35. -[bCcpSsUv]) shift;;
  36. -[BDfghMmNoT]) shift; shift;;
  37. -[BDfghMmNoT]*) shift;;
  38. -l)
  39. shift
  40. case $1 in
  41. *[sm]*) linkmode="symbolic";; # XXX: 'm' should prefer hard
  42. *h*) linkmode="hard";;
  43. *) echo "invalid link mode"; exit 1;;
  44. esac
  45. shift
  46. ;;
  47. *) break;
  48. esac
  49. done
  50. if [ "$#" -eq 0 ]; then
  51. echo "$0: no files/dirs specified" >&2
  52. exit 1
  53. fi
  54. if [ -z "$dirmode" ] && [ "$#" -lt 2 ]; then
  55. echo "$0: no target specified" >&2
  56. exit 1
  57. fi
  58. # the remaining arguments are assumed to be files/dirs only.
  59. if [ -n "${linkmode}" ]; then
  60. if [ "${linkmode}" = "symbolic" ]; then
  61. ln -fsn "$@"
  62. else
  63. ln -f "$@"
  64. fi
  65. elif [ -z "$dirmode" ]; then
  66. exec install -p "$@"
  67. else
  68. exec install -d "$@"
  69. fi