Yet another major rework of the BusyBox config system, using the considerably
[oweals/busybox.git] / networking / libiproute / utils.c
index afc02d9d97048e1be2a89ff53c25b620c019804f..9ae21b464b0ef7c57939cc78b6b8f2c4d40ef0e9 100644 (file)
 #include <netdb.h>
 #include <arpa/inet.h>
 #include <resolv.h>
-#include "./linux/pkt_sched.h"
 
+#include "./linux/pkt_sched.h"
 #include "utils.h"
+#include "libbb.h"
 
 int get_integer(int *val, char *arg, int base)
 {
@@ -57,7 +58,7 @@ int get_unsigned(unsigned *val, char *arg, int base)
        return 0;
 }
 
-int get_u32(__u32 *val, char *arg, int base)
+int get_u32(__u32 * val, char *arg, int base)
 {
        unsigned long res;
        char *ptr;
@@ -71,7 +72,7 @@ int get_u32(__u32 *val, char *arg, int base)
        return 0;
 }
 
-int get_u16(__u16 *val, char *arg, int base)
+int get_u16(__u16 * val, char *arg, int base)
 {
        unsigned long res;
        char *ptr;
@@ -85,7 +86,7 @@ int get_u16(__u16 *val, char *arg, int base)
        return 0;
 }
 
-int get_u8(__u8 *val, char *arg, int base)
+int get_u8(__u8 * val, char *arg, int base)
 {
        unsigned long res;
        char *ptr;
@@ -99,7 +100,7 @@ int get_u8(__u8 *val, char *arg, int base)
        return 0;
 }
 
-int get_s16(__s16 *val, char *arg, int base)
+int get_s16(__s16 * val, char *arg, int base)
 {
        long res;
        char *ptr;
@@ -113,7 +114,7 @@ int get_s16(__s16 *val, char *arg, int base)
        return 0;
 }
 
-int get_s8(__s8 *val, char *arg, int base)
+int get_s8(__s8 * val, char *arg, int base)
 {
        long res;
        char *ptr;
@@ -127,17 +128,16 @@ int get_s8(__s8 *val, char *arg, int base)
        return 0;
 }
 
-int get_addr_1(inet_prefix *addr, char *name, int family)
+int get_addr_1(inet_prefix * addr, char *name, int family)
 {
        char *cp;
-       unsigned char *ap = (unsigned char*)addr->data;
+       unsigned char *ap = (unsigned char *) addr->data;
        int i;
 
        memset(addr, 0, sizeof(*addr));
 
        if (strcmp(name, "default") == 0 ||
-           strcmp(name, "all") == 0 ||
-           strcmp(name, "any") == 0) {
+               strcmp(name, "all") == 0 || strcmp(name, "any") == 0) {
                addr->family = family;
                addr->bytelen = (family == AF_INET6 ? 16 : 4);
                addr->bitlen = -1;
@@ -160,9 +160,9 @@ int get_addr_1(inet_prefix *addr, char *name, int family)
                return -1;
        addr->bytelen = 4;
        addr->bitlen = -1;
-       for (cp=name, i=0; *cp; cp++) {
+       for (cp = name, i = 0; *cp; cp++) {
                if (*cp <= '9' && *cp >= '0') {
-                       ap[i] = 10*ap[i] + (*cp-'0');
+                       ap[i] = 10 * ap[i] + (*cp - '0');
                        continue;
                }
                if (*cp == '.' && ++i <= 3)
@@ -172,7 +172,7 @@ int get_addr_1(inet_prefix *addr, char *name, int family)
        return 0;
 }
 
-int get_prefix_1(inet_prefix *dst, char *arg, int family)
+int get_prefix_1(inet_prefix * dst, char *arg, int family)
 {
        int err;
        unsigned plen;
@@ -192,50 +192,46 @@ int get_prefix_1(inet_prefix *dst, char *arg, int family)
                *slash = 0;
        err = get_addr_1(dst, arg, family);
        if (err == 0) {
-               switch(dst->family) {
-                       case AF_INET6:
-                               dst->bitlen = 128;
-                               break;
-                       default:
-                       case AF_INET:
-                               dst->bitlen = 32;
+               switch (dst->family) {
+               case AF_INET6:
+                       dst->bitlen = 128;
+                       break;
+               default:
+               case AF_INET:
+                       dst->bitlen = 32;
                }
                if (slash) {
-                       if (get_integer(&plen, slash+1, 0) || plen > dst->bitlen) {
+                       if (get_integer(&plen, slash + 1, 0) || plen > dst->bitlen) {
                                err = -1;
                                goto done;
                        }
                        dst->bitlen = plen;
                }
        }
-done:
+  done:
        if (slash)
                *slash = '/';
        return err;
 }
 
-int get_addr(inet_prefix *dst, char *arg, int family)
+int get_addr(inet_prefix * dst, char *arg, int family)
 {
        if (family == AF_PACKET) {
-               fprintf(stderr, "Error: \"%s\" may be inet address, but it is not allowed in this context.\n", arg);
-               exit(1);
+               error_msg_and_die("\"%s\" may be inet address, but it is not allowed in this context.", arg);
        }
        if (get_addr_1(dst, arg, family)) {
-               fprintf(stderr, "Error: an inet address is expected rather than \"%s\".\n", arg);
-               exit(1);
+               error_msg_and_die("an inet address is expected rather than \"%s\".", arg);
        }
        return 0;
 }
 
-int get_prefix(inet_prefix *dst, char *arg, int family)
+int get_prefix(inet_prefix * dst, char *arg, int family)
 {
        if (family == AF_PACKET) {
-               fprintf(stderr, "Error: \"%s\" may be inet prefix, but it is not allowed in this context.\n", arg);
-               exit(1);
+               error_msg_and_die("\"%s\" may be inet address, but it is not allowed in this context.", arg);
        }
        if (get_prefix_1(dst, arg, family)) {
-               fprintf(stderr, "Error: an inet prefix is expected rather than \"%s\".\n", arg);
-               exit(1);
+               error_msg_and_die("an inet address is expected rather than \"%s\".", arg);
        }
        return 0;
 }
@@ -243,46 +239,48 @@ int get_prefix(inet_prefix *dst, char *arg, int family)
 __u32 get_addr32(char *name)
 {
        inet_prefix addr;
+
        if (get_addr_1(&addr, name, AF_INET)) {
-               fprintf(stderr, "Error: an IP address is expected rather than \"%s\"\n", name);
-               exit(1);
+               error_msg_and_die("an IP address is expected rather than \"%s\"", name);
        }
        return addr.data[0];
 }
 
 void incomplete_command()
 {
-       fprintf(stderr, "Command line is not complete. Try option \"help\"\n");
+       error_msg("Command line is not complete. Try option \"help\"");
        exit(-1);
 }
 
 void invarg(char *msg, char *arg)
 {
-       fprintf(stderr, "Error: argument \"%s\" is wrong: %s\n", arg, msg);
+       error_msg("argument \"%s\" is wrong: %s", arg, msg);
        exit(-1);
 }
 
 void duparg(char *key, char *arg)
 {
-       fprintf(stderr, "Error: duplicate \"%s\": \"%s\" is the second value.\n", key, arg);
+       error_msg("duplicate \"%s\": \"%s\" is the second value.", key, arg);
        exit(-1);
 }
 
 void duparg2(char *key, char *arg)
 {
-       fprintf(stderr, "Error: either \"%s\" is duplicate, or \"%s\" is a garbage.\n", key, arg);
+       error_msg("either \"%s\" is duplicate, or \"%s\" is a garbage.", key, arg);
        exit(-1);
 }
 
 int matches(char *cmd, char *pattern)
 {
        int len = strlen(cmd);
-       if (len > strlen(pattern))
+
+       if (len > strlen(pattern)) {
                return -1;
+       }
        return memcmp(pattern, cmd, len);
 }
 
-int inet_addr_match(inet_prefix *a, inet_prefix *b, int bits)
+int inet_addr_match(inet_prefix * a, inet_prefix * b, int bits)
 {
        __u32 *a1 = a->data;
        __u32 *a2 = b->data;
@@ -319,6 +317,7 @@ int __get_hz(void)
 
        if (fp) {
                unsigned nom, denom;
+
                if (fscanf(fp, "%*08x%*08x%08x%08x", &nom, &denom) == 2)
                        if (nom == 1000000)
                                hz = denom;
@@ -346,6 +345,7 @@ const char *format_host(int af, int len, void *addr, char *buf, int buflen)
 #ifdef RESOLVE_HOSTNAMES
        if (resolve_hosts) {
                struct hostent *h_ent;
+
                if (len <= 0) {
                        switch (af) {
                        case AF_INET:
@@ -354,12 +354,11 @@ const char *format_host(int af, int len, void *addr, char *buf, int buflen)
                        case AF_INET6:
                                len = 16;
                                break;
-                       default: ;
+                       default:;
                        }
                }
-               if (len > 0 &&
-                   (h_ent = gethostbyaddr(addr, len, af)) != NULL) {
-                       snprintf(buf, buflen-1, "%s", h_ent->h_name);
+               if (len > 0 && (h_ent = gethostbyaddr(addr, len, af)) != NULL) {
+                       snprintf(buf, buflen - 1, "%s", h_ent->h_name);
                        return buf;
                }
        }