install
上传用户:zibowangxu
上传日期:2007-01-04
资源大小:331k
文件大小:4k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. #
  3. # Copyright (c) 1999 WU-FTPD Development Group.
  4. # All rights reserved.
  5. # Portions Copyright (c) 1980, 1985, 1988, 1989, 1990, 1991, 1993, 1994 
  6. #    The Regents of the University of California.  
  7. # Portions Copyright (c) 1993, 1994 Washington University in Saint Louis.  
  8. # Portions Copyright (c) 1989 Massachusetts Institute of Technology.  
  9. # Portions Copyright (c) 1998 Sendmail, Inc.
  10. # Portions Copyright (c) 1983, 1995, 1996, 1997 Eric P. Allman.  
  11. # Portions Copyright (c) 1996, 1998 Berkeley Software Design, Inc.  
  12. # Portions Copyright (C) 1991, 1992, 1993, 1994, 1995 1996, 1997 
  13. #    Free Software Foundation, Inc.  
  14. # Portions Copyright (c) 1997 Stan Barber.  
  15. # Portions Copyright (c) 1997 Kent Landfield.
  16. # Use and distribution of this software and its source code are governed by 
  17. # the terms and conditions of the WU-FTPD Software License ("LICENSE").
  18. # If you did not receive a copy of the license, it may be obtained online at
  19. # http://www.wu-ftpd.org/license.html.
  20. # $Id: install,v 1.3 1999/08/27 14:02:43 wuftpd Exp $
  21. #
  22. # install - implementation of BSD install program for SYSV
  23. #
  24. # SYNTAX:
  25. # install [-cs] [-g group] [-m mode] [-o owner] file1 file2
  26. # install [-cs] [-g group] [-m mode] [-o owner] file1 ... directory
  27. # install -d [-g group] [-m mode] [-o owner] directory
  28. #
  29. # RETURN VALUES:
  30. # 0 success
  31. # 1 failure
  32. #
  33. # ----------------------------- INITIALIZATION ------------------------------
  34. ME="`basename $0`"
  35. # ------------------------------- SUBROUTINES -------------------------------
  36. #
  37. # Usage - print usage message
  38. #
  39. Usage()
  40. {
  41. echo "Usage: ${ME} [-cs] [-g group] [-m mode] [-o owner] file1 file2"
  42. echo "       ${ME} [-cs] [-g group] [-m mode] [-o owner] file1 ... directory"
  43. echo "       ${ME} -d [-g group] [-m mode] [-o owner] directory"
  44. exit 1
  45. }
  46. #
  47. # Warning - print warning message
  48. #
  49. Warning()
  50. {
  51. echo "${ME}: $*"
  52. }
  53. #
  54. # Die - print message and exit with failure
  55. #
  56. Die()
  57. {
  58. echo "${ME}: $*"
  59. exit 1
  60. }
  61. # ------------------------------- MAIN PROGRAM -----------------------------
  62. #
  63. # We always need at least two arguments
  64. #
  65. if [ $# -lt 2 ]
  66. then
  67. Usage
  68. fi
  69. #
  70. # Process command line options
  71. #
  72. for ARG in $*; do
  73. if [ "${FLAG}" = "on" ]; then
  74. case ${ARG} in
  75. -*)
  76. Die "The -g, -m and -o flags each require an argument following"
  77. exit 1
  78. ;;
  79. *)
  80. FLAG=off
  81. continue
  82. ;;
  83. esac
  84. fi
  85. case ${ARG} in
  86. -cs | -s)
  87. STRIP=on
  88. shift
  89. ;;
  90. -g)
  91. GRP=$2
  92. FLAG=on
  93. shift 2
  94. ;;
  95. -m)
  96. MODE=$2
  97. FLAG=on
  98. shift 2
  99. ;;
  100. -o)
  101. OWNER=$2
  102. FLAG=on
  103. shift 2
  104. ;;
  105. -d)
  106. MKDIR=on
  107. shift
  108. ;;
  109. -c)
  110. # For backward compatibility only; ignore
  111. shift
  112. ;;
  113. -*)
  114. Warning "unknown option ${ARG}"
  115. Usage
  116. ;;
  117. *)
  118. break
  119. ;;
  120. esac
  121. done
  122. #
  123. # We always need at least one filename
  124. #
  125. if [ $# -lt 1 ]
  126. then
  127. Usage
  128. fi
  129. #
  130. # Find out what the target is
  131. #
  132. FILES=$*
  133. NARGS=$#
  134. set `echo ${FILES}`
  135. i=1
  136. while [ $i -lt ${NARGS} ]; do
  137. FLS="${FLS} $1"
  138. shift
  139. i=`expr $i + 1`
  140. done
  141. TARGET=$1
  142. #
  143. # If more than one file specified, target must be a directory
  144. #
  145. if [ $i -gt 2 ]
  146. then
  147. if [ ! -d ${TARGET} ]
  148. then
  149. Usage
  150. fi
  151. fi
  152. #
  153. # If -d flag was present, see if directory exists. If not create it.
  154. # If group and/or mode and/or owner specified, set them for target
  155. #
  156. if [ "${MKDIR}" = "on" ]
  157. then
  158. if [ ! -d ${TARGET} ]
  159. then
  160. mkdir -p ${TARGET}
  161. fi
  162. if [ "${GRP}" != "" ]
  163. then
  164. chgrp ${GRP} ${TARGET}
  165. fi
  166. if [ "${MODE}" != "" ]
  167. then
  168. chmod ${MODE} ${TARGET}
  169. fi
  170. if [ "${OWNER}" != "" ]
  171. then
  172. # This fails on early releases of IRIX so, we'll just let chown speak here 
  173. # and we'll not bother.
  174. # if [ "`id -un`" != "root" ]
  175. # then
  176. # Warning "-o: must be superuser to change owner"
  177. # else
  178. chown ${OWNER} ${TARGET}
  179. # fi
  180. fi
  181. fi
  182. #
  183. # Process each file, taking the command line options into account
  184. # If the target is a directory, set modes for file in that directory,
  185. # otherwise set modes for file.
  186. #
  187. for FILE in ${FLS}
  188. do
  189. if [ "${STRIP}" = "on" ]
  190. then
  191. strip ${FILE}
  192. fi
  193. cp ${FILE} ${TARGET}
  194. if [ "${GRP}" != "" ]
  195. then
  196. if [ ! -d ${TARGET} ]
  197. then
  198. chgrp ${GRP} ${TARGET}
  199. else
  200. chgrp ${GRP} ${TARGET}/${FILE}
  201. fi
  202. fi
  203. if [ "${MODE}" != "" ]
  204. then
  205. if [ ! -d ${TARGET} ]
  206. then
  207. chmod ${MODE} ${TARGET}
  208. else
  209. chmod ${MODE} ${TARGET}/${FILE}
  210. fi
  211. fi
  212. if [ "${OWNER}" != "" ]
  213. then
  214. # This fails on early releases of IRIX so, we'll just let chown speak here 
  215. # and we'll not bother.
  216. # if [ "`id -un`" != "root" ]
  217. # then
  218. # Warning "-o: must be superuser to change owner"
  219. # elif [ ! -d ${TARGET} ]
  220. if [ ! -d ${TARGET} ]
  221. then
  222. chown ${OWNER} ${TARGET}
  223. else
  224. chown ${OWNER} ${TARGET}/${FILE}
  225. fi
  226. fi
  227. done