Date: Tue, 18 Apr 2006 18:10:04 -0400 From: "Coleman Kane" <zombyfork@gmail.com> To: "Doug Barton" <dougb@freebsd.org> Cc: freebsd-hackers@freebsd.org Subject: Re: [PATCH] Fancy rc startup style RFC Message-ID: <346a80220604181510i10c82020s633816faec8ad3e1@mail.gmail.com> In-Reply-To: <44455DC2.9080504@FreeBSD.org> References: <444515C8.3030406@centtech.com> <44455DC2.9080504@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_24891_26292795.1145398204205 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On 4/18/06, Doug Barton <dougb@freebsd.org> wrote: > > While I personally am not necessarily opposed to this kind of patch, you > should be aware that this idea has been proposed in the past, and roundly > rejected. The consensus has been that we don't necessarily want FreeBSD t= o > look like other OSes that do this. I remember a time back when the idea of an /etc/rc.d/ was taboo to bring up.... hopefully times are better now! That said, when you have something that you're ready for a wider review on, > please submit it first to freebsd-rc@, then freebsd-arch@. > > Doug > > -- > > This .signature sanitized for your protection > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org= " > You want colors?!? You can have them! (attached) --- Coleman Kane ------=_Part_24891_26292795.1145398204205 Content-Type: text/x-patch; name=rc_fancy-cokane-colors.patch; charset=us-ascii Content-Transfer-Encoding: 7bit X-Attachment-Id: f_em6shyg9 Content-Disposition: attachment; filename="rc_fancy-cokane-colors.patch" --- rc.subr.orig Tue Apr 18 18:06:20 2006 +++ rc.subr Tue Apr 18 18:09:24 2006 @@ -313,12 +313,16 @@ break fi _list=$_nlist - echo -n ${_prefix:-"Waiting for PIDS: "}$_list + if ! checkyesno rc_fancy; then + echo -n ${_prefix:-"Waiting for PIDS: "}$_list + fi _prefix=", " sleep 2 done if [ -n "$_prefix" ]; then - echo "." + if ! checkyesno rc_fancy; then + echo "." + fi fi } @@ -564,12 +568,14 @@ # if the precmd failed and force # isn't set, exit # + rcargsize=`echo $rc_arg` + rcargsize=${#rcargsize} if [ -n "$_precmd" ]; then debug "run_rc_command: evaluating ${_precmd}()." eval $_precmd $rc_extra_args _return=$? [ $_return -ne 0 ] && [ -z "$rc_force" ] && - return 1 + (echo_fancy "FAILED" `expr 10 + $rcargsize - 1`) && return 1 fi if [ -n "$_cmd" ]; then @@ -577,7 +583,7 @@ eval $_cmd $rc_extra_args _return=$? [ $_return -ne 0 ] && [ -z "$rc_force" ] && - return 1 + (echo_fancy "FAILED" `expr 10 + $rcargsize - 1`) && return 1 fi if [ -n "$_postcmd" ]; then @@ -585,6 +591,7 @@ eval $_postcmd $rc_extra_args _return=$? fi + echo_fancy " OK " 0 return $_return fi @@ -600,13 +607,16 @@ ;; start) + echo -n "Starting ${name}" if [ -z "$rc_fast" -a -n "$rc_pid" ]; then + echo_fancy " SKIP " 9 echo 1>&2 "${name} already running? (pid=$rc_pid)." return 1 fi if [ ! -x ${_chroot}${command} ]; then info "run_rc_command: cannot run ($command)." + echo_fancy "ERROR " 9 return 1 fi @@ -617,6 +627,7 @@ if ! checkyesno $_f; then warn "\$${_f} is not enabled." if [ -z "$rc_force" ]; then + echo_fancy "ERROR " 9 return 1 fi fi @@ -625,6 +636,7 @@ if [ ! -d "${_f}/." ]; then warn "${_f} is not a directory." if [ -z "$rc_force" ]; then + echo_fancy "ERROR " 9 return 1 fi fi @@ -633,6 +645,7 @@ if [ ! -r "${_f}" ]; then warn "${_f} is not readable." if [ -z "$rc_force" ]; then + echo_fancy "ERROR " 9 return 1 fi fi @@ -646,12 +659,11 @@ eval $_precmd _return=$? [ $_return -ne 0 ] && [ -z "$rc_force" ] && - return 1 + (echo_fancy "ERROR " 9) && return 1 fi # setup the command to run, and run it # - echo "Starting ${name}." if [ -n "$_chroot" ]; then _doit="\ ${_nice:+nice -n $_nice }\ @@ -673,7 +685,7 @@ debug "run_rc_command: _doit: $_doit" eval $_doit _return=$? - [ $_return -ne 0 ] && [ -z "$rc_force" ] && return 1 + [ $_return -ne 0 ] && [ -z "$rc_force" ] && (echo_fancy "FAILED" 9) && return 1 # finally, run postcmd # @@ -681,15 +693,19 @@ debug "run_rc_command: evaluating ${_postcmd}()." eval $_postcmd fi + echo_fancy " OK " 9 ;; stop) + echo -n "Stopping ${name}" if [ -z "$rc_pid" ]; then [ -n "$rc_fast" ] && return 0 if [ -n "$pidfile" ]; then + echo_fancy " SKIP " 9 echo 1>&2 \ "${name} not running? (check $pidfile)." else + echo_fancy " SKIP " 9 echo 1>&2 "${name} not running?" fi return 1 @@ -702,12 +718,11 @@ eval $_precmd _return=$? [ $_return -ne 0 ] && [ -z "$rc_force" ] && - return 1 + (echo_fancy "ERROR " 9) && return 1 fi # send the signal to stop # - echo "Stopping ${name}." _doit="kill -${sig_stop:-TERM} $rc_pid" if [ -n "$_user" ]; then _doit="su -m $_user -c 'sh -c \"$_doit\"'" @@ -718,7 +733,7 @@ # eval $_doit _return=$? - [ $_return -ne 0 ] && [ -z "$rc_force" ] && return 1 + [ $_return -ne 0 ] && [ -z "$rc_force" ] && (echo_fancy "FAILED" 9) && return 1 # wait for the command to exit, # and run postcmd. @@ -727,24 +742,27 @@ eval $_postcmd _return=$? fi + echo_fancy " OK " 9 ;; reload) + echo -n "Reloading ${name} config files" if [ -z "$rc_pid" ]; then if [ -n "$pidfile" ]; then + echo_fancy "SKIPPED" 23 echo 1>&2 \ "${name} not running? (check $pidfile)." else + echo_fancy "SKIPPED" 23 echo 1>&2 "${name} not running?" fi return 1 fi - echo "Reloading ${name} config files." if [ -n "$_precmd" ]; then eval $_precmd _return=$? [ $_return -ne 0 ] && [ -z "$rc_force" ] && - return 1 + (echo_fancy "FAILED" 23) && return 1 fi _doit="kill -${sig_reload:-HUP} $rc_pid" if [ -n "$_user" ]; then @@ -752,11 +770,12 @@ fi eval $_doit _return=$? - [ $_return -ne 0 ] && [ -z "$rc_force" ] && return 1 + [ $_return -ne 0 ] && [ -z "$rc_force" ] && (echo_fancy "FAILED" 23) && return 1 if [ -n "$_postcmd" ]; then eval $_postcmd _return=$? fi + echo_fancy " OK " 23 ;; restart) @@ -1428,3 +1447,47 @@ } fi + +echo_fancy () { + columns=80 + label=$1 + labelprefix="" + labelsuffix="" + if [ x$rc_fancy_color = "xYES" ]; then + labelsuffix="\e[0m" + case $label in + *OK*) + labelprefix="\e[1;32;40m" + ;; + *FAILED*|*ERROR*) + labelprefix="\e[1;31;40m" + ;; + *SKIP*) + labelprefix="\e[1;33;40m" + ;; + esac + fi + namesize=${#name} + rc_argsize=${#rc_arg} + padding="" + paddingsize=$(($columns - 15 - $2 - $namesize)) + until [ 0 = ${paddingsize} ]; do + padding=" $padding" + paddingsize=$(($paddingsize - 1)) + done + if checkyesno rc_fancy; then + if [ $2 = 0 ]; then + padding="" + paddingsize=$((60 - $namesize - $rc_argsize)) + until [ 0 = ${paddingsize} ]; do + padding=" $padding" + paddingsize=$(($paddingsize - 1)) + done + echo -e "\rRunning ${rc_arg} $name $padding [${labelprefix}${label}${labelsuffix}]" + else + echo -e " ... $padding [$labelprefix$label$labelsuffix]" + fi + else + echo "." + fi +} ------=_Part_24891_26292795.1145398204205--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?346a80220604181510i10c82020s633816faec8ad3e1>