Author: glen
Date: Thu Nov  1 01:54:10 2007
New Revision: 8925

Modified:
   rc-scripts/trunk/rc.d/init.d/functions
Log:
- avoid endless loop when one puts --user after daemon name
- some small optimizations
- update daemon() usage

Modified: rc-scripts/trunk/rc.d/init.d/functions
==============================================================================
--- rc-scripts/trunk/rc.d/init.d/functions      (original)
+++ rc-scripts/trunk/rc.d/init.d/functions      Thu Nov  1 01:54:10 2007
@@ -495,44 +495,44 @@
 {
        typeset errors="" prog="" waitname="" waittime=""
        typeset -i exit_code=0
-       [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && 
DEFAULT_SERVICE_RUN_NICE_LEVEL=0
-       # Test syntax. Don't use -o instead || here - this will break ksh 
--misiek
-       while [ "$1" != "${1##-}" ] || [ "$1" != "${1##+}" ]; do
+       local nice=$SERVICE_RUN_NICE_LEVEL
+
+       while [ $# -gt 0 ]; do
                case $1 in
                  '')
-                       msg_usage " daemon [--user user] [--fork] 
[+/-nicelevel] {program}"
+                       msg_usage " daemon [--user user] [--fork] 
[--waitforname procname] [--waitfortime seconds] [+/-nicelevel] {program} 
<program args>"
                        return 2
                        ;;
                  --check)
                        # for compatibility with redhat/mandrake
                        nls "warning: --check option is ignored!"
                        shift
-                       shift
                        ;;
                  --user)
                        shift
                        [ "$1" != "root" ] && prog="/bin/su $1 -s /bin/sh -c \""
-                       shift
                        ;;
                  --fork)
                        prog="/usr/bin/setsid sh -c \""
                        end='&'
-                       shift
                        ;;
                  --waitforname)
                        shift
                        waitname="$1"
-                       shift
                        ;;
                  --waitfortime)
                        shift
                        waittime="$1"
-                       shift
                        ;;
-                 -*|+*) SERVICE_RUN_NICE_LEVEL=$1
-                       shift
+                 -*|+*)
+                       nice=$1
+                       break
+                       ;;
+                 *)
+                       break
                        ;;
                esac
+               shift
        done
        # If command to execute ends with quotation mark, add remaining
        # arguments and close quotation.
@@ -545,12 +545,13 @@
        _daemon_set_ulimits
 
        [ -z "$DEFAULT_SERVICE_UMASK" ] && DEFAULT_SERVICE_UMASK=022
+       [ -z "$DEFAULT_SERVICE_RUN_NICE_LEVEL" ] && 
DEFAULT_SERVICE_RUN_NICE_LEVEL=0
 
        # And start it up.
        busy
        cd /
-       is_yes "$CPUSETS" && [ -n "$SERVICE_CPUSET" ] && echo $$ > 
"/dev/cpuset/${SERVICE_CPUSET}/tasks"
-       if errors=$(umask ${SERVICE_UMASK:-$DEFAULT_SERVICE_UMASK}; USER=root 
HOME=/tmp TMPDIR=/tmp nice -n 
${SERVICE_RUN_NICE_LEVEL:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} initlog -c "$prog" 
2>&1); then
+       [ -n "$SERVICE_CPUSET" ] && is_yes "$CPUSETS" && echo $$ > 
"/dev/cpuset/${SERVICE_CPUSET}/tasks"
+       if errors=$(umask ${SERVICE_UMASK:-$DEFAULT_SERVICE_UMASK}; USER=root 
HOME=/tmp TMPDIR=/tmp nice -n ${nice:-$DEFAULT_SERVICE_RUN_NICE_LEVEL} initlog 
-c "$prog" 2>&1); then
                if [ -n "$waitname" -a -n "$waittime" ]; then
                        # Save basename.
                        base=$(basename "$waitname")
@@ -559,7 +560,7 @@
                        [ -z "$pid" ] && pid=$(pidofproc "$base" "$pidfile")
                        i=0
                        while [ "$i" -lt "$waittime" ]; do
-                               i=$(( i + 1 ))
+                               i=$((i + 1))
                                checkpid $pid && sleep 1 || break
                        done
                fi
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to