summaryrefslogtreecommitdiffstatsabout
path: root/install-sh
diff options
context:
space:
mode:
authorChristopher Powell <chris@grubbybaby.com>2003-07-22 04:17:59 (GMT)
committer Christopher Powell <chris@grubbybaby.com>2003-07-22 04:17:59 (GMT)
commit6cefab259d0b783b85df4518d0d48dab0e11389b (patch)
tree74343578540827eef162a20462a8cc0c3e9e0e38 /install-sh
parent27c519a31da825ca27aa48e1a2d3dc7b45921852 (diff)
Changes on the way to 1.19. This is probably going to be 1.19b1. Detail:1.19b1
* Hostnames are now converted to lowercase in the mass-virtual naming section. The loop that converts dots to underscores has been optimized as well. * Migration to autoconf * New directive LogSQLTableType allows one to specify the kind of table that the module makes during table creation (e.g. InnoDB, MyISAM). Thanks to Jim Turner for the suggestion and patch. If your MySQL server does not support the specified type, it will create a MyISAM table instead. * Directives can now be placed in the 'main' server config and will be inherited by the virtual hosts. This means a LOT less repetition: you only specify the item once to have it inherited, but it can still be overridden on a virtualhost level.
Diffstat (limited to 'install-sh')
-rwxr-xr-xinstall-sh251
1 files changed, 251 insertions, 0 deletions
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..e9de238
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,251 @@
1#!/bin/sh
2#
3# install - install a program, script, or datafile
4# This comes from X11R5 (mit/util/scripts/install.sh).
5#
6# Copyright 1991 by the Massachusetts Institute of Technology
7#
8# Permission to use, copy, modify, distribute, and sell this software and its
9# documentation for any purpose is hereby granted without fee, provided that
10# the above copyright notice appear in all copies and that both that
11# copyright notice and this permission notice appear in supporting
12# documentation, and that the name of M.I.T. not be used in advertising or
13# publicity pertaining to distribution of the software without specific,
14# written prior permission. M.I.T. makes no representations about the
15# suitability of this software for any purpose. It is provided "as is"
16# without express or implied warranty.
17#
18# Calling this script install-sh is preferred over install.sh, to prevent
19# `make' implicit rules from creating a file called install from it
20# when there is no Makefile.
21#
22# This script is compatible with the BSD install script, but was written
23# from scratch. It can only install one file at a time, a restriction
24# shared with many OS's install programs.
25
26
27# set DOITPROG to echo to test this script
28
29# Don't use :- since 4.3BSD and earlier shells don't like it.
30doit="${DOITPROG-}"
31
32
33# put in absolute paths if you don't have them in your path; or use env. vars.
34
35mvprog="${MVPROG-mv}"
36cpprog="${CPPROG-cp}"
37chmodprog="${CHMODPROG-chmod}"
38chownprog="${CHOWNPROG-chown}"
39chgrpprog="${CHGRPPROG-chgrp}"
40stripprog="${STRIPPROG-strip}"
41rmprog="${RMPROG-rm}"
42mkdirprog="${MKDIRPROG-mkdir}"
43
44transformbasename=""
45transform_arg=""
46instcmd="$mvprog"
47chmodcmd="$chmodprog 0755"
48chowncmd=""
49chgrpcmd=""
50stripcmd=""
51rmcmd="$rmprog -f"
52mvcmd="$mvprog"
53src=""
54dst=""
55dir_arg=""
56
57while [ x"$1" != x ]; do
58 case $1 in
59 -c) instcmd="$cpprog"
60 shift
61 continue;;
62
63 -d) dir_arg=true
64 shift
65 continue;;
66
67 -m) chmodcmd="$chmodprog $2"
68 shift
69 shift
70 continue;;
71
72 -o) chowncmd="$chownprog $2"
73 shift
74 shift
75 continue;;
76
77 -g) chgrpcmd="$chgrpprog $2"
78 shift
79 shift
80 continue;;
81
82 -s) stripcmd="$stripprog"
83 shift
84 continue;;
85
86 -t=*) transformarg=`echo $1 | sed 's/-t=//'`
87 shift
88 continue;;
89
90 -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
91 shift
92 continue;;
93
94 *) if [ x"$src" = x ]
95 then
96 src=$1
97 else
98 # this colon is to work around a 386BSD /bin/sh bug
99 :
100 dst=$1
101 fi
102 shift
103 continue;;
104 esac
105done
106
107if [ x"$src" = x ]
108then
109 echo "install: no input file specified"
110 exit 1
111else
112 true
113fi
114
115if [ x"$dir_arg" != x ]; then
116 dst=$src
117 src=""
118
119 if [ -d $dst ]; then
120 instcmd=:
121 chmodcmd=""
122 else
123 instcmd=mkdir
124 fi
125else
126
127# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
128# might cause directories to be created, which would be especially bad
129# if $src (and thus $dsttmp) contains '*'.
130
131 if [ -f $src -o -d $src ]
132 then
133 true
134 else
135 echo "install: $src does not exist"
136 exit 1
137 fi
138
139 if [ x"$dst" = x ]
140 then
141 echo "install: no destination specified"
142 exit 1
143 else
144 true
145 fi
146
147# If destination is a directory, append the input filename; if your system
148# does not like double slashes in filenames, you may need to add some logic
149
150 if [ -d $dst ]
151 then
152 dst="$dst"/`basename $src`
153 else
154 true
155 fi
156fi
157
158## this sed command emulates the dirname command
159dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
160
161# Make sure that the destination directory exists.
162# this part is taken from Noah Friedman's mkinstalldirs script
163
164# Skip lots of stat calls in the usual case.
165if [ ! -d "$dstdir" ]; then
166defaultIFS='
167'
168IFS="${IFS-${defaultIFS}}"
169
170oIFS="${IFS}"
171# Some sh's can't handle IFS=/ for some reason.
172IFS='%'
173set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
174IFS="${oIFS}"
175
176pathcomp=''
177
178while [ $# -ne 0 ] ; do
179 pathcomp="${pathcomp}${1}"
180 shift
181
182 if [ ! -d "${pathcomp}" ] ;
183 then
184 $mkdirprog "${pathcomp}"
185 else
186 true
187 fi
188
189 pathcomp="${pathcomp}/"
190done
191fi
192
193if [ x"$dir_arg" != x ]
194then
195 $doit $instcmd $dst &&
196
197 if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
198 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
199 if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
200 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
201else
202
203# If we're going to rename the final executable, determine the name now.
204
205 if [ x"$transformarg" = x ]
206 then
207 dstfile=`basename $dst`
208 else
209 dstfile=`basename $dst $transformbasename |
210 sed $transformarg`$transformbasename
211 fi
212
213# don't allow the sed command to completely eliminate the filename
214
215 if [ x"$dstfile" = x ]
216 then
217 dstfile=`basename $dst`
218 else
219 true
220 fi
221
222# Make a temp file name in the proper directory.
223
224 dsttmp=$dstdir/#inst.$$#
225
226# Move or copy the file name to the temp name
227
228 $doit $instcmd $src $dsttmp &&
229
230 trap "rm -f ${dsttmp}" 0 &&
231
232# and set any options; do chmod last to preserve setuid bits
233
234# If any of these fail, we abort the whole thing. If we want to
235# ignore errors from any of these, just make sure not to ignore
236# errors from the above "$doit $instcmd $src $dsttmp" command.
237
238 if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
239 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
240 if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
241 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
242
243# Now rename the file to the real destination.
244
245 $doit $rmcmd -f $dstdir/$dstfile &&
246 $doit $mvcmd $dsttmp $dstdir/$dstfile
247
248fi &&
249
250
251exit 0