#!/bin/bash
#
# vprocunhide  sets vserver related attributes for /proc
#
# chkconfig: 2345 26 74
# description: Makes some /proc entries visibly for vservers

: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
test -e "$UTIL_VSERVER_VARS" || {
    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
    exit 1
}
. "$UTIL_VSERVER_VARS"

$_VSERVER_INFO - FEATURE iattr || exit 0

f=/etc/rc.d/init.d/functions
if test -e "$f"; then
    . "$f"
    lockfile=/var/lock/subsys/vprocunhide
else
    success() { echo .; }
    passed()  { echo .; }
    failure() { echo ERROR; }
    lockfile=/var/run/vprocunhide
fi


function start()
{
    if [ -e /proc/self/vinfo ];then
    	   echo -n $"Fixing visibility of /proc entries for Vservers..."
           $_VPROCUNHIDE
           retval=$?
    else
    	   echo -n $"Vserver capability not detected in kernel."
           retval=0
    fi
    case "$retval" in
	0)	success;;
	2)	passed; retval=0;;
	*)	failure;
    esac
    echo
    test "$retval" -ne 0 || touch "$lockfile"
    return $retval
}

function stop()
{
    rm -f "$lockfile"
}

function restart()
{
    stop
    start
}

case "$1" in
    start|stop|restart)	$1;;
    reload)		;;
    condrestart)
	test -f $lockfile && restart || :
	;;
    status)
	test -f $lockfile && {
	    echo $"/proc entries were fixed"
	    exit 0
	}
	echo $"/proc entries are not fixed"
	exit 1
	;;
    *)
        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
	exit 2
	;;
esac
