sysvinit: Various progress bar fixes, especially reboot/halt handling
authorRichard Purdie <richard@openedhand.com>
Wed, 28 Mar 2007 15:46:02 +0000 (15:46 +0000)
committerRichard Purdie <richard@openedhand.com>
Wed, 28 Mar 2007 15:46:02 +0000 (15:46 +0000)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@1406 311d38ba-8fff-0310-9ca6-ca027cbcb966

meta/packages/sysvinit/sysvinit/rc
meta/packages/sysvinit/sysvinit_2.86.bb

index 2abc818..30b69ad 100755 (executable)
@@ -20,12 +20,12 @@ export VERBOSE
 
 startup_progress() {
     step=$(($step + $step_change))
-    denominator=$(($num_steps + $first_step))
-    if [ "$denominator" != "0" ]; then
-        progress=$(($step * $progress_size / $denominator))
+    if [ "$num_steps" != "0" ]; then
+        progress=$((($step * $progress_size / $num_steps) + $first_step))
     else
         progress=$progress_size
     fi
+    #echo "PROGRESS is $progress $runlevel $first_step + ($step of $num_steps) $step_change $progress_size"
     if type psplash-write >/dev/null 2>&1; then
         TMPDIR=/mnt/.psplash psplash-write "PROGRESS $progress" || true
     fi
@@ -91,10 +91,10 @@ startup() {
 
        case "$runlevel" in
                0|6)
-                       # Count down from 0 to -100 and use the entire bar
-                       first_step=0
+                       # Count down from -100 to 0 and use the entire bar
+                       first_step=-100
                        progress_size=100
-                       step_change=-1
+                       step_change=1
                        ;;
                S)
                        # Begin where the initramfs left off and use 2/3
@@ -111,6 +111,17 @@ startup() {
                        ;;
        esac
 
+       num_steps=0
+       for s in /etc/rc$runlevel.d/[SK]*; do
+            case "${s##/etc/rc$runlevel.d/S??}" in
+                gdm|xdm|kdm|reboot|halt)
+                    break
+                    ;;
+            esac
+            num_steps=$(($num_steps + 1))
+        done
+        step=0
+
        # First, run the KILL scripts.
        if [ $previous != N ]
        then
@@ -124,18 +135,6 @@ startup() {
                done
        fi
 
-       num_steps=0
-       for s in /etc/rc$runlevel.d/[SK]*; do
-            case "${s##/etc/rc$runlevel.d/S??}" in
-                gdm|xdm|kdm|reboot|halt)
-                    break
-                    ;;
-            esac
-            num_steps=$(($num_steps + 1))
-        done
-
-        step=0
-
        # Now run the START scripts for this runlevel.
        for i in /etc/rc$runlevel.d/S*
        do
@@ -168,6 +167,7 @@ startup() {
        done
   fi
 
+#Uncomment to cause psplash to exit manually, otherwise it exits when it sees a VC switch
 #if [ "x$runlevel" != "xS" ]; then
 #    if type psplash-write >/dev/null 2>&1; then
 #        TMPDIR=/mnt/.psplash psplash-write "QUIT" || true
index 97b611f..885199e 100644 (file)
@@ -2,7 +2,7 @@ DESCRIPTION = "System-V like init."
 SECTION = "base"
 LICENSE = "GPL"
 HOMEPAGE = "http://freshmeat.net/projects/sysvinit/"
-PR = "r27"
+PR = "r28"
 
 # USE_VT and SERIAL_CONSOLE are generally defined by the MACHINE .conf.
 # Set PACKAGE_ARCH appropriately.