X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fscripts%2Fvrpm-preload;h=db99902902c2b023696597b1b7a42b45147bda31;hb=faa778968d1a7dfeaebc9fe4b847e691dc62fd15;hp=50a5f5c2921958431fc3070872841dd80d9af2c3;hpb=b562f3d09686bb1686646c949b6f92c94eb2d64c;p=util-vserver.git diff --git a/util-vserver/scripts/vrpm-preload b/util-vserver/scripts/vrpm-preload index 50a5f5c..db99902 100755 --- a/util-vserver/scripts/vrpm-preload +++ b/util-vserver/scripts/vrpm-preload @@ -1,55 +1,37 @@ -#! /bin/bash -x - -: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars} +#! /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:=/usr/lib/util-vserver/util-vserver-vars} test -e "$UTIL_VSERVER_VARS" || { - echo "Can not find util-vserver installation; aborting..." + echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2 exit 1 } . "$UTIL_VSERVER_VARS" +. "$_LIB_FUNCTIONS" -lib=$_RPM_FAKE_SO - -function getSyscallParams -{ - set -- `grep '^__NR_new_s_context:' /proc/self/status` - scall_nr=$2 - test "$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 +for bin in `which rpm` /bin/rpm /usr/lib/rpm/rpm${RPM_FLAVOR:-i} ""; do ldd "$bin" &>/dev/null && break done -test "$bin" || { - echo "No dynamically linked rpm binary found; exiting..." - exit 1 -} - - -getSyscallParams +test -x "$bin" || + panic $"No dynamically linked rpm binary found; exiting..." -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 "$@" +rpmFake.init "$CUR_VSERVER" +rpmFake.exec "$bin" "$@"