Path: utzoo!utgpu!water!watmath!clyde!bellcore!decvax!decwrl!labrea!agate!pasteur!ames!elroy!spl1!laidbak!daveb From: daveb@laidbak.UUCP (Dave Burton) Newsgroups: comp.unix.xenix Subject: Re: "install" command Message-ID: <1409@laidbak.UUCP> Date: 15 Apr 88 06:04:32 GMT References: Reply-To: daveb@laidbak.UUCP (Dave Burton) Organization: is pretty bad/My method of Lines: 99 In article jl42+@andrew.cmu.edu (Jay Mathew Libove) writes: |There is a command on Berkeley systems called "install" which copies |a file, changes its modes, does careful copying, maybe even does owner |changes, and which some software distributions use. In such cases, it |is necessary to hand edit every use of the "install" command in a |makefile to the appropriate cp, mv, chown, chmod, chgrp, etc... |commands. What a nuisance. |Anyone got such a command for Xenix (or SysV in general?) The following is my rendition of install. Near as I can tell, it works just like Berkeley's install. I don't thinks it has any bugs, but you never know... :-) cat >install <<'EOF' : # # @(#)install 1.1 1/31/88 # # install - install executables # PATH=/bin:/usr/bin IFS=" " PROGNAME=`basename $0` USAGE="usage: $PROGNAME [-cs] [-m mode] [-o owner] [-g group] binary location" cmd=/bin/mv mode=755 owner=bin group=bin strip=false set -- `getopt 'csm:o:g:' $*` if [ $? -ne 0 ] then echo $USAGE >&2;exit 1 fi for option do case $option in -c) cmd=/bin/cp; shift;; -s) strip=true; shift;; -m) mode=$2; shift;shift;; -o) owner=$2; shift;shift;; -g) group=$2; shift;shift;; --) shift;break;; esac done if [ $# -ne 2 ] then echo $USAGE >&2;exit 1 fi file=`basename $1` loc=$2 if [ ! -f $file ] then echo "$PROGNAME: cannot access '$file'" >&2; exit 2 fi set -- `ls -ldi $file` finode=$1 if [ -d $loc ] then loc=${loc}/$file fi if [ -f $loc ] then set -- `ls -ldi $loc` linode=$1 if [ $file = $loc -o $finode = $linode ] then echo "$PROGNAME: '$file' would copy onto itself" >&2; exit 2 fi fi rm -f $loc if $cmd $file $loc then : else echo "$PROGNAME: cannot put '$file' at '$lo