X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fscripts%2Ffunctions;h=a2ad7f3d21804ba357fed2cdf272fd844e187191;hb=54adb8bb5608e15ab944db970a1b287be28d7487;hp=4ff4e415daba7ec4274177995789e899ee69ad84;hpb=66ff8eb2e4f7e51fab7bf0eae4a756c9f54b7132;p=util-vserver.git diff --git a/util-vserver/scripts/functions b/util-vserver/scripts/functions index 4ff4e41..a2ad7f3 100644 --- a/util-vserver/scripts/functions +++ b/util-vserver/scripts/functions @@ -242,9 +242,13 @@ function pkgInit function isAvoidNamespace { - test ! -e "$1"/namespace || return 1 + local cfgdir + + $_VSERVER_INFO - FEATURE namespace || return 0 + cfgdir=$($_VSERVER_INFO "$1" CFGDIR) || return 0 + test ! -e "$cfgdir"/namespace || return 1 test -e "$CONFDIR"/.defaults/nonamespace -o \ - -e "$1"/nonamespace + -e "$cfgdir"/nonamespace } function getAllVservers @@ -279,10 +283,10 @@ function getVserverStatus local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$_ctx" | $_WC -l ) eval "$3"=\$_tmp - test "$4" -a $_tmp = 0 || return 0 + test "$4" -o $_tmp != 0 || return 1 _tmp=$($_READLINK "$1/run") - test "$_tmp" || return 1 - rm -f "$_tmp" + test "$_tmp" || return 1 + test -z "$4" || rm -f "$_tmp" return 0 } @@ -355,3 +359,19 @@ function isKernelAPI local api=$($_VSERVER_INFO - APIVER) || api=0 test $[ $api ] -${2:-ge} $[ $1 ] } + +## Usage: callInNamespace * +function callInNamespace +{ + local ctx= + + isAvoidNamespace "$1" || \ + ctx=$( $_VSERVER_INFO "$1" CONTEXT t ) || ctx= + + shift + if test "$ctx"; then + $_VNAMESPACE --enter "$ctx" -- "$@" + else + "$@" + fi +}