source: rtems/install-sh @ 458d4e66

4.104.114.84.95
Last change on this file since 458d4e66 was 6f9c75c3, checked in by Joel Sherrill <joel.sherrill@…>, on Jan 16, 1998 at 4:56:48 PM

Ralf Corsepius reported a number of missing CVS Id's:

RTEMS is under CVS control and has been since rtems 3.1.16 which was
around May 1995. So I just to add the $Id$. If you notice other files
with missing $Id$'s let me know. I try to keep w\up with it.

Now that you have asked -- I'll attach a list of files lacking an RCS-Id to
this mail. This list has been generated by a little sh-script I'll also
enclose.

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