sendKillSequence(): added
[util-vserver.git] / util-vserver / scripts / vrpm-preload
1 #! /bin/bash
2 # $Id$
3
4 # Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
5 #  
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; version 2 of the License.
9 #  
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #  
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 set -e
20
21 : ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
22 test -e "$UTIL_VSERVER_VARS" || {
23     echo "Can not find util-vserver installation; aborting..."
24     exit 1
25 }
26 . "$UTIL_VSERVER_VARS"
27
28 lib=$_RPM_FAKE_SO
29
30 function getSyscallParams
31 {
32     set -- `grep '^__NR_new_s_context:' /proc/self/status`
33     scall_nr=$2
34     test -z "$3" || scall_rev=${3##rev}
35 }
36
37 need_cfg=
38 case "$CUR_VSERVER" in
39     /*) vdir=$CUR_VSERVER;;
40     *)  vdir=$CONFDIR/$CUR_VSERVER/vdir
41         need_cfg=1;;
42 esac
43
44 test "$CUR_VSERVER" -a -d "$vdir" || {
45     echo "No or invalid vserver-name given"
46     exit 1
47 }
48
49 ctxfile=/var/run/vservers/${CUR_VSERVER}.ctx
50 if test -f "$ctxfile"; then
51     . "$ctxfile"
52 else
53     S_CONTEXT=
54 fi
55
56 for bin in `which rpm` /bin/rpm /usr/lib/rpm/rpmi ""; do
57     ldd "$bin" &>/dev/null && break
58 done
59
60 test "$bin" || {
61     echo "No dynamically linked rpm binary found; exiting..."
62     exit 1
63 }
64
65 getSyscallParams
66
67 RPM_FAKE_S_CONTEXT_REV=$scall_rev \
68 RPM_FAKE_S_CONTEXT_NR=$scall_nr \
69 RPM_FAKE_CTX=$S_CONTEXT \
70 RPM_FAKE_CAP=$[ ~0x3404040f ] \
71 LD_PRELOAD=$lib${LD_PRELOAD:+:$LD_PRELOAD} \
72 exec $bin "$@"