base-files: split /etc/init.d/boot into 2 files
authorJohn Crispin <john@openwrt.org>
Tue, 18 Feb 2014 13:33:40 +0000 (13:33 +0000)
committerJohn Crispin <john@openwrt.org>
Tue, 18 Feb 2014 13:33:40 +0000 (13:33 +0000)
this allows us to bind a procd trigger to system.@system[-1]

Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 39615

package/base-files/files/etc/init.d/boot
package/base-files/files/etc/init.d/system [new file with mode: 0755]

index 8b5455d..45cb4a2 100755 (executable)
@@ -4,37 +4,6 @@
 START=10
 STOP=98
 
-system_config() {
-       local cfg="$1"
-
-       local hostname conloglevel buffersize timezone zonename
-
-       config_get hostname "$cfg" hostname 'OpenWrt'
-       echo "$hostname" > /proc/sys/kernel/hostname
-
-       config_get conloglevel "$cfg" conloglevel
-       config_get buffersize "$cfg" buffersize
-       [ -z "$conloglevel" -a -z "$buffersize" ] || dmesg ${conloglevel:+-n $conloglevel} ${buffersize:+-s $buffersize}
-
-       config_get timezone "$cfg" timezone 'UTC'
-       echo "$timezone" > /tmp/TZ
-
-       config_get zonename "$cfg" zonename
-       [ -n "$zonename" ] && [ -f "/usr/share/zoneinfo/$zonename" ] && ln -s "/usr/share/zoneinfo/$zonename" /tmp/localtime
-
-       # apply timezone to kernel
-       date -k
-}
-
-apply_uci_config() {
-       sh -c '. /lib/functions.sh; include /lib/config; uci_apply_defaults'
-}
-
-start() {
-       config_load system
-       config_foreach system_config system
-}
-
 boot() {
        [ -f /proc/mounts ] || /sbin/mount_root
        [ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
@@ -64,7 +33,7 @@ boot() {
        }
        rm -f /tmp/wireless.tmp
 
-       apply_uci_config
+       sh -c '. /lib/functions.sh; include /lib/config; uci_apply_defaults'
        
        # temporary hack until configd exists
        /sbin/reload_config
diff --git a/package/base-files/files/etc/init.d/system b/package/base-files/files/etc/init.d/system
new file mode 100755 (executable)
index 0000000..24a9fde
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2014 OpenWrt.org
+
+START=10
+USE_PROCD=1
+
+validate_system_section()
+{
+       uci_validate_section system system "${1}" \
+               'hostname:string:OpenWrt' \
+               'conloglevel:uinteger' \
+               'buffersize:uinteger' \
+               'timezone:string:UTC' \
+               'zonename:string'
+
+       return $?
+}
+
+system_config() {
+       local cfg="$1"
+
+       local hostname conloglevel buffersize timezone zonename
+
+       validate_system_section "${1}" || {
+               echo "validation failed"
+               return 1
+       }
+
+       echo "$hostname" > /proc/sys/kernel/hostname
+       [ -z "$conloglevel" -a -z "$buffersize" ] || dmesg ${conloglevel:+-n $conloglevel} ${buffersize:+-s $buffersize}
+       echo "$timezone" > /tmp/TZ
+       [ -n "$zonename" ] && [ -f "/usr/share/zoneinfo/$zonename" ] && ln -s "/usr/share/zoneinfo/$zonename" /tmp/localtime
+
+       # apply timezone to kernel
+       date -k
+}
+
+reload_service() {
+       config_load system
+       config_foreach system_config system
+}
+
+service_triggers()
+{
+       procd_add_reload_trigger "system"
+       procd_add_validation validate_system_section
+}
+
+start_service() {
+       reload_service
+}