String_c_str(): added
[util-vserver.git] / util-vserver / scripts / functions
index 9c30174..391961b 100644 (file)
@@ -291,11 +291,15 @@ function _pkgMountRPM
     _pkgMountBindDir "$RPMETCDIR" /etc/rpm
     test "$RPMLIBDIR" = "/" || _pkgMountBindDir "$RPMLIBDIR" /usr/lib/rpm
 
-    "$_SECURE_MOUNT" --chroot "$VDIR" -n --secure --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
+    pushd "$VDIR" >/dev/null
+
+    "$_SECURE_MOUNT" --chroot -n --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
+       "$_SECURE_MOUNT" --chroot -n -t proc none /proc
+
+    popd >/dev/null
 }
 
 function _pkgSetEnvBase
@@ -387,6 +391,24 @@ function getAllVservers
     eval $1='( "${_tmp[@]}" )'
 }
 
+## Usage: _getProcNumberCount <ctx> <var>
+function _getProcNumberCount
+{
+    local var=$2
+    local procnr_cnt=0
+
+    # Use /proc/virtual from kernel 2.6 when possible
+    if test -d "/proc/virtual"; then
+       set -- $($_GREP '^PROC:' "/proc/virtual/$1/limit" 2>/dev/null)
+       procnr_cnt=$2
+    else
+       procnr_cnt=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$1" | $_WC -l )
+    fi
+
+    let procnr_cnt=procnr_cnt+0
+    eval $var=\$procnr_cnt
+}
+
 ## Usage: getVserverCtx <vdir> <result-varname> [<procnumber-varname> [<do-cleanup>]]
 ## Returns: 0 iff vserver is running
 function getVserverStatus
@@ -398,8 +420,8 @@ function getVserverStatus
     eval "$2"=\$_ctx
 
     test "$3"        || return 0
-    local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$_ctx" | $_WC -l )
-    let _tmp=_tmp+0
+    local _tmp
+    _getProcNumberCount "$_ctx" _tmp
     eval "$3"=\$_tmp
 
     if test "$_tmp" = 0; then
@@ -414,7 +436,8 @@ function getVserverStatus
 ## Usage: isCtxRunning <ctx>
 function isCtxRunning
 {
-    local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$1" | $_WC -l )
+    local _tmp
+    _getProcNumberCount "$1" _tmp
     test $_tmp -gt 0
 }
 
@@ -758,7 +781,7 @@ function vshelper.initSync
 
     local fifo="$tmpdir"/pipe
     mkfifo -m700 "$fifo"
-    vshelper.doInit "$VSERVER_DIR" sync "$fifo"
+    vshelper.doInit "$1" sync "$fifo"
     eval $2=\$fifo
 }