ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/net/nut/files/nutshutdown b/external/subpack/net/nut/files/nutshutdown
new file mode 100755
index 0000000..7270f98
--- /dev/null
+++ b/external/subpack/net/nut/files/nutshutdown
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+stop_instance() {
+ /etc/init.d/nut-server stop "$1"
+}
+
+shutdown_instance() {
+ local cfg="$1"
+ config_get driver "$cfg" driver "usbhid-ups"
+
+ # Only FSD if killpower was indicated
+ if [ -f /var/run/killpower ]; then
+ /lib/nut/"${driver}" -a "$cfg" -k
+ fi
+}
+
+do_fsd() {
+ if [ -f /var/run/killpower ]; then
+ # Only make FS readonly if we are doing an FSD
+ mount -o remount,ro /overlay /overlay
+ mount -o remount,ro / /
+
+ . ${IPKG_INSTROOT}/lib/functions.sh
+
+ if [ -f /etc/config/nut_server ]; then
+ config_load nut_server
+
+ # Can't FSD unless drivers are stopped
+ config_foreach stop_instance driver
+ # Driver will wait 'offdelay' before shutting down
+ config_foreach shutdown_instance driver
+ # So this can happen
+ rm -f /var/run/killpower
+ poweroff
+ # And just in case
+ sleep 120
+ # Uh-oh failed to poweroff UPS
+ reboot -f
+ else
+ poweroff
+ fi
+ else
+ poweroff
+ fi
+}
+
+do_fsd