From: Martin Schwenke Date: Fri, 22 Jan 2010 02:19:00 +0000 (+1100) Subject: initscript: handle spaces in option values inserted into $CTDB_OPTIONS. X-Git-Url: http://git.samba.org/?a=commitdiff_plain;ds=sidebyside;h=522fbb012524fe41a67dbe43589a282dda6bcbe2;p=tridge%2Fctdb.git initscript: handle spaces in option values inserted into $CTDB_OPTIONS. This puts single quotes around everything and uses eval on the command-lines that actually start ctdbd. The eval causes the single quotes to be interpreted. The "redhat" init style no longer uses the Red Hat daemon function. It loses the quoting and re-splits on spaces. Instead we add an extra line that uses the success/failure functions to keep things pretty. Note that this means that we don't respect daemon's $DAEMON_COREFILE_LIMIT variable but we do our own core file handling with $CTDB_SUPPRESS_COREFILE anyway. daemon's core file handling was probably overriding what we were doing anyway, so this can be regarded as a bug fix. Signed-off-by: Martin Schwenke --- diff --git a/config/ctdb.init b/config/ctdb.init index 96ffb1ec..b4df177e 100755 --- a/config/ctdb.init +++ b/config/ctdb.init @@ -65,7 +65,7 @@ build_ctdb_options () { # then return [ -z "$2" -o \( -n "$3" -a "$3" != "$2" \) ] && return - val="$2" + val="'$2'" case "$1" in --*) sep="=" ;; -*) sep=" " ;; @@ -186,25 +186,26 @@ start() { case $init_style in valgrind) - valgrind -q --log-file=/var/log/ctdb_valgrind \ - $ctdbd --valgrinding $CTDB_OPTIONS + eval valgrind -q --log-file=/var/log/ctdb_valgrind \ + $ctdbd --valgrinding "$CTDB_OPTIONS" RETVAL=$? echo ;; suse) - startproc $ctdbd $CTDB_OPTIONS + eval startproc $ctdbd "$CTDB_OPTIONS" rc_status -v RETVAL=$? ;; redhat) - daemon $ctdbd $CTDB_OPTIONS + eval $ctdbd "$CTDB_OPTIONS" RETVAL=$? + [ $RETVAL -eq 0 ] && success || failure echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ctdb || RETVAL=1 ;; debian) - start-stop-daemon --start --quiet --background \ - --exec $ctdbd -- $CTDB_OPTIONS + eval start-stop-daemon --start --quiet --background \ + --exec $ctdbd -- "$CTDB_OPTIONS" RETVAL=$? ;; esac