Releasing live-initramfs 1.110.1-1.
[live-boot-grml.git] / debian / init
index 7c0dbe9..d59ed45 100644 (file)
@@ -1,20 +1,21 @@
-#! /bin/sh
+#!/bin/sh
+
 ### BEGIN INIT INFO
-# Provides:          live-initramfs
-# Required-Start:    $syslog
-# Required-Stop:     $syslog
-# Should-Start:      $local_fs
-# Should-Stop:       $local_fs
-# Default-Start:     1 2 3 4 5
-# Default-Stop:      0 6
-# Short-Description: Casper init script
-# Description:       Resyncs snapshots, evantually caches files in order
-#                    to let remove the media.
+# Provides:            live-initramfs
+# Required-Start:      $syslog
+# Required-Stop:       $syslog
+# Should-Start:                $local_fs
+# Should-Stop:         $local_fs
+# Default-Start:       1 2 3 4 5
+# Default-Stop:                0 6
+# Short-Description:   live-initramfs init script
+# Description:         Resyncs snapshots, evantually caches files in order to
+#                      let remove the media.
 ### END INIT INFO
 
-# Author: Tollef Fog Heen <tfheen@canonical.com>
-#         Marco Amadori <marco.amadori@gmail.com>
-#
+# Authors: Tollef Fog Heen <tfheen@canonical.com>
+#         Marco Amadori <marco.amadori@gmail.com>
+
 PATH=/usr/sbin:/usr/bin:/sbin:/bin
 NAME=live-initramfs
 SCRIPTNAME=/etc/init.d/${NAME}
@@ -36,30 +37,30 @@ grep -qs boot=live /proc/cmdline || exit 0
 # Try to cache everything we're likely to need after ejecting.  This
 # is fragile and simple-minded, but our options are limited.
 cache_path() {
-    path="$1"
-
-    if [ -d "$path" ]; then
-        find "$path" -type f | xargs cat > /dev/null 2>&1
-    elif [ -f "$path" ]; then
-        if [ -x "$path" ]; then
-            if file "$path" | grep -q 'dynamically linked'; then
-                for lib in $(ldd "$path" | awk '{ print $3 }'); do
-                    cache_path "$lib"
+    path="${1}"
+
+    if [ -d "${path}" ]; then
+        find "${path}" -type f | xargs cat > /dev/null 2>&1
+    elif [ -f "${path}" ]; then
+        if [ -x "${path}" ]; then
+            if file "${path}" | grep -q 'dynamically linked'; then
+                for lib in $(ldd "${path}" | awk '{ print $3 }'); do
+                    cache_path "${lib}"
                 done
             fi
         fi
-        cat "$path" >/dev/null 2>&1
+        cat "${path}" >/dev/null 2>&1
     fi
 }
 
 do_stop ()
 {
     if [ ! -z "${ROOTSNAP}" ]; then
-        $DO_SNAPSHOT --resync-string="${ROOTSNAP}"
+        ${DO_SNAPSHOT} --resync-string="${ROOTSNAP}"
     fi
 
     if [ ! -z "${HOMESNAP}" ]; then
-        $DO_SNAPSHOT --resync-string="${HOMESNAP}"
+        ${DO_SNAPSHOT} --resync-string="${HOMESNAP}"
     fi
 
     # check for netboot
@@ -67,37 +68,59 @@ do_stop ()
         return 0
     fi
 
-    for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default; do
-        cache_path "$path"
+    prompt=1
+    if grep -qs noprompt /proc/cmdline; then
+       prompt=
+    fi
+
+    for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default $(which stty); do
+        cache_path "${path}"
     done
 
-    eject -p -m /cdrom >/dev/null 2>&1
+    for x in $(cat /proc/cmdline); do
+       case ${x} in
+           quickreboot)
+               QUICKREBOOT="Yes"
+           ;;
+       esac
+    done
 
-    # XXX - i18n
-    echo "Please remove the disc and close the tray (if any) then press ENTER: "
-    if [ -x /sbin/usplash_write ]; then
-        /sbin/usplash_write "TIMEOUT 86400"
-        /sbin/usplash_write "TEXT-URGENT Please remove the disc, close the tray (if any)"
-        /sbin/usplash_write "TEXT-URGENT and press ENTER to continue"
-    fi
+    if [ -z ${QUICKREBOOT} ]; then
+       if [ -x /usr/bin/eject ]
+       then
+               eject -p -m /live/image >/dev/null 2>&1
+
+               [ "$prompt" ] || return 0
+       fi
+
+       stty sane < /dev/console
 
-    read x < /dev/console
+       # XXX - i18n
+       echo "Please remove the disc and close the tray (if any) then press ENTER: " > /dev/console
+       if [ -x /sbin/usplash_write ]; then
+           /sbin/usplash_write "TIMEOUT 86400"
+           /sbin/usplash_write "TEXT-URGENT Please remove the disc, close the tray (if any)"
+           /sbin/usplash_write "TEXT-URGENT and press ENTER to continue"
+       fi
+
+       read x < /dev/console
+    fi
 }
 
-case "$1" in
+case "${1}" in
     start|restart|reload|force-reload|status)
-        [ "$VERBOSE" != no ] && log_end_msg 0
+        [ "${VERBOSE}" != no ] && log_end_msg 0
         ;;
     stop)
         log_begin_msg "${NAME} is resyncing snapshots and caching reboot files..."
         do_stop
-        case "$?" in
-            0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
-            2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+        case "${?}" in
+            0|1) [ "${VERBOSE}" != no ] && log_end_msg 0 ;;
+            2) [ "${VERBOSE}" != no ] && log_end_msg 1 ;;
         esac
         ;;
     *)
-        log_success_msg "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+        log_success_msg "Usage: ${SCRIPTNAME} {start|stop|restart|force-reload}" >&2
         exit 3
         ;;
 esac