mcabber/install-sh
author Mikael Berthe <mikael@lilotux.net>
Tue, 19 Jun 2007 22:09:10 +0200
changeset 1249 6cb8edbda6d2
parent 25 bf3d6e241714
child 1825 cce89772ea94
permissions -rwxr-xr-x
Fix hgcset.sh when Mercurial is installed but there is no repository
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     1
#!/bin/sh
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     2
#
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     3
# install - install a program, script, or datafile
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     4
# This comes from X11R5 (mit/util/scripts/install.sh).
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     5
#
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     6
# Copyright 1991 by the Massachusetts Institute of Technology
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     7
#
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     8
# Permission to use, copy, modify, distribute, and sell this software and its
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
     9
# documentation for any purpose is hereby granted without fee, provided that
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    10
# the above copyright notice appear in all copies and that both that
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    11
# copyright notice and this permission notice appear in supporting
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    12
# documentation, and that the name of M.I.T. not be used in advertising or
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    13
# publicity pertaining to distribution of the software without specific,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    14
# written prior permission.  M.I.T. makes no representations about the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    15
# suitability of this software for any purpose.  It is provided "as is"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    16
# without express or implied warranty.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    17
#
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    18
# Calling this script install-sh is preferred over install.sh, to prevent
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    19
# `make' implicit rules from creating a file called install from it
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    20
# when there is no Makefile.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    21
#
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    22
# This script is compatible with the BSD install script, but was written
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    23
# from scratch.  It can only install one file at a time, a restriction
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    24
# shared with many OS's install programs.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    26
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    27
# set DOITPROG to echo to test this script
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    28
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    29
# Don't use :- since 4.3BSD and earlier shells don't like it.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    30
doit="${DOITPROG-}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    31
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    32
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    33
# put in absolute paths if you don't have them in your path; or use env. vars.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    34
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    35
mvprog="${MVPROG-mv}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    36
cpprog="${CPPROG-cp}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    37
chmodprog="${CHMODPROG-chmod}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    38
chownprog="${CHOWNPROG-chown}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    39
chgrpprog="${CHGRPPROG-chgrp}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    40
stripprog="${STRIPPROG-strip}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    41
rmprog="${RMPROG-rm}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    42
mkdirprog="${MKDIRPROG-mkdir}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    43
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    44
transformbasename=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    45
transform_arg=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    46
instcmd="$mvprog"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    47
chmodcmd="$chmodprog 0755"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    48
chowncmd=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    49
chgrpcmd=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    50
stripcmd=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    51
rmcmd="$rmprog -f"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    52
mvcmd="$mvprog"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    53
src=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    54
dst=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    55
dir_arg=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    56
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    57
while [ x"$1" != x ]; do
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    58
    case $1 in
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    59
	-c) instcmd="$cpprog"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    60
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    61
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    62
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    63
	-d) dir_arg=true
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    64
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    65
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    66
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    67
	-m) chmodcmd="$chmodprog $2"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    68
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    69
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    70
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    71
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    72
	-o) chowncmd="$chownprog $2"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    73
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    74
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    75
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    76
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    77
	-g) chgrpcmd="$chgrpprog $2"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    78
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    79
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    80
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    81
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    82
	-s) stripcmd="$stripprog"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    83
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    84
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    85
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    86
	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    87
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    88
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    89
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    90
	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    91
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    92
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    93
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    94
	*)  if [ x"$src" = x ]
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    95
	    then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    96
		src=$1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    97
	    else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    98
		# this colon is to work around a 386BSD /bin/sh bug
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
    99
		:
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   100
		dst=$1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   101
	    fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   102
	    shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   103
	    continue;;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   104
    esac
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   105
done
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   106
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   107
if [ x"$src" = x ]
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   108
then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   109
	echo "install:	no input file specified"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   110
	exit 1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   111
else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   112
	true
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   113
fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   114
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   115
if [ x"$dir_arg" != x ]; then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   116
	dst=$src
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   117
	src=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   118
	
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   119
	if [ -d $dst ]; then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   120
		instcmd=:
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   121
		chmodcmd=""
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   122
	else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   123
		instcmd=mkdir
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   124
	fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   125
else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   126
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   127
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   128
# might cause directories to be created, which would be especially bad 
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   129
# if $src (and thus $dsttmp) contains '*'.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   130
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   131
	if [ -f $src -o -d $src ]
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   132
	then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   133
		true
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   134
	else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   135
		echo "install:  $src does not exist"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   136
		exit 1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   137
	fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   138
	
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   139
	if [ x"$dst" = x ]
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   140
	then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   141
		echo "install:	no destination specified"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   142
		exit 1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   143
	else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   144
		true
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   145
	fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   146
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   147
# If destination is a directory, append the input filename; if your system
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   148
# does not like double slashes in filenames, you may need to add some logic
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   149
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   150
	if [ -d $dst ]
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   151
	then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   152
		dst="$dst"/`basename $src`
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   153
	else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   154
		true
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   155
	fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   156
fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   157
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   158
## this sed command emulates the dirname command
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   159
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   160
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   161
# Make sure that the destination directory exists.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   162
#  this part is taken from Noah Friedman's mkinstalldirs script
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   163
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   164
# Skip lots of stat calls in the usual case.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   165
if [ ! -d "$dstdir" ]; then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   166
defaultIFS='	
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   167
'
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   168
IFS="${IFS-${defaultIFS}}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   169
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   170
oIFS="${IFS}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   171
# Some sh's can't handle IFS=/ for some reason.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   172
IFS='%'
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   173
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   174
IFS="${oIFS}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   175
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   176
pathcomp=''
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   177
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   178
while [ $# -ne 0 ] ; do
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   179
	pathcomp="${pathcomp}${1}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   180
	shift
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   181
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   182
	if [ ! -d "${pathcomp}" ] ;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   183
        then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   184
		$mkdirprog "${pathcomp}"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   185
	else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   186
		true
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   187
	fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   188
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   189
	pathcomp="${pathcomp}/"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   190
done
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   191
fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   192
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   193
if [ x"$dir_arg" != x ]
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   194
then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   195
	$doit $instcmd $dst &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   196
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   197
	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   198
	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   199
	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   200
	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   201
else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   202
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   203
# If we're going to rename the final executable, determine the name now.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   204
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   205
	if [ x"$transformarg" = x ] 
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   206
	then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   207
		dstfile=`basename $dst`
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   208
	else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   209
		dstfile=`basename $dst $transformbasename | 
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   210
			sed $transformarg`$transformbasename
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   211
	fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   212
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   213
# don't allow the sed command to completely eliminate the filename
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   214
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   215
	if [ x"$dstfile" = x ] 
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   216
	then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   217
		dstfile=`basename $dst`
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   218
	else
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   219
		true
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   220
	fi
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   221
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   222
# Make a temp file name in the proper directory.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   223
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   224
	dsttmp=$dstdir/#inst.$$#
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   225
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   226
# Move or copy the file name to the temp name
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   227
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   228
	$doit $instcmd $src $dsttmp &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   229
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   230
	trap "rm -f ${dsttmp}" 0 &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   231
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   232
# and set any options; do chmod last to preserve setuid bits
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   233
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   234
# If any of these fail, we abort the whole thing.  If we want to
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   235
# ignore errors from any of these, just make sure not to ignore
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   236
# errors from the above "$doit $instcmd $src $dsttmp" command.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   237
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   238
	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   239
	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   240
	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   241
	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   242
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   243
# Now rename the file to the real destination.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   244
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   245
	$doit $rmcmd -f $dstdir/$dstfile &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   246
	$doit $mvcmd $dsttmp $dstdir/$dstfile 
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   247
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   248
fi &&
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   249
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   250
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
   251
exit 0