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=d9316d85a3d13a8c471b4a520ee18781a3065ef5;hpb=6674fb1a4c28bbe146b80c7e79d3223d080644e2;p=util-vserver.git diff --git a/util-vserver/scripts/vrpm-preload b/util-vserver/scripts/vrpm-preload index d9316d8..db99902 100755 --- a/util-vserver/scripts/vrpm-preload +++ b/util-vserver/scripts/vrpm-preload @@ -18,55 +18,20 @@ set -e -: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars} +: ${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 -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 +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" "$@"