added util-unixsock.hc
[util-vserver.git] / util-vserver / scripts / functions
index 189f462..21e2991 100644 (file)
@@ -78,7 +78,7 @@ function _pkgMountBindDir()
 function _pkgSetVarsBase
 {
     case "$vserver" in
-       /*)
+       ./*|/*)
            if test -d "$vserver/vdir"; then
                BASEDIR=$vserver
                VDIR=$(getPhysicalDir "$vserver/vdir")
@@ -102,7 +102,7 @@ function _pkgSetVarsBase
            }
            
            VDIR=$BASEDIR/vdir
-           test -d "$VDIR"   || VDIR=/vservers/$vserver
+           test -d "$VDIR"   || VDIR=$DEFAULT_VSERVERDIR/$vserver
            VDIR=$(getPhysicalDir "$VDIR")
            
            PKGDIR=$BASEDIR/apps/pkgmgmt
@@ -154,6 +154,9 @@ function _pkgSetVarsApt
        findDir APTCACHEDIR  "$VDIR"/var/cache/apt
        findDir APTARCHIVDIR "$VDIR"/var/cache/apt/archives /var/cache/apt/archives
     fi
+
+    findFile APT_CONFIG "$APTETCDIR"/apt.conf ""
+    test -z "$APT_CONFIG" || export APT_CONFIG
 }
 
 function _pkgMountBase
@@ -173,6 +176,9 @@ function _pkgMountRPM
 
     "$_SECURE_MOUNT" --chroot "$VDIR" -n --secure --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
     test -z "$WORKAROUND_106057" || mount -n --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
+
+    test -e "$VDIR"/proc/self/status || \
+       "$_SECURE_MOUNT" --chroot "$VDIR" -n --secure -t proc none /proc
 }
 
 function _pkgSetEnvBase
@@ -234,6 +240,13 @@ function pkgInit
     _PKG_VSERVER=$vserver
 }
 
+function isAvoidNamespace
+{
+    test ! -e "$1"/namespace || return 1
+    test -e "$CONFDIR"/.defaults/nonamespace -o \
+         -e "$1"/nonamespace
+}
+
 function getAllVservers
 {
     local i
@@ -243,6 +256,9 @@ function getAllVservers
        test   -d "$i"          || continue
        test ! -e "$i"/disabled || continue
        test   -d "$i"/vdir     || continue
+       case "$i" in
+           *.~*~) continue;;
+       esac
 
        _tmp=( "${_tmp[@]}" "${i##$CONFDIR/}")
     done
@@ -254,19 +270,29 @@ function getAllVservers
 function getVserverStatus
 {
     test -r "$1"/run || return 1
-    eval read "$2" <"$1"/run
+
+    local _ctx
+    read _ctx <"$1"/run
+    eval "$2"=\$_ctx
 
     test "$3"        || return 0
-    local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$ctx" | $_WC -l )
+    local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$_ctx" | $_WC -l )
     eval "$3"=\$_tmp
 
     test "$4" -a $_tmp = 0 || return 0
-    _tmp=$(readlink "$1/run")
+    _tmp=$($_READLINK "$1/run")
     test "$_tmp"           || return 1
     rm -f "$_tmp"
     return 0
 }
 
+## Usage: isCtxRunning <ctx>
+function isCtxRunning
+{
+    local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$1" | $_WC -l )
+    test $_tmp -gt 0
+}
+
 ## Usage: isVserverRunning <vdir> [<ctx-varname>]
 function isVserverRunning
 {
@@ -322,3 +348,10 @@ function checkComponents
 
     test -z "$x_failed"
 }
+
+## Usage: isKernelAPI <ver> [<cmp-modifier>]
+function isKernelAPI
+{
+    local api=$($_VSERVER_INFO - APIVER) || api=0
+    test $[ $api ] -${2:-ge} $[ $1 ]
+}