use $(LIBENSCVECTOR) instead of libensc_vector.a
[util-vserver.git] / util-vserver / scripts / vserver
index 74709cc..1327d2b 100755 (executable)
@@ -20,7 +20,7 @@
 
 : ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
 test -e "$UTIL_VSERVER_VARS" || {
-    echo "Can not find util-vserver installation; aborting..."
+    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
     exit 1
 }
 . "$UTIL_VSERVER_VARS"
@@ -99,7 +99,7 @@ the GNU General Public License.  This program has absolutely no warranty."
 
 function suexec()
 {
-    . $PKGLIBDIR/vserver.suexec
+    . $__PKGLIBDIR/vserver.suexec
 }
 
 function restart()
@@ -108,32 +108,46 @@ function restart()
     exec "${SELF[@]}" "$vserver" start
 }
 
+function msg()
+{
+    test -z "$OPTION_SILENT" || return 0
+    echo "$@"
+}
+
 ### main starts here
 
 set +e
 
-tmp=$(getopt -o +sv --long help,debug,version,sync,verbose,silent -n "$0" -- "$@") || exit 1
+OPTIONS_ORIG=( "$@" )
+tmp=$(getopt -o +sv --long nonamespace,--nonamespace,--insecure,defaulttty,help,debug,version,sync,verbose,silent -n "$0" -- "$@") || exit 1
 eval set -- "$tmp"
 
 OPTION_FORCE_SYNC=
 OPTION_VERBOSE=
 OPTION_SILENT=
 OPTION_DEBUG=
+OPTION_NONAMESPACE=
+OPTION_INSECURE=
+OPTION_DEFAULTTTY=
 
 while true; do
     case "$1" in
-       --help)         showHelp $0 ;;
-       --version)      showVersion ;;
-       --debug)        OPTION_DEBUG=$1; set -x; shift;;
-       -v|--verbose)   OPTION_VERBOSE=$1;    shift;;
-       -s|--sync)      OPTION_FORCE_SYNC=$1; shift;;
-       --silent)       OPTION_SILENT=$1;     shift;;
-       --)             shift; break;;
-       *)              echo $"vserver: internal error; arg=='$1'"; exit 1;;
+       (--help)        showHelp $0 ;;
+       (--version)     showVersion ;;
+       (--debug)       OPTION_DEBUG=$1; set -x;;
+       (-v|--verbose)  OPTION_VERBOSE=$1;;
+       (-s|--sync)     OPTION_FORCE_SYNC=$1;;
+       (--silent)      OPTION_SILENT=$1;;
+       (----nonamespace)OPTION_NONAMESPACE=$1;;
+       (--defaulttty)  OPTION_DEFAULTTTY=$1;;
+       (----insecure)  OPTION_INSECURE=1;;
+       (--)            shift; break;;
+       (*)             echo $"vserver: internal error; arg=='$1'" >&2; exit 1;;
     esac
+    shift
 done
 
-OPTION_ALL=( $OPTION_SILENT $OPTION_VERBOSE $OPTION_DEBUG )
+OPTION_ALL=( $OPTION_SILENT $OPTION_VERBOSE $OPTION_DEBUG $OPTION_DEFAULTTTY )
 SELF=( "$0" "${OPTION_ALL[@]}" )
 
 vserver=$1
@@ -145,28 +159,35 @@ test "$cmd" != build || { shift 2; exec "$_VSERVER_BUILD" -n "$vserver" "$@"; }
 allow_legacy=
 
 case "$vserver" in
-    ./*) VSERVER_DIR=`pwd`/$vserver;;
-    /*)  VSERVER_DIR=$vserver;;
-    *)  VSERVER_DIR=$CONFDIR/$vserver
-        allow_legacy=1
-        ;;
+    (./*) VSERVER_DIR=`pwd`/$vserver;;
+    (/*)  VSERVER_DIR=$vserver;;
+    (*)          VSERVER_DIR=$__CONFDIR/$vserver
+         allow_legacy=1
+         ;;
 esac
 
-if test "$allow_legacy"; then
+if test -n "$allow_legacy"; then
     do_legacy=
     test ! -e "$VSERVER_DIR/legacy" || do_legacy=1
-    test -d "$VSERVER_DIR" -o ! -e "$CONFDIR/$vserver.conf" || do_legacy=1
+    test -d "$VSERVER_DIR" -o ! -e "$__CONFDIR/$vserver.conf" || do_legacy=1
 
     test -z "$do_legacy" || {
-       echo $"WARNING: can not find configuration, assuming legacy method"
+       echo $"WARNING: can not find configuration, assuming legacy method" >&2
        exec "$_VSERVER_LEGACY" "$@"
     }
 fi
 
 test -d "$VSERVER_DIR" || {
-    echo "Can not find vserver-setup"
-    exit 1
-}
+    echo $"\
+Can not find a vserver-setup at '$VSERVER_DIR/'.
+
+Possible solutions:
+* fix the spelling of the '$vserver' vserver name
+* read 'vserver $vserver build --help' about ways to create a new vserver
+* see 'vserver --help' for the syntax of this command
+"
+    exit 5
+} >&2
 
 if test -e "$VSERVER_DIR"/name; then
     read VSERVER_NAME <"$VSERVER_DIR"/name
@@ -174,71 +195,84 @@ else
     VSERVER_NAME=$(basename "$VSERVER_DIR")
 fi
 
-. $PKGLIBDIR/vserver.functions
+test "$2" != start -o -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \
+    exec $_VNAMESPACE --new -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}"
+
+. $__PKGLIBDIR/vserver.functions
 case "$2" in
-    start|stop)
+    (start|stop)
        shift 2
-       . $PKGLIBDIR/vserver.$cmd
+       . $__PKGLIBDIR/vserver.$cmd
        ;;
-    suexec|restart)
+    (suexec|restart)
        shift 2
        $cmd "$@"
        ;;
-    condrestart)
+    (condrestart)
        test ! isVserverRunning "$VSERVER_DIR" || restart
        ;;
-    exec)
+    (exec)
        shift 2
        suexec root "$@"
        ;;
-    chkconfig)
+    (chkconfig)
        shift 2
        suexec root chkconfig "$@"
        ;;
-    enter)
+    (enter)
        getEnterShell "$VSERVER_DIR"
        suexec root "${ENTER_SHELL[@]}"
        ;;
-    running)
+    (running)
        isVserverRunning "$VSERVER_DIR"
        ;;
 
-    unify)
+    (unify)
        shift 2
        exec $_VUNIFY "$@" "$vserver"
        ;;
-       
-    pkg)
+
+    (hashify)
+       shift 2
+       exec $_VHASHIFY "$@" "$vserver"
+       ;;
+               
+    (pkg)
        shift 2
        exec $_VPKG "$vserver" "$@"
        ;;
 
-    apt-get|apt-config|apt-cache)
+    (pkgmgmt)
+       op=$3
+       shift 3
+       exec $_VNAMESPACE --new -- $_PKGMGMT ${op:+--$op} "$@" -- "$vserver"
+       ;;
+
+    (apt-get|apt-config|apt-cache)
        export _APT_GET=$2
        shift 2
        exec $_VAPT_GET -- "$@"
        ;;
-    rpm)
+    (rpm)
        exec $_VRPM -- "$@"
        ;;
        
-    status)
+    (status)
        if getVserverStatus "$VSERVER_DIR" ctx procnum; then
-           echo $"Vserver '$vserver' is running at context '$ctx'"
+           msg $"Vserver '$vserver' is running at context '$ctx'"
 
            if test "$2" = status; then
-               echo    $"Number of processes:" $procnum
-               echo -n $"Uptime:              "
-               "$_FILETIME" "$VSERVER_DIR/run"
+               msg $"Number of processes: " $procnum
+               msg $"Uptime:              "    $("$_FILETIME" "$VSERVER_DIR/run")
            fi
            exit 0
        else
-           echo $"Vserver '$vserver' is not running"
-           exit 1
+           msg $"Vserver '$vserver' is stopped"
+           exit 3
        fi
        ;;
-    *)
-       echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}"
+    (*)
+       echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}" >&2
        exit 2
        ;;
 esac