From mboxrd@z Thu Jan 1 00:00:00 1970 From: Florian Kirstein Subject: Re: xendomains init script Date: Thu, 30 Mar 2006 06:09:33 +0200 Message-ID: <20060330060933.C26981@web.ray.net> References: <20051019094439.GQ8705@tpkurt.tagung.uni-hamburg.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Qrgsu6vtpU/OV/zm" Return-path: Content-Disposition: inline In-Reply-To: <20051019094439.GQ8705@tpkurt.tagung.uni-hamburg.de>; from garloff@suse.de on Wed, Oct 19, 2005 at 11:44:39AM +0200 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Xen development list List-Id: xen-devel@lists.xenproject.org --Qrgsu6vtpU/OV/zm Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, first: thanks for the nice script :) (second: resent, hope my first mail using a wrong From: is ignored by the list daemon) I had a (more cosmetic) problem with it: > The init script is somewhat SUSE-ish, but it should work on LSB > compliant and on RH based distros as well. Almost for the LSB-Part: LSB defines that the ini script functions like "log_success_msg" can be defined as shell aliases: http://www.linuxbase.org/spec/refspecs/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html The problem with that: shell aliases are usually not enabled in scripts (so I'll have to blame LSB for allowing this in init script functions) and the real problem, they are never used (at least for bash) in if/then/else blocks or functions, which is exactly what your script does. So, IF a distribution decides to implement log_success_msg LSB conforming as alias, as current RedHat distributions (like RHEL4 and including FC5) do, this will fail and give "log_success_msg: command not found". I think this is a bad idea (see above), but can't blame RedHat for following LSB by the word. And as you check for LSB first and then for redhat, newer redhat distributions will take the LSB case. I don't think there's a nice way to make this fully LSB compatible as these funtions are usually called within functions, but I'd highly suggest to use a "specific before generic" approach for the "distribution specific emulations". Means: test for the redhat specific part first and then use LSB. For the LSB part I'd add an if-test to check if log_success_msg is an alias and use the generic emulation in case it is (assuming log_error_msg would be an alias too when log_success_msg is). I attached a patch doing exactly this, resulting in a clean run on the redhat based distributions and fixing it for possible others using an alias in their LSB conformity scripts, leaving it unchanged for the rest. Hopefully :) @Kurt: as this is your init-script, would you like to review the patch and in case you think it's OK submit it to the official source tree? Or whoever is responsible for this :) (:ul8er, r@y --Qrgsu6vtpU/OV/zm Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="init.d-xendomains.patch" diff -U 3 -r xen-unstable-orig/tools/examples/init.d/xendomains xen-unstable/tools/examples/init.d/xendomains --- xen-unstable-orig/tools/examples/init.d/xendomains 2006-03-28 06:11:40.000000000 +0200 +++ xen-unstable/tools/examples/init.d/xendomains 2006-03-30 05:15:13.000000000 +0200 @@ -58,18 +58,7 @@ _SMSG=(done failed failed missed failed skipped unused failed failed) _RC_UNUSED=6 fi - if test -e /lib/lsb/init-functions; then - # LSB - . /lib/lsb/init-functions - echo_rc() - { - if test ${_RC_RV} = 0; then - log_success_msg " [${_SMSG[${_RC_RV}]}] " - else - log_failure_msg " [${_SMSG[${_RC_RV}]}] " - fi - } - elif test -e /etc/init.d/functions; then + if test -e /etc/init.d/functions; then # REDHAT . /etc/init.d/functions echo_rc() @@ -81,6 +70,24 @@ failure " [${_SMSG[${_RC_RV}]}] " fi } + elif test -e /lib/lsb/init-functions; then + # LSB + . /lib/lsb/init-functions + if alias log_success_msg >/dev/null 2>/dev/null; then + echo_rc() + { + echo " [${_SMSG[${_RC_RV}]}] " + } + else + echo_rc() + { + if test ${_RC_RV} = 0; then + log_success_msg " [${_SMSG[${_RC_RV}]}] " + else + log_failure_msg " [${_SMSG[${_RC_RV}]}] " + fi + } + fi else # emulate it echo_rc() --Qrgsu6vtpU/OV/zm Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --Qrgsu6vtpU/OV/zm--