#!/bin/sh -e
# Copyright @BABOLO (C)2002,2003
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $Id: up-exec,v 1.6 2003/05/06 05:37:36 babolo Exp $

. ${JAILUP_CONF}
collectdir="${JAILUPSAV}/exe"
${mkdir} "${collectdir}"
dst="${1}"
if  [ -z "${dst}" ]; then
    exit 1
fi
shift

for i in `${cat}`; do
    b=`${basename} "${i}"`
    #     ,   
    if  [ -z "${i%%/*}" ]; then			#  ,    
        j="${i}"
    else					#   
        j=
        for l in "$@"; do
            if  [ -x "${l}/${i}" ]; then
                j="${l}/${i}"
                break
            fi
        done
    fi
    if  [ -z "${j}" ]; then			#    PATH
        set +e
        j=`which "${i}"`			# not ${which} for reason
        if  [ "$?" -ne 0 ]; then		#      
            j=""				#  ,     .
        fi
        set -e
    fi
    if  [ -x "${collectdir}/${b}" ]; then	#      
        if [ -z "${j}" ] || ${cmp} "${j}" "${collectdir}/${b}"; then
        else					#   -   
            ${rmflaged} -f "${collectdir}/${b}"
        fi
    elif [ -e "${collectdir}/${b}" ]; then
        ${rmflaged} -f "${collectdir}/${b}"	#       
    fi
    if  [ ! -x "${collectdir}/${b}" ]; then	#   
        if  [ -z "${j}" ]; then			#   ,   
            echo jailup: up exe: "${i}" not found
            exit 65
        fi
        ${install} -C -o root -g wheel -m 555 "${j}" "${collectdir}/${b}"       #  
    fi
    ${lnflaged} -ff "${collectdir}/${b}" "${dst}/${b}"
    ${chflags} schg,sunlnk "${collectdir}/${b}"
done
