added sample 'mtab' file
[util-vserver.git] / util-vserver / scripts / vserver.functions
index 925b34f..111d23a 100644 (file)
@@ -24,7 +24,6 @@ declare -a CHBIND_OPTS=()
 declare -a CAP_OPTS=()
 declare -a CHCONTEXT_INIT_OPTS=()
 declare -a CHCONTEXT_FLAG_OPTS=()
-declare -a CHCONTEXT_DISCONNECT=()
 declare -a CHCONTEXT_OPTS=()
 declare -a CAPCHROOT_OPTS=()
 declare -a INTERFACES=()
@@ -44,34 +43,15 @@ INITSTYLE=sysv
 S_CONTEXT=
 
 SILENT_OPT=
-_NEWLINE='
-'
-_NEWLINE=${_NEWLINE:0-1}
 
 : ${VSERVER_NAME:=$(basename "$VSERVER_DIR")}
 
-if test -e "$VSERVER_DIR"/noisy; then
+if test -e "$VSERVER_DIR"/noisy -o "$OPTION_VERBOSE"; then
     SILENT_OPT=
 else
     SILENT_OPT='--silent'
 fi
 
-## Called as '_getFileValue <varname> <filename>'
-function _getFileValue
-{
-    test -r "$2" || return 0
-    eval read "$1" <"$2"
-}
-
-## Called as '_getFileArray <varname> <filename>'
-function _getFileArray
-{
-    test -r "$2" || return 0
-    
-    local IFS=$_NEWLINE
-    eval "$1"='( $(< "$2") )'
-}
-
 function _generateChbindOptions
 {
     local vdir="$1"
@@ -79,7 +59,7 @@ function _generateChbindOptions
     local bcast=
 
     local f=$vdir/interfaces/bcast
-    _getFileValue bcast "$f"
+    getFileValue bcast "$f"
     
     CHBIND_OPTS=( $SILENT_OPT ${bcast:+--bcast "$bcast"} )
 
@@ -128,7 +108,7 @@ function getEnterShell
 
     ENTER_SHELL=()
     
-    _getFileValue ENTER_SHELL   "$vdir"/shell
+    getFileValue ENTER_SHELL    "$vdir"/shell
     
     test "$ENTER_SHELL" || {
        local i
@@ -159,11 +139,11 @@ function _generateInitOptions
     CHCONTEXT_INIT_OPTS=()
 
 
-    _getFileValue INITSTYLE      "$cfgdir"/style
-    _getFileValue runlevel_start "$cfgdir"/runlevel
-    _getFileValue runlevel_start "$cfgdir"/runlevel.start
-    _getFileValue runlevel_stop  "$cfgdir"/runlevel.stop
-    _getFileArray INITKILL_SEQ  "$cfgdir"/killseq
+    getFileValue INITSTYLE      "$cfgdir"/style
+    getFileValue runlevel_start "$cfgdir"/runlevel
+    getFileValue runlevel_start "$cfgdir"/runlevel.start
+    getFileValue runlevel_stop  "$cfgdir"/runlevel.stop
+    getFileArray INITKILL_SEQ   "$cfgdir"/killseq
 
     case x"$INITSTYLE" in
        xsysv)
@@ -181,8 +161,7 @@ function _generateInitOptions
        xplain)
            INITCMD_START=( /sbin/init )
            INITCMD_STOP=(  /sbin/init )
-           CHCONTEXT_INIT_OPTS=(  --flag fakeinit )
-           CHCONTEXT_DISCONNECT=( --disconnect )
+           CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
            test -z "$runlevel_start" || INITCMD_START=( "${INITCMD_START[@]}" "$runlevel_start" )
            test -z "$runlevel_stop"  || INITCMD_STOP=(  "${INITCMD_STOP[@]}"  "$runlevel_stop"  )
            ;;
@@ -190,8 +169,7 @@ function _generateInitOptions
        xminit)
            INITCMD_START=( /sbin/minit-start )
            INITCMD_STOP=(  /sbin/minit-stop  )
-           CHCONTEXT_INIT_OPTS=(  --flag fakeinit )
-           CHCONTEXT_DISCONNECT=( --disconnect )
+           CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
            INITCMD_START_SYNC=( "$_INITSYNC_MINIT_START" "$vdir" )
            INITCMD_STOP_SYNC=(  "$_INITSYNC_MINIT_STOP"  "$vdir" )
            test -z "$runlevel_start" || INITCMD_START=( "${INITCMD_START[@]}" "$runlevel_start" )
@@ -203,11 +181,11 @@ function _generateInitOptions
            exit 1;;
     esac
 
-    _getFileArray INITCMD_START      "$cfgdir"/cmd.start
-    _getFileArray INITCMD_STOP       "$cfgdir"/cmd.stop
-    _getFileArray INITCMD_START_SYNC "$cfgdir"/cmd.start-sync
-    _getFileArray INITCMD_STOP_SYNC  "$cfgdir"/cmd.stop-sync
-    _getFileArray INITCMD_PREPARE    "$cfgdir"/cmd.prepare
+    getFileArray INITCMD_START      "$cfgdir"/cmd.start
+    getFileArray INITCMD_STOP       "$cfgdir"/cmd.stop
+    getFileArray INITCMD_START_SYNC "$cfgdir"/cmd.start-sync
+    getFileArray INITCMD_STOP_SYNC  "$cfgdir"/cmd.stop-sync
+    getFileArray INITCMD_PREPARE    "$cfgdir"/cmd.prepare
 
     
     test -e "$cfgdir"/sync -o "$OPTION_FORCE_SYNC" || {
@@ -229,8 +207,7 @@ function _generateFlagOptions
            x|x#)               ;;
            dummy)              ;;
            fakeinit)
-               CHCONTEXT_FLAG_OPTS=( "${CHCONTEXT_FLAG_OPTS[@]}" --flag fakeinit )
-               CHCONTEXT_DISCONNECT=( --disconnect )
+               CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
                ;;
            *)
                CHCONTEXT_FLAG_OPTS=( "${CHCONTEXT_FLAG_OPTS[@]}"
@@ -260,7 +237,6 @@ function _generateChcontextOptions
 
     CHCONTEXT_OPTS=( $SILENT_OPT \
                      "${CHCONTEXT_FLAG_OPTS[@]}" \
-                    "${CHCONTEXT_INIT_OPTS[@]}" \
                     "${CAP_OPTS[@]}" \
                     --secure
                     ${ctx:+--ctx "$ctx"} \
@@ -443,7 +419,7 @@ function mountVserver
 
     test -e "$cfgdir"/fstab || return 0
 
-    findObject -r mtab_src "$CONFDIR"/.defaults/init/mtab "$vdir"/apps/init/mtab /dev/null
+    findObject -r mtab_src "$vdir"/apps/init/mtab "$CONFDIR"/.defaults/init/mtab /dev/null
     
     pushd "$vdir" >/dev/null
     $_CHROOT_CAT /etc/mtab <"$mtab_src"