X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Fmisc-progs%2Frebuildhosts.c;h=549c6533f1e2d67170231a4c6494350fa2af09b8;hb=8d76eb20852a695b15e6fd32076128a25fad01d1;hp=21c523600c75b5223106d6aeb284db40f30e9531;hpb=33a1b286084cf0745aced5f17c86e39b41859c40;p=ipfire-2.x.git diff --git a/src/misc-progs/rebuildhosts.c b/src/misc-progs/rebuildhosts.c index 21c523600c..549c6533f1 100644 --- a/src/misc-progs/rebuildhosts.c +++ b/src/misc-progs/rebuildhosts.c @@ -14,16 +14,13 @@ #include #include #include -#include #include #include #include -#include #include "setuid.h" #include "netutil.h" -FILE *fd = NULL; FILE *hosts = NULL; FILE *gw = NULL; struct keyvalue *kv = NULL; @@ -32,8 +29,6 @@ void exithandler(void) { if (kv) freekeyvalues(kv); - if (fd) - fclose(fd); if (hosts) fclose(hosts); if (gw) @@ -42,22 +37,16 @@ void exithandler(void) int main(int argc, char *argv[]) { - int fdpid; char hostname[STRING_SIZE] = ""; char domainname[STRING_SIZE] = ""; char gateway[STRING_SIZE] = ""; - char buffer[STRING_SIZE]; char address[STRING_SIZE] = ""; - char *active, *ip, *host, *domain; - int pid; if (!(initsetuid())) exit(1); atexit(exithandler); - memset(buffer, 0, STRING_SIZE); - kv = initkeyvalues(); if (!(readkeyvalues(kv, CONFIG_ROOT "/ethernet/settings"))) { @@ -79,31 +68,18 @@ 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"); - fclose(gw); - gw = NULL; - 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"))) - { - fprintf(stderr, "Couldn't open main hosts file\n"); - exit(1); } if (!(hosts = fopen("/etc/hosts", "w"))) { fprintf(stderr, "Couldn't open /etc/hosts file\n"); - fclose(fd); - fd = NULL; exit(1); } fprintf(hosts, "127.0.0.1\tlocalhost\n"); @@ -112,67 +88,8 @@ int main(int argc, char *argv[]) else fprintf(hosts, "%s\t%s\n",address,hostname); - fprintf(hosts, "%s\tgateway\n",gateway); - - while (fgets(buffer, STRING_SIZE, fd)) - { - buffer[strlen(buffer) - 1] = 0; - if (buffer[0]==',') continue; /* disabled if empty field */ - active = strtok(buffer, ","); - if (strcmp(active, "off")==0) continue; /* or 'off' */ - - ip = strtok(NULL, ","); - host = strtok(NULL, ","); - domain = strtok(NULL, ","); - - if (!(ip && host)) - continue; // bad line ? skip - - if (!VALID_IP(ip)) - { - fprintf(stderr, "Bad IP: %s\n", ip); - continue; /* bad ip, skip */ - } - - if (strspn(host, LETTERS_NUMBERS "-") != strlen(host)) - { - fprintf(stderr, "Bad Host: %s\n", host); - continue; /* bad name, skip */ - } - - if (domain) - fprintf(hosts, "%s\t%s.%s\t%s\n",ip,host,domain,host); - else - fprintf(hosts, "%s\t%s\n",ip,host); - } - fclose(fd); - fd = NULL; - fclose(hosts); - hosts = NULL; - - if ((fdpid = open("/var/run/dnsmasq.pid", O_RDONLY)) == -1) - { - fprintf(stderr, "Couldn't open pid file\n"); - exit(1); - } - if (read(fdpid, buffer, STRING_SIZE - 1) == -1) - { - fprintf(stderr, "Couldn't read from pid file\n"); - close(fdpid); - exit(1); - } - close(fdpid); - pid = atoi(buffer); - if (pid <= 1) - { - fprintf(stderr, "Bad pid value\n"); - exit(1); - } - if (kill(pid, SIGHUP) == -1) - { - fprintf(stderr, "Unable to send SIGHUP\n"); - exit(1); - } + if (strlen(gateway) > 0) + fprintf(hosts, "%s\tgateway\n", gateway); return 0; }