#! /bin/bash # $Id$ # Copyright (C) 2003 Enrico Scholz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. set -e : ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars} test -e "$UTIL_VSERVER_VARS" || { echo "Can not find util-vserver installation; aborting..." exit 1 } . "$UTIL_VSERVER_VARS" lib=$_RPM_FAKE_SO function getSyscallParams { set -- `grep '^__NR_new_s_context:' /proc/self/status` scall_nr=$2 test -z "$3" || scall_rev=${3##rev} } need_cfg= case "$CUR_VSERVER" in /*) vdir=$CUR_VSERVER;; *) vdir=$CONFDIR/$CUR_VSERVER/vdir need_cfg=1;; esac test "$CUR_VSERVER" -a -d "$vdir" || { echo "No or invalid vserver-name given" exit 1 } ctxfile=/var/run/vservers/${CUR_VSERVER}.ctx if test -f "$ctxfile"; then . "$ctxfile" else S_CONTEXT= fi for bin in `which rpm` /bin/rpm /usr/lib/rpm/rpmi ""; do ldd "$bin" &>/dev/null && break done test "$bin" || { echo "No dynamically linked rpm binary found; exiting..." exit 1 } getSyscallParams RPM_FAKE_S_CONTEXT_REV=$scall_rev \ RPM_FAKE_S_CONTEXT_NR=$scall_nr \ RPM_FAKE_CTX=$S_CONTEXT \ RPM_FAKE_CAP=$[ ~0x3404040f ] \ LD_PRELOAD=$lib${LD_PRELOAD:+:$LD_PRELOAD} \ exec $bin "$@"