ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/ac-tools/install-sh
(Generate patch)

Comparing trunk/ac-tools/install-sh (file contents):
Revision 2 by gezelter, Fri Sep 24 04:16:43 2004 UTC vs.
Revision 957 by gezelter, Tue May 16 20:38:23 2006 UTC

# Line 1 | Line 1
1 < #This dummy file here because AC_CONFIG_AUX_DIR looks for it.
1 > #!/bin/sh
2 > #
3 > # install - install a program, script, or datafile
4 > #
5 > # This originates from X11R5 (mit/util/scripts/install.sh), which was
6 > # later released in X11R6 (xc/config/util/install.sh) with the
7 > # following copyright and license.
8 > #
9 > # Copyright (C) 1994 X Consortium
10 > #
11 > # Permission is hereby granted, free of charge, to any person obtaining a copy
12 > # of this software and associated documentation files (the "Software"), to
13 > # deal in the Software without restriction, including without limitation the
14 > # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15 > # sell copies of the Software, and to permit persons to whom the Software is
16 > # furnished to do so, subject to the following conditions:
17 > #
18 > # The above copyright notice and this permission notice shall be included in
19 > # all copies or substantial portions of the Software.
20 > #
21 > # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 > # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 > # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
24 > # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
25 > # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
26 > # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 > #
28 > # Except as contained in this notice, the name of the X Consortium shall not
29 > # be used in advertising or otherwise to promote the sale, use or other deal-
30 > # ings in this Software without prior written authorization from the X Consor-
31 > # tium.
32 > #
33 > #
34 > # FSF changes to this file are in the public domain.
35 > #
36 > # Calling this script install-sh is preferred over install.sh, to prevent
37 > # `make' implicit rules from creating a file called install from it
38 > # when there is no Makefile.
39 > #
40 > # This script is compatible with the BSD install script, but was written
41 > # from scratch.  It can only install one file at a time, a restriction
42 > # shared with many OS's install programs.
43 >
44 >
45 > # set DOITPROG to echo to test this script
46 >
47 > # Don't use :- since 4.3BSD and earlier shells don't like it.
48 > doit="${DOITPROG-}"
49 >
50 >
51 > # put in absolute paths if you don't have them in your path; or use env. vars.
52 >
53 > mvprog="${MVPROG-mv}"
54 > cpprog="${CPPROG-cp}"
55 > chmodprog="${CHMODPROG-chmod}"
56 > chownprog="${CHOWNPROG-chown}"
57 > chgrpprog="${CHGRPPROG-chgrp}"
58 > stripprog="${STRIPPROG-strip}"
59 > rmprog="${RMPROG-rm}"
60 > mkdirprog="${MKDIRPROG-mkdir}"
61 >
62 > transformbasename=""
63 > transform_arg=""
64 > instcmd="$mvprog"
65 > chmodcmd="$chmodprog 0755"
66 > chowncmd=""
67 > chgrpcmd=""
68 > stripcmd=""
69 > rmcmd="$rmprog -f"
70 > mvcmd="$mvprog"
71 > src=""
72 > dst=""
73 > dir_arg=""
74 >
75 > while [ x"$1" != x ]; do
76 >    case $1 in
77 >        -c) instcmd=$cpprog
78 >            shift
79 >            continue;;
80 >
81 >        -d) dir_arg=true
82 >            shift
83 >            continue;;
84 >
85 >        -m) chmodcmd="$chmodprog $2"
86 >            shift
87 >            shift
88 >            continue;;
89 >
90 >        -o) chowncmd="$chownprog $2"
91 >            shift
92 >            shift
93 >            continue;;
94 >
95 >        -g) chgrpcmd="$chgrpprog $2"
96 >            shift
97 >            shift
98 >            continue;;
99 >
100 >        -s) stripcmd=$stripprog
101 >            shift
102 >            continue;;
103 >
104 >        -t=*) transformarg=`echo $1 | sed 's/-t=//'`
105 >            shift
106 >            continue;;
107 >
108 >        -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
109 >            shift
110 >            continue;;
111 >
112 >        *)  if [ x"$src" = x ]
113 >            then
114 >                src=$1
115 >            else
116 >                # this colon is to work around a 386BSD /bin/sh bug
117 >                :
118 >                dst=$1
119 >            fi
120 >            shift
121 >            continue;;
122 >    esac
123 > done
124 >
125 > if [ x"$src" = x ]
126 > then
127 >        echo "$0: no input file specified" >&2
128 >        exit 1
129 > else
130 >        :
131 > fi
132 >
133 > if [ x"$dir_arg" != x ]; then
134 >        dst=$src
135 >        src=""
136 >
137 >        if [ -d "$dst" ]; then
138 >                instcmd=:
139 >                chmodcmd=""
140 >        else
141 >                instcmd=$mkdirprog
142 >        fi
143 > else
144 >
145 > # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
146 > # might cause directories to be created, which would be especially bad
147 > # if $src (and thus $dsttmp) contains '*'.
148 >
149 >        if [ -f "$src" ] || [ -d "$src" ]
150 >        then
151 >                :
152 >        else
153 >                echo "$0: $src does not exist" >&2
154 >                exit 1
155 >        fi
156 >
157 >        if [ x"$dst" = x ]
158 >        then
159 >                echo "$0: no destination specified" >&2
160 >                exit 1
161 >        else
162 >                :
163 >        fi
164 >
165 > # If destination is a directory, append the input filename; if your system
166 > # does not like double slashes in filenames, you may need to add some logic
167 >
168 >        if [ -d "$dst" ]
169 >        then
170 >                dst=$dst/`basename "$src"`
171 >        else
172 >                :
173 >        fi
174 > fi
175 >
176 > ## this sed command emulates the dirname command
177 > dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
178 >
179 > # Make sure that the destination directory exists.
180 > #  this part is taken from Noah Friedman's mkinstalldirs script
181 >
182 > # Skip lots of stat calls in the usual case.
183 > if [ ! -d "$dstdir" ]; then
184 > defaultIFS='
185 >        '
186 > IFS="${IFS-$defaultIFS}"
187 >
188 > oIFS=$IFS
189 > # Some sh's can't handle IFS=/ for some reason.
190 > IFS='%'
191 > set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
192 > IFS=$oIFS
193 >
194 > pathcomp=''
195 >
196 > while [ $# -ne 0 ] ; do
197 >        pathcomp=$pathcomp$1
198 >        shift
199 >
200 >        if [ ! -d "$pathcomp" ] ;
201 >        then
202 >                $mkdirprog "$pathcomp"
203 >        else
204 >                :
205 >        fi
206 >
207 >        pathcomp=$pathcomp/
208 > done
209 > fi
210 >
211 > if [ x"$dir_arg" != x ]
212 > then
213 >        $doit $instcmd "$dst" &&
214 >
215 >        if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
216 >        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
217 >        if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
218 >        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
219 > else
220 >
221 > # If we're going to rename the final executable, determine the name now.
222 >
223 >        if [ x"$transformarg" = x ]
224 >        then
225 >                dstfile=`basename "$dst"`
226 >        else
227 >                dstfile=`basename "$dst" $transformbasename |
228 >                        sed $transformarg`$transformbasename
229 >        fi
230 >
231 > # don't allow the sed command to completely eliminate the filename
232 >
233 >        if [ x"$dstfile" = x ]
234 >        then
235 >                dstfile=`basename "$dst"`
236 >        else
237 >                :
238 >        fi
239 >
240 > # Make a couple of temp file names in the proper directory.
241 >
242 >        dsttmp=$dstdir/_inst.$$_
243 >        rmtmp=$dstdir/_rm.$$_
244 >
245 > # Trap to clean up temp files at exit.
246 >
247 >        trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
248 >        trap '(exit $?); exit' 1 2 13 15
249 >
250 > # Move or copy the file name to the temp name
251 >
252 >        $doit $instcmd "$src" "$dsttmp" &&
253 >
254 > # and set any options; do chmod last to preserve setuid bits
255 >
256 > # If any of these fail, we abort the whole thing.  If we want to
257 > # ignore errors from any of these, just make sure not to ignore
258 > # errors from the above "$doit $instcmd $src $dsttmp" command.
259 >
260 >        if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
261 >        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
262 >        if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
263 >        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
264 >
265 > # Now remove or move aside any old file at destination location.  We try this
266 > # two ways since rm can't unlink itself on some systems and the destination
267 > # file might be busy for other reasons.  In this case, the final cleanup
268 > # might fail but the new file should still install successfully.
269 >
270 > {
271 >        if [ -f "$dstdir/$dstfile" ]
272 >        then
273 >                $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
274 >                $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
275 >                {
276 >                  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
277 >                  (exit 1); exit
278 >                }
279 >        else
280 >                :
281 >        fi
282 > } &&
283 >
284 > # Now rename the file to the real destination.
285 >
286 >        $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
287 >
288 > fi &&
289 >
290 > # The final little trick to "correctly" pass the exit status to the exit trap.
291 >
292 > {
293 >        (exit 0); exit
294 > }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines