From 4b0ed484226093cc84d6f990a7cec8bb5eb3df24 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 24 Sep 2016 01:34:58 +0200 Subject: [PATCH] uradvd: remove uses of error.h It is not available in musl. --- net/uradvd/src/uradvd.c | 56 +++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/net/uradvd/src/uradvd.c b/net/uradvd/src/uradvd.c index 2b64caf..f6549f2 100644 --- a/net/uradvd/src/uradvd.c +++ b/net/uradvd/src/uradvd.c @@ -27,7 +27,6 @@ #define _GNU_SOURCE #include -#include #include #include #include @@ -124,12 +123,28 @@ static struct global { }; +static inline void print_error(const char *prefix, const char *message, int err) { + if (err) + fprintf(stderr, "uradvd: %s: %s: %s\n", prefix, message, strerror(err)); + else + fprintf(stderr, "uradvd: %s: %s\n", prefix, message); +} + +static inline void exit_error(const char *message, int err) { + print_error("error", message, err); + exit(1); +} + static inline void exit_errno(const char *message) { - error(1, errno, "error: %s", message); + exit_error(message, errno); +} + +static inline void warn_error(const char *message, int err) { + print_error("error", message, err); } static inline void warn_errno(const char *message) { - error(0, errno, "warning: %s", message); + warn_error(message, errno); } @@ -388,7 +403,7 @@ static void handle_rtnl(void) { return; case NLMSG_ERROR: - error(1, 0, "error: netlink error"); + exit_error("netlink error", 0); default: if (handle_rtnl_msg(nh->nlmsg_type, NLMSG_DATA(nh))) { @@ -582,22 +597,24 @@ static void usage(void) { } static void add_rdnss(const char *ip) { - if (G.n_rdnss == MAX_RDNSS) - error(1, 0, "maximum number of RDNSS IPs is %i.", MAX_RDNSS); + if (G.n_rdnss == MAX_RDNSS) { + fprintf(stderr, "uradvd: error: maximum number of RDNSS IPs is %i.\n", MAX_RDNSS); + exit(1); + } - if (inet_pton(AF_INET6, ip, &G.rdnss[G.n_rdnss]) != 1) - goto error; + if (inet_pton(AF_INET6, ip, &G.rdnss[G.n_rdnss]) != 1) { + fprintf(stderr, "uradvd: error: invalid RDNSS IP address %s.\n", ip); + exit(1); + } G.n_rdnss++; - return; - - error: - error(1, 0, "invalid RDNSS IP address %s.", ip); } static void add_prefix(const char *prefix, bool adv_onlink) { - if (G.n_prefixes == MAX_PREFIXES) - error(1, 0, "maximum number of prefixes is %i.", MAX_PREFIXES); + if (G.n_prefixes == MAX_PREFIXES) { + fprintf(stderr, "uradvd: error: maximum number of prefixes is %i.\n", MAX_PREFIXES); + exit(1); + } const size_t len = strlen(prefix)+1; char prefix2[len]; @@ -622,8 +639,9 @@ static void add_prefix(const char *prefix, bool adv_onlink) { G.n_prefixes++; return; - error: - error(1, 0, "invalid prefix %s (only prefixes of length 64 are supported).", prefix); +error: + fprintf(stderr, "uradvd: error: invalid prefix %s (only prefixes of length 64 are supported).\n", prefix); + exit(1); } static void parse_cmdline(int argc, char *argv[]) { @@ -646,7 +664,7 @@ static void parse_cmdline(int argc, char *argv[]) { val = strtoul(optarg, &endptr, 0); if (!*optarg || *endptr || val > UINT16_MAX) - error(1, 0, "%s", "Invalid default lifetime"); + exit_error("invalid default lifetime\n", 0); G.adv_default_lifetime = val; @@ -658,7 +676,7 @@ static void parse_cmdline(int argc, char *argv[]) { case 'i': if (G.ifname) - error(1, 0, "multiple interfaces are not supported."); + exit_error("multiple interfaces are not supported.\n", 0); G.ifname = optarg; @@ -687,7 +705,7 @@ int main(int argc, char *argv[]) { parse_cmdline(argc, argv); if (!G.ifname || !G.n_prefixes) - error(1, 0, "interface and prefix arguments are required."); + exit_error("interface and prefix arguments are required.\n", 0); init_random(); init_icmp();