base-files: also generate configs when current is empty (FS#193)
authorKoen Vandeputte <koen.vandeputte@ncentric.com>
Wed, 5 Oct 2016 09:26:35 +0000 (11:26 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 5 Oct 2016 17:59:11 +0000 (19:59 +0200)
Before a configuration is generated, an empty file is created to store
it in. (required by UCI)

If something happens during config generation
(power cut, interruption, ..) an empty file exists and it is never
regenerated again, causing some daemons to fail starting
(NTPD, logread, ..)

Fix this by also generating new configs if a critical file
is empty.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
package/base-files/files/bin/board_detect
package/base-files/files/bin/config_generate

index f9640f0388717b389a69483f9e3cdcdda08aba0f..441db6a08fc9e349b3fca1efc68a9c7934d3bb77 100755 (executable)
@@ -4,11 +4,11 @@ CFG=$1
 
 [ -n "$CFG" ] || CFG=/etc/board.json
 
-[ -d "/etc/board.d/" -a ! -f "$CFG" ] && {
+[ -d "/etc/board.d/" -a ! -s "$CFG" ] && {
        for a in `ls /etc/board.d/*`; do
                [ -x $a ] || continue;
                $(. $a)
        done
 }
 
-[ -f "$CFG" ] || return 1
+[ -s "$CFG" ] || return 1
index 80ed61b9e2dabf6f2f99102345be3da60097af3e..80e5c9f47471329bf2c154cbcd69687fdf079ab2 100755 (executable)
@@ -4,8 +4,8 @@ CFG=/etc/board.json
 
 . /usr/share/libubox/jshn.sh
 
-[ -f $CFG ] || /bin/board_detect || exit 1
-[ -f /etc/config/network -a -f /etc/config/system ] && exit 0
+[ -s $CFG ] || /bin/board_detect || exit 1
+[ -s /etc/config/network -a -s /etc/config/system ] && exit 0
 
 generate_static_network() {
        uci -q batch <<-EOF
@@ -401,7 +401,7 @@ generate_gpioswitch() {
 json_init
 json_load "$(cat ${CFG})"
 
-if [ ! -f /etc/config/network ]; then
+if [ ! -s /etc/config/network ]; then
        touch /etc/config/network
        generate_static_network
 
@@ -412,7 +412,7 @@ if [ ! -f /etc/config/network ]; then
        for key in $keys; do generate_switch $key; done
 fi
 
-if [ ! -f /etc/config/system ]; then
+if [ ! -s /etc/config/system ]; then
        touch /etc/config/system
        generate_static_system