rebuildhosts: Don't break when RED not online
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 3 Jun 2015 16:00:13 +0000 (18:00 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 3 Jun 2015 16:00:13 +0000 (18:00 +0200)
The hosts file was not regenerated when RED was not connected
which should not be happening.

This patch checks if the file exists. If not, the gateway
line will not be written to /etc/hosts.

src/misc-progs/rebuildhosts.c

index fdaeed6..f77c2df 100644 (file)
@@ -79,16 +79,13 @@ int main(int argc, char *argv[])
        freekeyvalues(kv);
        kv = NULL;
 
-       if (!(gw = fopen(CONFIG_ROOT "/red/remote-ipaddress", "r")))
-       {
+       if ((gw = fopen(CONFIG_ROOT "/red/remote-ipaddress", "r"))) {
+               if (fgets(gateway, STRING_SIZE, gw) == NULL) {
+                       fprintf(stderr, "Couldn't read remote-ipaddress\n");
+                       exit(1);
+               }
+       } else {
                fprintf(stderr, "Couldn't open remote-ipaddress file\n");
-               exit(1);
-       }
-
-       if (fgets(gateway, STRING_SIZE, gw) == NULL)
-       {
-               fprintf(stderr, "Couldn't read remote-ipaddress\n");
-               exit(1);
        }
 
        if (!(fd = fopen(CONFIG_ROOT "/main/hosts", "r")))
@@ -110,7 +107,8 @@ int main(int argc, char *argv[])
        else
                fprintf(hosts, "%s\t%s\n",address,hostname);
 
-       fprintf(hosts, "%s\tgateway\n",gateway);
+       if (strlen(gateway) > 0)
+               fprintf(hosts, "%s\tgateway\n", gateway);
 
        while (fgets(buffer, STRING_SIZE, fd))
        {