--- vserver-0.22.orig/vserver
+++ vserver-0.22/vserver
@@ -1,5 +1,6 @@
-#!/bin/sh
+#!/bin/bash
 # This is a script to control a virtual server
+VSERVERS_ROOT=/vservers
 USR_SBIN=/usr/sbin
 USR_LIB_VSERVER=/usr/lib/vserver
 VSERVER_CMD=$USR_SBIN/vserver
@@ -8,6 +9,11 @@
 SAVE_S_CONTEXT_CMD=$USR_LIB_VSERVER/save_s_context
 CAPCHROOT_CMD=$USR_LIB_VSERVER/capchroot
 VSERVERKILLALL_CMD=$USR_LIB_VSERVER/vserverkillall
+
+if [ -r /etc/vserver.conf ] ; then
+    . /etc/vserver.conf
+fi
+
 vserver_mknod(){
 	mknod $1 $2 $3 $4
 	chmod $5 $1
@@ -31,14 +37,14 @@
 # This is the key to avoid chroot escape
 testperm()
 {
-	PERM=`$USR_LIB_VSERVER/showperm /vservers/$1/..`
+	PERM=`$USR_LIB_VSERVER/showperm $VSERVERS_ROOT/$1/..`
 	if [ "$PERM" != 000 ] ; then
 		echo
 		echo "**********************************************************"
-		echo /vservers/$1/.. has insecure permissions.
+		echo $VSERVERS_ROOT/$1/.. has insecure permissions.
 		echo A vserver administrator may be able to visit the root server.
 		echo To fix this, do
-		echo "	" chmod 000 /vservers/$1/..
+		echo "	" chmod 000 $VSERVERS_ROOT/$1/..
 		echo do it anytime you want, even if vservers are running.
 		echo "**********************************************************"
 		echo
@@ -154,7 +160,7 @@
 # Extract the initial runlevel from the vserver inittab
 get_initdefault()
 {
-	INITDEFAULT=`grep :initdefault /vservers/$1/etc/inittab | sed 's/:/ /g' | ( read a level b; echo $level)`
+	INITDEFAULT=`grep :initdefault $VSERVERS_ROOT/$1/etc/inittab | sed 's/:/ /g' | ( read a level b; echo $level)`
 }
 
 # Read the vserver configuration file, reusing the PROFILE value
@@ -174,7 +180,7 @@
 {
 	echo vserver [ options ] server-name command ...
 	echo
-	echo server-name is a directory in /vservers
+	echo server-name is a directory in $VSERVERS_ROOT
 	echo
 	echo The commands are:
 	echo " build   : Create a virtual server by copying the packages"
@@ -218,20 +224,20 @@
 	usage
 elif [ "$2" = "build" ] ; then
 	# Either the directory does not exist or is empty
-	NBSUB=`ls /vservers/$1 2>/dev/null | grep -v lost+found | wc -l` 
+	NBSUB=`ls $VSERVERS_ROOT/$1 2>/dev/null | grep -v lost+found | wc -l` 
 	NBSUB=`expr $NBSUB`
 	if [ "$NBSUB" != 0 ] ; then
-		echo Virtual server /vservers/$1 already exist
+		echo Virtual server $VSERVERS_ROOT/$1 already exist
 	else
-		if [ ! -d /vservers ] ; then
-			mkdir /vservers || exit 1
-			chmod 000 /vservers
-			echo Directory /vservers was created with permissions 000
-		fi
-		mkdir -p /vservers/$1 || exit 1
-		chmod 755 /vservers/$1
-		cp -ax /sbin /bin /etc /usr /var /lib /vservers/$1/. || exit 1
-		cd /vservers/$1 || exit 1
+		if [ ! -d $VSERVERS_ROOT ] ; then
+			mkdir $VSERVERS_ROOT || exit 1
+			chmod 000 $VSERVERS_ROOT
+			echo Directory $VSERVERS_ROOT was created with permissions 000
+		fi
+		mkdir -p $VSERVERS_ROOT/$1 || exit 1
+		chmod 755 $VSERVERS_ROOT/$1
+		cp -ax /sbin /bin /etc /usr /var /lib $VSERVERS_ROOT/$1/. || exit 1
+		cd $VSERVERS_ROOT/$1 || exit 1
 		rm -fr lib/modules/*
 		rm -f var/spool/mail/*
 		rm -f `find var/run -type f`
@@ -268,7 +274,7 @@
 				*.bak|*~|functions|killall|halt|single)
 					;;
 				*)
-					#$USR_LIB_VSERVER/capchroot /vservers/$1 /sbin/chkconfig --level 2345 $serv off
+					#$USR_LIB_VSERVER/capchroot $VSERVERS_ROOT/$1 /sbin/chkconfig --level 2345 $serv off
 					$0 --silent $1 chkconfig --level 2345 $serv off
 					;;
 				esac
@@ -284,7 +290,7 @@
 		cp -a $USR_LIB_VSERVER/vreboot sbin/.
 		ln -sf vreboot sbin/vhalt
 
-		echo Directory /vservers/$1 has been populated
+		echo Directory $VSERVERS_ROOT/$1 has been populated
 		if [ ! -d /etc/vservers ] ; then
 			mkdir /etc/vservers
 			chmod 600 /etc/vservers
@@ -370,8 +376,8 @@
 elif [ ! -f /etc/vservers/$1.conf ] ; then
 	echo No configuration for this vserver: /etc/vservers/$1.conf
 	exit 1
-elif [ ! -d /vservers/$1/. ] ; then
-	echo No directory for this vserver: /vservers/$1
+elif [ ! -d $VSERVERS_ROOT/$1/. ] ; then
+	echo No directory for this vserver: $VSERVERS_ROOT/$1
 	exit 1
 elif [ "$2" = "start" ] ; then
 	echo Starting the virtual server $1
@@ -388,11 +394,11 @@
 		. /etc/vservers/$1.conf
 		export PROFILE
 		ifconfig_iproot $1
-		cd /vservers/$1 || exit 1
+		cd $VSERVERS_ROOT/$1 || exit 1
 		rm -f `find var/run -type f`
 		touch var/run/utmp
 		rm -f  var/lock/subsys/*
-		mountproc /vservers/$1
+		mountproc $VSERVERS_ROOT/$1
 		CTXOPT=
 		HOSTOPT=
 		DOMAINOPT=
@@ -401,7 +407,7 @@
 		CAPS=
 		get_initdefault $1
 		STARTCMD="/etc/rc.d/rc $INITDEFAULT"
-		if [ -x /vservers/$1/etc/init.d/rc ] ; then
+		if [ -x $VSERVERS_ROOT/$1/etc/init.d/rc ] ; then
 			STARTCMD="/etc/init.d/rc $INITDEFAULT"
 		fi
 
@@ -459,9 +465,9 @@
 		fi
 		#echo FLAGS=$FLAGS
 		#echo CAPS=$CAPS
-		# We switch to /vservers/$1 now, because after the
-		# security context switch /vservers directory becomes a dead zone.
-		cd /vservers/$1
+		# We switch to $VSERVERS_ROOT/$1 now, because after the
+		# security context switch $VSERVERS_ROOT directory becomes a dead zone.
+		cd $VSERVERS_ROOT/$1
 		IPOPT=`setipopt $IPROOT`
 		export PATH=/sbin:/usr/sbin:/bin:/usr/bin
 		$NICECMD $CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
@@ -507,13 +513,13 @@
 	then
 		test -x /etc/vservers/$1.sh && /etc/vservers/$1.sh pre-stop $1
 		ifconfig_iproot $1
-		cd /vservers/$1
-		mountproc /vservers/$1
+		cd $VSERVERS_ROOT/$1
+		mountproc $VSERVERS_ROOT/$1
 		# The fakeinit flag tell us how to turn off the server
 		get_initdefault $1
 		export PREVLEVEL=$INITDEFAULT
 		STOPCMD="/etc/rc.d/rc 6"
-		if [ -x /vservers/$1/etc/init.d/rc ] ; then
+		if [ -x $VSERVERS_ROOT/$1/etc/init.d/rc ] ; then
 			STOPCMD="/etc/init.d/rc 6"
 		fi
 		for f in $S_FLAGS dummy
@@ -528,7 +534,7 @@
 			esac
 		done
 
-		cd /vservers/$1
+		cd $VSERVERS_ROOT/$1
 		IPOPT=`setipopt $IPROOT`
 		export PATH=/sbin:/usr/sbin:/bin:/usr/bin
 		$CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
@@ -543,7 +549,7 @@
 	fi
 	# We umount anyway, because "enter" establish the mount
 	# but when you exit, the server is considered not running
-	umountproc /vservers/$1
+	umountproc $VSERVERS_ROOT/$1
 	cd /
 	test -x /etc/vservers/$1.sh && /etc/vservers/$1.sh post-stop $1
 	ifconfig_iproot_off $1
@@ -560,9 +566,9 @@
 	IPROOTDEV=
 	readlastconf $1
 	. /etc/vservers/$1.conf
-	cd /vservers/$1
+	cd $VSERVERS_ROOT/$1
 	ifconfig_iproot $1
-	mountproc /vservers/$1
+	mountproc $VSERVERS_ROOT/$1
 	PS1="[\u@vserver:$1 \W]"
 	export PS1
 	VSERVER=$1
@@ -588,7 +594,7 @@
 	if $0 $VSERVER running >/dev/null
 	then
 		. /var/run/vservers/$VSERVER.ctx
-		cd /vservers/$VSERVER
+		cd $VSERVERS_ROOT/$VSERVER
 		IPOPT=`setipopt $IPROOT`
 		export PATH=/sbin:/usr/sbin:/bin:/usr/bin
 		$CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
@@ -610,7 +616,7 @@
 			DOMAINOPT="--domainname $S_DOMAINNAME"
 		fi
 		mkdir -p /var/run/vservers
-		cd /vservers/$VSERVER
+		cd $VSERVERS_ROOT/$VSERVER
 		IPOPT=`setipopt $IPROOT`
 		export PATH=/sbin:/usr/sbin:/bin:/usr/bin
 		$CHBIND_CMD $SILENT $IPOPT --bcast $IPROOTBCAST \
@@ -641,9 +647,9 @@
 	fi
 	if [ $# != 2 ] ; then
 		echo Invalid argument, expected vserver name chkconfig [ --level nnn ] service on\|off
-	elif [ -x /vservers/$VSERVER/sbin/chkconfig ] ; then
+	elif [ -x $VSERVERS_ROOT/$VSERVER/sbin/chkconfig ] ; then
 		exec $0 --silent $VSERVER exec /sbin/chkconfig "$@"
-	elif [ -x /vservers/$VSERVER/usr/sbin/update-rc.d ] ; then
+	elif [ -x $VSERVERS_ROOT/$VSERVER/usr/sbin/update-rc.d ] ; then
 		if [ "$2" = "on" -o "$2" = "start" ] ; then
 			$0 --silent $VSERVER exec /usr/sbin/update-rc.d -f $1 remove >/dev/null
 			exec $0 --silent $VSERVER exec /usr/sbin/update-rc.d $1 start 80 2 3 4 5 . stop 20 0 1 6 . >/dev/null
