File:
[gforth] /
gforth /
install-sh
Revision
1.1:
download - view:
text,
annotated -
select for diffs
Mon Dec 12 17:10:40 1994 UTC (29 years, 3 months ago) by
anton
Branches:
MAIN
CVS tags:
v0-5-0,
v0-4-0,
v0-3-0,
v0-2-1,
v0-2-0,
gforth-0_1beta,
HEAD
Reorganized configuration: configure is now created by autoconf from
configure.in; I still left it in the CVS repository because not
everyone has autoconf. decstation.h renamed to mips.h and apollo68k to
m68k. Added general 32bit.h description, which the other machine
descriptions use. Created/copied replacement files install-sh memcmp.c
memmove.c select.c (carved out from ecvt.c) strtol.c
strtoul.c. Bytesex is now handled by configure.
Deciding the threading method is now done in machine.h, this should
also be done for USE_TOS and USE_FTOS.
1: #!/bin/sh
2: #
3: # install - install a program, script, or datafile
4: # This comes from X11R5.
5: #
6: # Calling this script install-sh is preferred over install.sh, to prevent
7: # `make' implicit rules from creating a file called install from it
8: # when there is no Makefile.
9: #
10: # This script is compatible with the BSD install script, but was written
11: # from scratch.
12: #
13:
14:
15: # set DOITPROG to echo to test this script
16:
17: # Don't use :- since 4.3BSD and earlier shells don't like it.
18: doit="${DOITPROG-}"
19:
20:
21: # put in absolute paths if you don't have them in your path; or use env. vars.
22:
23: mvprog="${MVPROG-mv}"
24: cpprog="${CPPROG-cp}"
25: chmodprog="${CHMODPROG-chmod}"
26: chownprog="${CHOWNPROG-chown}"
27: chgrpprog="${CHGRPPROG-chgrp}"
28: stripprog="${STRIPPROG-strip}"
29: rmprog="${RMPROG-rm}"
30: mkdirprog="${MKDIRPROG-mkdir}"
31:
32: tranformbasename=""
33: transform_arg=""
34: instcmd="$mvprog"
35: chmodcmd="$chmodprog 0755"
36: chowncmd=""
37: chgrpcmd=""
38: stripcmd=""
39: rmcmd="$rmprog -f"
40: mvcmd="$mvprog"
41: src=""
42: dst=""
43: dir_arg=""
44:
45: while [ x"$1" != x ]; do
46: case $1 in
47: -c) instcmd="$cpprog"
48: shift
49: continue;;
50:
51: -d) dir_arg=true
52: shift
53: continue;;
54:
55: -m) chmodcmd="$chmodprog $2"
56: shift
57: shift
58: continue;;
59:
60: -o) chowncmd="$chownprog $2"
61: shift
62: shift
63: continue;;
64:
65: -g) chgrpcmd="$chgrpprog $2"
66: shift
67: shift
68: continue;;
69:
70: -s) stripcmd="$stripprog"
71: shift
72: continue;;
73:
74: -t=*) transformarg=`echo $1 | sed 's/-t=//'`
75: shift
76: continue;;
77:
78: -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
79: shift
80: continue;;
81:
82: *) if [ x"$src" = x ]
83: then
84: src=$1
85: else
86: # this colon is to work around a 386BSD /bin/sh bug
87: :
88: dst=$1
89: fi
90: shift
91: continue;;
92: esac
93: done
94:
95: if [ x"$src" = x ]
96: then
97: echo "install: no input file specified"
98: exit 1
99: else
100: true
101: fi
102:
103: if [ x"$dir_arg" != x ]; then
104: dst=$src
105: src=""
106:
107: if [ -d $dst ]; then
108: instcmd=:
109: else
110: instcmd=mkdir
111: fi
112: else
113:
114: # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
115: # might cause directories to be created, which would be especially bad
116: # if $src (and thus $dsttmp) contains '*'.
117:
118: if [ -f $src -o -d $src ]
119: then
120: true
121: else
122: echo "install: $src does not exist"
123: exit 1
124: fi
125:
126: if [ x"$dst" = x ]
127: then
128: echo "install: no destination specified"
129: exit 1
130: else
131: true
132: fi
133:
134: # If destination is a directory, append the input filename; if your system
135: # does not like double slashes in filenames, you may need to add some logic
136:
137: if [ -d $dst ]
138: then
139: dst="$dst"/`basename $src`
140: else
141: true
142: fi
143: fi
144:
145: ## this sed command emulates the dirname command
146: dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
147:
148: # Make sure that the destination directory exists.
149: # this part is taken from Noah Friedman's mkinstalldirs script
150:
151: # Skip lots of stat calls in the usual case.
152: if [ ! -d "$dstdir" ]; then
153: defaultIFS='
154: '
155: IFS="${IFS-${defaultIFS}}"
156:
157: oIFS="${IFS}"
158: # Some sh's can't handle IFS=/ for some reason.
159: IFS='%'
160: set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
161: IFS="${oIFS}"
162:
163: pathcomp=''
164:
165: while [ $# -ne 0 ] ; do
166: pathcomp="${pathcomp}${1}"
167: shift
168:
169: if [ ! -d "${pathcomp}" ] ;
170: then
171: $mkdirprog "${pathcomp}"
172: else
173: true
174: fi
175:
176: pathcomp="${pathcomp}/"
177: done
178: fi
179:
180: if [ x"$dir_arg" != x ]
181: then
182: $doit $instcmd $dst &&
183:
184: if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
185: if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
186: if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
187: if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
188: else
189:
190: # If we're going to rename the final executable, determine the name now.
191:
192: if [ x"$transformarg" = x ]
193: then
194: dstfile=`basename $dst`
195: else
196: dstfile=`basename $dst $transformbasename |
197: sed $transformarg`$transformbasename
198: fi
199:
200: # don't allow the sed command to completely eliminate the filename
201:
202: if [ x"$dstfile" = x ]
203: then
204: dstfile=`basename $dst`
205: else
206: true
207: fi
208:
209: # Make a temp file name in the proper directory.
210:
211: dsttmp=$dstdir/#inst.$$#
212:
213: # Move or copy the file name to the temp name
214:
215: $doit $instcmd $src $dsttmp &&
216:
217: trap "rm -f ${dsttmp}" 0 &&
218:
219: # and set any options; do chmod last to preserve setuid bits
220:
221: # If any of these fail, we abort the whole thing. If we want to
222: # ignore errors from any of these, just make sure not to ignore
223: # errors from the above "$doit $instcmd $src $dsttmp" command.
224:
225: if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
226: if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
227: if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
228: if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
229:
230: # Now rename the file to the real destination.
231:
232: $doit $rmcmd -f $dstdir/$dstfile &&
233: $doit $mvcmd $dsttmp $dstdir/$dstfile
234:
235: fi &&
236:
237:
238: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>