~ubuntu-dev/wxwidgets2.6/upstream-debian

« back to all changes in this revision

Viewing changes to install-sh

  • Committer: Daniel T Chen
  • Date: 2006-06-26 10:15:11 UTC
  • Revision ID: crimsun@ubuntu.com-20060626101511-a4436cec4c6d9b35
ImportĀ DebianĀ 2.6.3.2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.
 
30
doit="${DOITPROG-}"
 
31
 
 
32
 
 
33
# put in absolute paths if you don't have them in your path; or use env. vars.
 
34
 
 
35
mvprog="${MVPROG-mv}"
 
36
cpprog="${CPPROG-cp}"
 
37
chmodprog="${CHMODPROG-chmod}"
 
38
chownprog="${CHOWNPROG-chown}"
 
39
chgrpprog="${CHGRPPROG-chgrp}"
 
40
stripprog="${STRIPPROG-strip}"
 
41
rmprog="${RMPROG-rm}"
 
42
mkdirprog="${MKDIRPROG-mkdir}"
 
43
 
 
44
transformbasename=""
 
45
transform_arg=""
 
46
instcmd="$mvprog"
 
47
chmodcmd="$chmodprog 0755"
 
48
chowncmd=""
 
49
chgrpcmd=""
 
50
stripcmd=""
 
51
rmcmd="$rmprog -f"
 
52
mvcmd="$mvprog"
 
53
src=""
 
54
dst=""
 
55
dir_arg=""
 
56
 
 
57
while [ 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
 
105
done
 
106
 
 
107
if [ x"$src" = x ]
 
108
then
 
109
        echo "install:  no input file specified"
 
110
        exit 1
 
111
else
 
112
        true
 
113
fi
 
114
 
 
115
if [ x"$dir_arg" != x ]; then
 
116
        dst=$src
 
117
        src=""
 
118
        
 
119
        if [ -d $dst ]; then
 
120
                instcmd=:
 
121
        else
 
122
                instcmd=mkdir
 
123
        fi
 
124
else
 
125
 
 
126
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
 
127
# might cause directories to be created, which would be especially bad 
 
128
# if $src (and thus $dsttmp) contains '*'.
 
129
 
 
130
        if [ -f $src -o -d $src ]
 
131
        then
 
132
                true
 
133
        else
 
134
                echo "install:  $src does not exist"
 
135
                exit 1
 
136
        fi
 
137
        
 
138
        if [ x"$dst" = x ]
 
139
        then
 
140
                echo "install:  no destination specified"
 
141
                exit 1
 
142
        else
 
143
                true
 
144
        fi
 
145
 
 
146
# If destination is a directory, append the input filename; if your system
 
147
# does not like double slashes in filenames, you may need to add some logic
 
148
 
 
149
        if [ -d $dst ]
 
150
        then
 
151
                dst="$dst"/`basename $src`
 
152
        else
 
153
                true
 
154
        fi
 
155
fi
 
156
 
 
157
## this sed command emulates the dirname command
 
158
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
 
159
 
 
160
# Make sure that the destination directory exists.
 
161
#  this part is taken from Noah Friedman's mkinstalldirs script
 
162
 
 
163
# Skip lots of stat calls in the usual case.
 
164
if [ ! -d "$dstdir" ]; then
 
165
defaultIFS='    
 
166
'
 
167
IFS="${IFS-${defaultIFS}}"
 
168
 
 
169
oIFS="${IFS}"
 
170
# Some sh's can't handle IFS=/ for some reason.
 
171
IFS='%'
 
172
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
 
173
IFS="${oIFS}"
 
174
 
 
175
pathcomp=''
 
176
 
 
177
while [ $# -ne 0 ] ; do
 
178
        pathcomp="${pathcomp}${1}"
 
179
        shift
 
180
 
 
181
        if [ ! -d "${pathcomp}" ] ;
 
182
        then
 
183
                $mkdirprog "${pathcomp}"
 
184
        else
 
185
                true
 
186
        fi
 
187
 
 
188
        pathcomp="${pathcomp}/"
 
189
done
 
190
fi
 
191
 
 
192
if [ x"$dir_arg" != x ]
 
193
then
 
194
        $doit $instcmd $dst &&
 
195
 
 
196
        if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
 
197
        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
 
198
        if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
 
199
        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
 
200
else
 
201
 
 
202
# If we're going to rename the final executable, determine the name now.
 
203
 
 
204
        if [ x"$transformarg" = x ] 
 
205
        then
 
206
                dstfile=`basename $dst`
 
207
        else
 
208
                dstfile=`basename $dst $transformbasename | 
 
209
                        sed $transformarg`$transformbasename
 
210
        fi
 
211
 
 
212
# don't allow the sed command to completely eliminate the filename
 
213
 
 
214
        if [ x"$dstfile" = x ] 
 
215
        then
 
216
                dstfile=`basename $dst`
 
217
        else
 
218
                true
 
219
        fi
 
220
 
 
221
# Make a temp file name in the proper directory.
 
222
 
 
223
        dsttmp=$dstdir/#inst.$$#
 
224
 
 
225
# Move or copy the file name to the temp name
 
226
 
 
227
        $doit $instcmd $src $dsttmp &&
 
228
 
 
229
        trap "rm -f ${dsttmp}" 0 &&
 
230
 
 
231
# and set any options; do chmod last to preserve setuid bits
 
232
 
 
233
# If any of these fail, we abort the whole thing.  If we want to
 
234
# ignore errors from any of these, just make sure not to ignore
 
235
# errors from the above "$doit $instcmd $src $dsttmp" command.
 
236
 
 
237
        if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
 
238
        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
 
239
        if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
 
240
        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
 
241
 
 
242
# Now rename the file to the real destination.
 
243
 
 
244
        $doit $rmcmd -f $dstdir/$dstfile &&
 
245
        $doit $mvcmd $dsttmp $dstdir/$dstfile 
 
246
 
 
247
fi &&
 
248
 
 
249
 
 
250
exit 0