std-init.sh to put the usual initscript boilerplate in one place sipb-xen-base/8.28
authorGreg Price <price@mit.edu>
Sat, 25 Oct 2008 20:54:08 +0000 (16:54 -0400)
committerGreg Price <price@mit.edu>
Sat, 25 Oct 2008 20:54:08 +0000 (16:54 -0400)
svn path=/trunk/packages/sipb-xen-base/; revision=1252

debian/changelog
files/lib/init/std-init.sh [new file with mode: 0644]

index 49f886e..6667537 100644 (file)
@@ -1,3 +1,10 @@
+sipb-xen-base (8.28) unstable; urgency=low
+
+  * Factor out more common initscript code:
+    std-init.sh replaces the usual Debian boilerplate
+
+ -- Greg Price <price@mit.edu>  Sat, 25 Oct 2008 15:33:08 -0400
+
 sipb-xen-base (8.27) unstable; urgency=low
 
   * Use invoke-rc.d in invirt-reload so that policy-rc.d is respected
diff --git a/files/lib/init/std-init.sh b/files/lib/init/std-init.sh
new file mode 100644 (file)
index 0000000..499dc99
--- /dev/null
@@ -0,0 +1,92 @@
+# Typical Debian initscript, but as a library rather than copy-paste.
+#
+# Usage:
+#   NAME=short-name
+#   DESC="Textual description"
+#   SCRIPTNAME=/etc/init.d/$NAME  # default if omitted
+#   . /lib/init/std-init.sh
+#   do_start() { ... }
+#   do_stop() { ... }
+#   do_reload() { ... }  # optional
+#   std_init "$1"
+
+. /lib/init/vars.sh
+. /lib/lsb/init-functions
+
+[ -r /etc/default/"$NAME" ] && . /etc/default/"$NAME"
+
+SCRIPTNAME="${SCRIPTNAME:-/etc/init.d/$NAME}"
+
+have_reload()
+{
+  type do_reload >/dev/null 2>/dev/null
+}
+
+usage_exit()
+{
+  if have_reload; then
+    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+  else
+    echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+  fi
+  exit 3
+}
+
+std_init()
+{
+  local cmd
+  case "$1" in
+    start|stop|restart)
+      cmd="$1" ;;
+    reload)
+      if have_reload; then cmd=reload; else usage_exit; fi ;;
+    force-reload)
+      if have_reload; then cmd=reload; else cmd=restart; fi ;;
+    *)
+      usage_exit ;;
+  esac
+    
+  case $cmd in
+    start)
+      [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+      do_start
+      case "$?" in
+        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+      esac
+      ;;
+    stop)
+      [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+      do_stop
+      case "$?" in
+        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+      esac
+      ;;
+    reload)
+      log_daemon_msg "Reloading $DESC" "$NAME"
+      do_reload
+      log_end_msg $?
+      ;;
+    restart)
+      log_daemon_msg "Restarting $DESC" "$NAME"
+      do_stop
+      case "$?" in
+        0|1)
+          do_start
+          case "$?" in
+            0) log_end_msg 0 ;;
+            1) log_end_msg 1 ;; # Old process is still running
+            *) log_end_msg 1 ;; # Failed to start
+          esac
+          ;;
+        *)
+          # Failed to stop
+          log_end_msg 1
+          ;;
+      esac
+      ;;
+  esac
+
+  :
+}