Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F92985617
install-sh
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Nov 25, 09:09
Size
5 KB
Mime Type
text/x-shellscript
Expires
Wed, Nov 27, 09:09 (2 d)
Engine
blob
Format
Raw Data
Handle
21291494
Attached To
R3600 invenio-infoscience
install-sh
View Options
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided "as is"
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit
=
"${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog
=
"${MVPROG-mv}"
cpprog
=
"${CPPROG-cp}"
chmodprog
=
"${CHMODPROG-chmod}"
chownprog
=
"${CHOWNPROG-chown}"
chgrpprog
=
"${CHGRPPROG-chgrp}"
stripprog
=
"${STRIPPROG-strip}"
rmprog
=
"${RMPROG-rm}"
mkdirprog
=
"${MKDIRPROG-mkdir}"
transformbasename
=
""
transform_arg
=
""
instcmd
=
"$mvprog"
chmodcmd
=
"$chmodprog 0755"
chowncmd
=
""
chgrpcmd
=
""
stripcmd
=
""
rmcmd
=
"$rmprog -f"
mvcmd
=
"$mvprog"
src
=
""
dst
=
""
dir_arg
=
""
while
[
x
"$1"
!
=
x
]
;
do
case
$1
in
-c
)
instcmd
=
"$cpprog"
shift
continue
;;
-d
)
dir_arg
=
true
shift
continue
;;
-m
)
chmodcmd
=
"$chmodprog $2"
shift
shift
continue
;;
-o
)
chowncmd
=
"$chownprog $2"
shift
shift
continue
;;
-g
)
chgrpcmd
=
"$chgrpprog $2"
shift
shift
continue
;;
-s
)
stripcmd
=
"$stripprog"
shift
continue
;;
-t
=
*
)
transformarg
=
`
echo
$1
| sed
's/-t=//'
`
shift
continue
;;
-b
=
*
)
transformbasename
=
`
echo
$1
| sed
's/-b=//'
`
shift
continue
;;
*
)
if
[
x
"$src"
=
x
]
then
src
=
$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst
=
$1
fi
shift
continue
;;
esac
done
if
[
x
"$src"
=
x
]
then
echo
"install: no input file specified"
exit
1
else
true
fi
if
[
x
"$dir_arg"
!
=
x
]
;
then
dst
=
$src
src
=
""
if
[
-d
$dst
]
;
then
instcmd
=
:
chmodcmd
=
""
else
instcmd
=
mkdir
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if
[
-f
$src
-o -d
$src
]
then
true
else
echo
"install: $src does not exist"
exit
1
fi
if
[
x
"$dst"
=
x
]
then
echo
"install: no destination specified"
exit
1
else
true
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if
[
-d
$dst
]
then
dst
=
"$dst"
/
`
basename
$src
`
else
true
fi
fi
## this sed command emulates the dirname command
dstdir
=
`
echo
$dst
| sed -e
's,[^/]*$,,;s,/$,,;s,^$,.,'
`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if
[
! -d
"$dstdir"
]
;
then
defaultIFS
=
'
'
IFS
=
"${IFS-${defaultIFS}}"
oIFS
=
"${IFS}"
# Some sh's can't handle IFS=/ for some reason.
IFS
=
'%'
set
-
`
echo
${
dstdir
}
| sed -e
's@/@%@g'
-e
's@^%@/@'
`
IFS
=
"${oIFS}"
pathcomp
=
''
while
[
$#
-ne 0
]
;
do
pathcomp
=
"${pathcomp}${1}"
shift
if
[
! -d
"${pathcomp}"
]
;
then
$mkdirprog
"${pathcomp}"
else
true
fi
pathcomp
=
"${pathcomp}/"
done
fi
if
[
x
"$dir_arg"
!
=
x
]
then
$doit
$instcmd
$dst
&&
if
[
x
"$chowncmd"
!
=
x
]
;
then
$doit
$chowncmd
$dst
;
else
true
;
fi
&&
if
[
x
"$chgrpcmd"
!
=
x
]
;
then
$doit
$chgrpcmd
$dst
;
else
true
;
fi
&&
if
[
x
"$stripcmd"
!
=
x
]
;
then
$doit
$stripcmd
$dst
;
else
true
;
fi
&&
if
[
x
"$chmodcmd"
!
=
x
]
;
then
$doit
$chmodcmd
$dst
;
else
true
;
fi
else
# If we're going to rename the final executable, determine the name now.
if
[
x
"$transformarg"
=
x
]
then
dstfile
=
`
basename
$dst
`
else
dstfile
=
`
basename
$dst
$transformbasename
|
sed
$transformarg
`
$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
if
[
x
"$dstfile"
=
x
]
then
dstfile
=
`
basename
$dst
`
else
true
fi
# Make a temp file name in the proper directory.
dsttmp
=
$dstdir
/#inst.
$$
#
# Move or copy the file name to the temp name
$doit
$instcmd
$src
$dsttmp
&&
trap
"rm -f ${dsttmp}"
0
&&
# and set any options; do chmod last to preserve setuid bits
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if
[
x
"$chowncmd"
!
=
x
]
;
then
$doit
$chowncmd
$dsttmp
;
else
true
;
fi
&&
if
[
x
"$chgrpcmd"
!
=
x
]
;
then
$doit
$chgrpcmd
$dsttmp
;
else
true
;
fi
&&
if
[
x
"$stripcmd"
!
=
x
]
;
then
$doit
$stripcmd
$dsttmp
;
else
true
;
fi
&&
if
[
x
"$chmodcmd"
!
=
x
]
;
then
$doit
$chmodcmd
$dsttmp
;
else
true
;
fi
&&
# Now rename the file to the real destination.
$doit
$rmcmd
-f
$dstdir
/
$dstfile
&&
$doit
$mvcmd
$dsttmp
$dstdir
/
$dstfile
fi
&&
exit
0
Event Timeline
Log In to Comment