install.sh.in
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:8k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. #! @SCRIPT_SH@
  2. # $Id: install.sh.in,v 1.3 2007/07/22 06:03:54 faxguy Exp $
  3. #
  4. # @WARNING@
  5. #
  6. # HylaFAX Facsimile Software
  7. #
  8. # Copyright (c) 1990-1996 Sam Leffler
  9. # Copyright (c) 1991-1996 Silicon Graphics, Inc.
  10. # HylaFAX is a trademark of Silicon Graphics
  11. # Permission to use, copy, modify, distribute, and sell this software and 
  12. # its documentation for any purpose is hereby granted without fee, provided
  13. # that (i) the above copyright notices and this permission notice appear in
  14. # all copies of the software and related documentation, and (ii) the names of
  15. # Sam Leffler and Silicon Graphics may not be used in any advertising or
  16. # publicity relating to the software without the specific, prior written
  17. # permission of Sam Leffler and Silicon Graphics.
  18. # THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  19. # EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  20. # WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  21. # IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  22. # ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  23. # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  24. # WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  25. # LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  26. # OF THIS SOFTWARE.
  27. #
  28. #
  29. # Warning, this file was automatically created by the HylaFAX configure script
  30. #
  31. # VERSION: @VERSION@
  32. # DATE: @DATE@
  33. # TARGET: @TARGET@
  34. #
  35. #
  36. # Shell script to emulate Silicon Graphics install program.
  37. # We emulate the non-standard interface used by install so
  38. # that we can build SGI inst packages on SGI systems.  Note
  39. # that we cannot emulate everything because we don't maintain
  40. # a history of installed software; thus we cannot tell when
  41. # configuration files have been modified and save old copies.
  42. #
  43. # NB: we don't do chown/chmod/chgrp by default; it must be
  44. #     explicitly set on the command line.
  45. #
  46. #
  47. # install [options] files ...
  48. # Options are:
  49. #
  50. # -o save existing target foo as OLDfoo
  51. # -O remove existing target foo, if it fails save as OLDfoo
  52. # -m mode set mode of installed target
  53. # -u uid set uid of installed target
  54. # -g gid set gid of installed target
  55. # -root path set ROOT directory for target pathnames
  56. # -dir create directories
  57. # -fifo create FIFO special files
  58. # -ln path create hard link
  59. # -lns path create symbolic link
  60. # -src path source pathname different from target
  61. # -f dir install files in the target directory ROOT/dir
  62. # -F dir like -f, but create directories that do not exist
  63. # -v echo actions
  64. # -idb stuff specify package and, optionally, do special work
  65. #
  66. preopts=
  67. postopts=
  68. SaveFirst=no
  69. HasSource=yes
  70. RemoveFirst=no
  71. NoUpdate=no
  72. Suggested=no
  73. Updated=no
  74. CMD="@CP@"
  75. SRC=
  76. FILES=
  77. DESTDIR=
  78. CHMOD=": @CHMOD@"
  79. CHOWN=": @CHOWN@ @SYSUID@:@SYSGID@"
  80. CHGRP=":"
  81. RM="@RM@ -f"
  82. MV="@MV@ @MV_F@"
  83. ECHO=@ECHO@
  84. VERBOSE=":"
  85. STRIP="@STRIP@"
  86. CMP=@CMP@
  87. objectExists()
  88. {
  89.     return 1
  90. }
  91. TARGETS=
  92. while [ x"$1" != x ]
  93. do
  94.     arg=$1
  95.     case $arg in
  96.     -m) shift; CHMOD="@CHMOD@ $1";;
  97.     -u) shift; CHOWN="@CHOWN@ $1";;
  98.     -g) shift; CHGRP="@CHGRP@ $1";;
  99.     -o) SaveFirst=yes;;
  100.     -O) RemoveFirst=yes; SaveFirst=yes;;
  101.     -root) shift; ROOT=$1;;
  102.     -dir) CMD="@MKDIR@ -p"; HasSource=no;
  103. RM=":"; STRIP=":"
  104. objectExists()
  105. {
  106.     test -d $1
  107. }
  108. ;;
  109.     -fifo) CMD=@MKFIFO@; HasSource=no;
  110. case $CMD in
  111. *mknod) postopts="p";;
  112. esac
  113. STRIP=":"
  114. objectExists()
  115. {
  116.     #
  117.     # If -p is not supported then the right thing
  118.     # should still happen...
  119.     #
  120.     test -p $1 >/dev/null 2>&1
  121. }
  122. ;;
  123.     -ln) shift; CMD=@LN@; SRC="${ROOT}$1"
  124. STRIP=":"
  125. ;;
  126.     -lns) shift; CMD=@LN@; preopts="@LN_S@"; SRC="$1"
  127. STRIP=":"
  128. objectExists()
  129. {
  130.     #
  131.     # Some systems support -h to check for a
  132.     # symbolic link and others -l; one should
  133.     # do the right thing or both should fail.
  134.     #
  135.     (test -h $1 || test -l $1) >/dev/null 2>&1
  136. }
  137. ;;
  138.     -src) shift; SRC="$1";;
  139.     -f) shift; DESTDIR="$1/";;
  140.     -F) shift; DESTDIR="$1/"
  141. test -d $ROOT$DESTDIR || @MKDIR@ -p $ROOT$DESTDIR
  142. ;;
  143.     -idb) shift; opt="$1"
  144. case "$opt" in
  145. *config(update)*) Updated=yes;;
  146. *config(suggest)*) Suggested=yes;;
  147. *config(noupdate)*) NoUpdate=yes;;
  148. *nostrip*) STRIP=":";;
  149. esac
  150. ;;
  151.     # these are skipped/not handled
  152.     -new|-rawidb|-blk|-chr) shift;;
  153.     -v) VERBOSE=$ECHO;;
  154.     -*)  ;;
  155.     *) TARGETS="$TARGETS $arg";;
  156.     esac
  157.     shift
  158. done
  159. # I'll assume install.sh is only used from within HylaFAX Makefiles
  160. ROOT_SH=`echo $0 | sed 's;/port/install.sh;;'`/root.sh
  161. # If we are not root we write commands to root.sh
  162. do_chXXX()
  163. {
  164. # Check the user id.
  165. eval `id  |  sed 's/[^a-z0-9=].*//'`
  166. if [ "${uid:=0}" -ne 0 ]
  167. then
  168.         echo "$*" >> ${ROOT_SH}
  169. else
  170. eval $*
  171. fi
  172. }
  173. #
  174. # Install the specified target.
  175. #
  176. install()
  177. {
  178.     src=$1 target=$2
  179.     if [ $RemoveFirst = yes ] && [ -f $target ]; then
  180. $VERBOSE "$RM $target"
  181. $RM $target
  182.     fi
  183.     if [ $SaveFirst = yes ] && [ -f $target ]; then
  184. bf=`echo $src | @SED@ 's;.*/;;'`
  185. $VERBOSE "$MV $target $ROOT/$DESTDIR/OLD$bf"
  186. $MV $target $ROOT/$DESTDIR/OLD$bf
  187.     fi
  188.     if [ -z "$SRC" ] && [ $HasSource = yes ]; then
  189. $VERBOSE "$CMD $preopts $src $target $postopts"
  190. $CMD $preopts $f $target $postopts
  191.     elif [ $SaveFirst = no ] && objectExists $target; then
  192. $VERBOSE "$target exists; not remade"
  193.     else
  194. $VERBOSE "$CMD $preopts $SRC $target $postopts"
  195. $CMD $preopts $SRC $target $postopts
  196.     fi
  197.     if [ $? -eq 0 ]; then
  198. $VERBOSE "$CHOWN $target"
  199. do_chXXX $CHOWN $target
  200. if [ "$CHGRP" != ":" ]; then
  201.     $VERBOSE "$CHGRP $target"
  202.     do_chXXX $CHGRP $target
  203. fi
  204. $VERBOSE "$CHMOD $target"
  205. do_chXXX $CHMOD $target
  206. if [ $STRIP != ":" ] && [ -x $ROOT$DESTDIR$f ]; then
  207.     $STRIP $target >/dev/null 2>&1 || true
  208.     $VERBOSE "$STRIP $target"
  209. fi
  210.     fi
  211. }
  212. if [ $Suggested = yes ]; then
  213.     #
  214.     # A suggested file.  If an existing target does
  215.     # not exist, then install it.  Otherwise, install
  216.     # it as target.N if it's different from the current
  217.     # installed target.
  218.     #
  219.     # NB: cannot be used with a special file 'cuz we
  220.     #     use test -f to see if the file exists.
  221.     #
  222.     for f in $TARGETS; do
  223. t=$ROOT$DESTDIR$f
  224. if [ -f $t ]; then
  225.     if [ -z "$SRC" ] && [ $HasSource = yes ]; then
  226. $CMP -s $f $t || {
  227.     $ECHO "*** Warning, target has local changes, installing $f as $t.N"
  228.     install $f $t.N;
  229. }
  230.     else
  231. $CMP -s $SRC $t || {
  232.     $ECHO "*** Warning, target has local changes, installing $f as $t.N"
  233.     install $f $t.N
  234. }
  235.     fi
  236. else
  237.     install $f $t
  238. fi
  239.     done
  240. elif [ $Updated = yes ]; then
  241.     #
  242.     # A file to be updated.  If an existing target does
  243.     # not exist, then install it.  Otherwise, install
  244.     # it as target and save the old version as target.O
  245.     # if the old version is different from the current
  246.     # installed target.
  247.     #
  248.     # NB: cannot be used with a special file 'cuz we
  249.     #     use test -f to see if the file exists.
  250.     #
  251.     for f in $TARGETS; do
  252. t=$ROOT$DESTDIR$f
  253. if [ -f $t ]; then
  254.     if [ -z "$SRC" ] && [ $HasSource = yes ]; then
  255. $CMP -s $f $t || $MV $t $t.O
  256.     else
  257. $CMP -s $SRC $t || $MV $t $t.O
  258.     fi
  259. fi
  260. install $f $t
  261.     done
  262. elif [ $NoUpdate = yes ]; then
  263.     #
  264.     # A file that is never to be updated; the target
  265.     # is created only if it does not exist.
  266.     #
  267.     # NB: cannot be used with a special file 'cuz we
  268.     #     use test -f to see if the file exists.
  269.     #
  270.     for f in $TARGETS; do
  271. t=$ROOT$DESTDIR$f
  272. test -f $t || install $f $t
  273.     done
  274. else
  275.     #
  276.     # Normal case, a target that should be installed
  277.     # with the existing copy, optionally, saved first.
  278.     #
  279.     for f in $TARGETS; do
  280. install $f $ROOT$DESTDIR$f
  281.     done
  282. fi