Author: hrs
Date: Fri Oct 18 03:44:16 2013
New Revision: 256716
URL: http://svnweb.freebsd.org/changeset/base/256716

Log:
  - Fix a bug which prevented jails from starting when $jail_conf was used and
    no jail name was specified.
  - Display error messages when start/stop fails.
  
  Reported by:  swills

Modified:
  head/etc/rc.d/jail

Modified: head/etc/rc.d/jail
==============================================================================
--- head/etc/rc.d/jail  Fri Oct 18 02:22:38 2013        (r256715)
+++ head/etc/rc.d/jail  Fri Oct 18 03:44:16 2013        (r256716)
@@ -426,24 +426,26 @@ jail_start()
        echo -n 'Starting jails:'
        case $1 in
        _ALL)
-               echo -n ' '
                command=$jail_program
                rc_flags=$jail_flags
                command_args="-f $jail_conf -c"
-               $jail_jls -nq | while read IN; do
-                       _jn=$(echo $IN | tr " " "\n" | grep name=)
-                       _jid=$(echo $IN | tr " " "\n" | grep jid=)
-                       if $command $rc_flags $command_args ${_jn#name=}; then
+               _tmp=`mktemp -t jail` || exit 3
+               if $command $rc_flags $command_args >> $_tmp 2>&1; then
+                       $jail_jls -nq | while read IN; do
+                               _jn=$(echo $IN | tr " " "\n" | grep ^name=)
+                               _jid=$(echo $IN | tr " " "\n" | grep ^jid=)
                                echo -n " ${_jn#name=}"
                                echo "${_jid#jid=}" \
                                    > /var/run/jail_${_jn#name=}.id
-                       fi
-               done
+                       done
+               else
+                       tail -1 $_tmp
+               fi
+               rm -f $_tmp
                echo '.'
                return
        ;;
        esac
-       _tmp=`mktemp -t jail` || exit 3
        for _j in $@; do
                _j=$(echo $_j | tr /. _)
                parse_options $_j || continue
@@ -455,10 +457,11 @@ jail_start()
                else
                        command_args="-i -f $_conf -c $_j"
                fi
+               _tmp=`mktemp -t jail` || exit 3
                if $command $rc_flags $command_args \
                    >> $_tmp 2>&1 </dev/null; then
                        echo -n " ${_hostname:-${_j}}"
-                       _jid=$($jail_jls -n -j $_j | tr " " "\n" | grep jid=)
+                       _jid=$($jail_jls -n -j $_j | tr " " "\n" | grep ^jid=)
                        echo "${_jid#jid=}" > /var/run/jail_${_j}.id
                else
                        rm -f /var/run/jail_${_j}.id
@@ -480,17 +483,21 @@ jail_stop()
        echo -n 'Stopping jails:'
        case $1 in
        _ALL)
-               echo -n ' '
                command=$jail_program
                rc_flags=$jail_flags
                command_args="-f $jail_conf -r"
                $jail_jls -nq | while read IN; do
-                       _jn=$(echo $IN | tr " " "\n" | grep name=)
+                       _jn=$(echo $IN | tr " " "\n" | grep ^name=)
                        echo -n " ${_jn#name=}"
-                       $command $rc_flags $command_args ${_jn#name=}
-                       if ! $jail_jls -j ${_jn#name=} > /dev/null 2>&1; then
+                       _tmp=`mktemp -t jail` || exit 3
+                       $command $rc_flags $command_args ${_jn#name=} \
+                           >> $_tmp 2>&1
+                       if $jail_jls -j ${_jn#name=} > /dev/null 2>&1; then
+                               tail -1 $_tmp
+                       else
                                rm -f /var/run/jail_${_jn#name=}.id
                        fi
+                       rm -f $_tmp
                done
                echo '.'
                return
@@ -504,10 +511,14 @@ jail_stop()
                fi
                eval command=\${jail_${_j}_program:-$jail_program}
                echo -n " ${_hostname:-${_j}}"
-               $command -q -f $_conf -r $_j
-               if ! $jail_jls -j $_j > /dev/null 2>&1; then
+               _tmp=`mktemp -t jail` || exit 3
+               $command -q -f $_conf -r $_j >> $_tmp 2>&1
+               if $jail_jls -j $_j > /dev/null 2>&1; then
+                       tail -1 $_tmp
+               else
                        rm -f /var/run/jail_${_j}.id
                fi
+               rm -f $_tmp
        done
        echo '.'
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to