xref: /netbsd-src/external/bsd/openldap/dist/contrib/ldaptcl/install-sh (revision 2de962bd804263c16657f586aa00f1704045df8e)
1*2de962bdSlukem#!/bin/sh
2*2de962bdSlukem
3*2de962bdSlukem#
4*2de962bdSlukem# install - install a program, script, or datafile
5*2de962bdSlukem# This comes from X11R5; it is not part of GNU.
6*2de962bdSlukem#
7*2de962bdSlukem# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
8*2de962bdSlukem#
9*2de962bdSlukem# This script is compatible with the BSD install script, but was written
10*2de962bdSlukem# from scratch.
11*2de962bdSlukem#
12*2de962bdSlukem
13*2de962bdSlukem
14*2de962bdSlukem# set DOITPROG to echo to test this script
15*2de962bdSlukem
16*2de962bdSlukem# Don't use :- since 4.3BSD and earlier shells don't like it.
17*2de962bdSlukemdoit="${DOITPROG-}"
18*2de962bdSlukem
19*2de962bdSlukem
20*2de962bdSlukem# put in absolute paths if you don't have them in your path; or use env. vars.
21*2de962bdSlukem
22*2de962bdSlukemmvprog="${MVPROG-mv}"
23*2de962bdSlukemcpprog="${CPPROG-cp}"
24*2de962bdSlukemchmodprog="${CHMODPROG-chmod}"
25*2de962bdSlukemchownprog="${CHOWNPROG-chown}"
26*2de962bdSlukemchgrpprog="${CHGRPPROG-chgrp}"
27*2de962bdSlukemstripprog="${STRIPPROG-strip}"
28*2de962bdSlukemrmprog="${RMPROG-rm}"
29*2de962bdSlukem
30*2de962bdSlukeminstcmd="$mvprog"
31*2de962bdSlukemchmodcmd=""
32*2de962bdSlukemchowncmd=""
33*2de962bdSlukemchgrpcmd=""
34*2de962bdSlukemstripcmd=""
35*2de962bdSlukemrmcmd="$rmprog -f"
36*2de962bdSlukemmvcmd="$mvprog"
37*2de962bdSlukemsrc=""
38*2de962bdSlukemdst=""
39*2de962bdSlukem
40*2de962bdSlukemwhile [ x"$1" != x ]; do
41*2de962bdSlukem    case $1 in
42*2de962bdSlukem	-c) instcmd="$cpprog"
43*2de962bdSlukem	    shift
44*2de962bdSlukem	    continue;;
45*2de962bdSlukem
46*2de962bdSlukem	-m) chmodcmd="$chmodprog $2"
47*2de962bdSlukem	    shift
48*2de962bdSlukem	    shift
49*2de962bdSlukem	    continue;;
50*2de962bdSlukem
51*2de962bdSlukem	-o) chowncmd="$chownprog $2"
52*2de962bdSlukem	    shift
53*2de962bdSlukem	    shift
54*2de962bdSlukem	    continue;;
55*2de962bdSlukem
56*2de962bdSlukem	-g) chgrpcmd="$chgrpprog $2"
57*2de962bdSlukem	    shift
58*2de962bdSlukem	    shift
59*2de962bdSlukem	    continue;;
60*2de962bdSlukem
61*2de962bdSlukem	-s) stripcmd="$stripprog"
62*2de962bdSlukem	    shift
63*2de962bdSlukem	    continue;;
64*2de962bdSlukem
65*2de962bdSlukem	*)  if [ x"$src" = x ]
66*2de962bdSlukem	    then
67*2de962bdSlukem		src=$1
68*2de962bdSlukem	    else
69*2de962bdSlukem		dst=$1
70*2de962bdSlukem	    fi
71*2de962bdSlukem	    shift
72*2de962bdSlukem	    continue;;
73*2de962bdSlukem    esac
74*2de962bdSlukemdone
75*2de962bdSlukem
76*2de962bdSlukemif [ x"$src" = x ]
77*2de962bdSlukemthen
78*2de962bdSlukem	echo "install:  no input file specified"
79*2de962bdSlukem	exit 1
80*2de962bdSlukemfi
81*2de962bdSlukem
82*2de962bdSlukemif [ x"$dst" = x ]
83*2de962bdSlukemthen
84*2de962bdSlukem	echo "install:  no destination specified"
85*2de962bdSlukem	exit 1
86*2de962bdSlukemfi
87*2de962bdSlukem
88*2de962bdSlukem
89*2de962bdSlukem# If destination is a directory, append the input filename; if your system
90*2de962bdSlukem# does not like double slashes in filenames, you may need to add some logic
91*2de962bdSlukem
92*2de962bdSlukemif [ -d $dst ]
93*2de962bdSlukemthen
94*2de962bdSlukem	dst="$dst"/`basename $src`
95*2de962bdSlukemfi
96*2de962bdSlukem
97*2de962bdSlukem# Make a temp file name in the proper directory.
98*2de962bdSlukem
99*2de962bdSlukemdstdir=`dirname $dst`
100*2de962bdSlukemdsttmp=$dstdir/#inst.$$#
101*2de962bdSlukem
102*2de962bdSlukem# Move or copy the file name to the temp name
103*2de962bdSlukem
104*2de962bdSlukem$doit $instcmd $src $dsttmp
105*2de962bdSlukem
106*2de962bdSlukem# and set any options; do chmod last to preserve setuid bits
107*2de962bdSlukem
108*2de962bdSlukemif [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
109*2de962bdSlukemif [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
110*2de962bdSlukemif [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
111*2de962bdSlukemif [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
112*2de962bdSlukem
113*2de962bdSlukem# Now rename the file to the real destination.
114*2de962bdSlukem
115*2de962bdSlukem$doit $rmcmd $dst
116*2de962bdSlukem$doit $mvcmd $dsttmp $dst
117*2de962bdSlukem
118*2de962bdSlukem
119*2de962bdSlukemexit 0
120