From 3538b9a8822421b7c8596a33a917dcf2f99c92b7 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Wed, 6 Sep 2006 18:36:50 +0000 Subject: Implement optional syslog logging using ordinary bb_xx_msg calls, and convert networking/* to it. The rest of bbox will be converted gradually. --- networking/nameif.c | 42 +++++++++++------------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) (limited to 'networking/nameif.c') diff --git a/networking/nameif.c b/networking/nameif.c index 501e244b1..3fa257263 100644 --- a/networking/nameif.c +++ b/networking/nameif.c @@ -41,29 +41,6 @@ typedef struct mactable_s { struct ether_addr *mac; } mactable_t; -static unsigned long flags; - -static void serror(const char *s, ...) ATTRIBUTE_NORETURN; - -static void serror(const char *s, ...) -{ - va_list ap; - - va_start(ap, s); - - if (flags & 1) { - openlog(bb_applet_name, 0, LOG_LOCAL0); - vsyslog(LOG_ERR, s, ap); - closelog(); - } else { - bb_verror_msg(s, ap); - putc('\n', stderr); - } - va_end(ap); - - exit(EXIT_FAILURE); -} - /* Check ascii str_macaddr, convert and copy to *mac */ static struct ether_addr *cc_macaddr(const char *str_macaddr) { @@ -71,7 +48,7 @@ static struct ether_addr *cc_macaddr(const char *str_macaddr) lmac = ether_aton(str_macaddr); if (lmac == NULL) - serror("cannot parse MAC %s", str_macaddr); + bb_error_msg_and_die("cannot parse MAC %s", str_macaddr); mac = xmalloc(ETH_ALEN); memcpy(mac, lmac, ETH_ALEN); @@ -88,7 +65,10 @@ int nameif_main(int argc, char **argv) int if_index = 1; mactable_t *ch; - flags = bb_getopt_ulflags(argc, argv, "sc:", &fname); + if (1 & bb_getopt_ulflags(argc, argv, "sc:", &fname)) { + openlog(bb_applet_name, 0, LOG_LOCAL0); + logmode = LOGMODE_SYSLOG; + } if ((argc - optind) & 1) bb_show_usage(); @@ -97,9 +77,9 @@ int nameif_main(int argc, char **argv) char **a = argv + optind; while (*a) { - if (strlen(*a) > IF_NAMESIZE) - serror("interface name `%s' too long", *a); + bb_error_msg_and_die("interface name `%s' " + "too long", *a); ch = xzalloc(sizeof(mactable_t)); ch->ifname = xstrdup(*a++); ch->mac = cc_macaddr(*a++); @@ -124,7 +104,8 @@ int nameif_main(int argc, char **argv) ch = xzalloc(sizeof(mactable_t)); ch->ifname = xstrndup(line_ptr, name_length); if (name_length > IF_NAMESIZE) - serror("interface name `%s' too long", ch->ifname); + bb_error_msg_and_die("interface name `%s' " + "too long", ch->ifname); line_ptr += name_length; line_ptr += strspn(line_ptr, " \t"); name_length = strspn(line_ptr, "0123456789ABCDEFabcdef:"); @@ -139,8 +120,7 @@ int nameif_main(int argc, char **argv) fclose(ifh); } - if ((ctl_sk = socket(PF_INET, SOCK_DGRAM, 0)) == -1) - serror("socket: %m"); + ctl_sk = xsocket(PF_INET, SOCK_DGRAM, 0); while (clist) { struct ifreq ifr; @@ -168,7 +148,7 @@ int nameif_main(int argc, char **argv) strcpy(ifr.ifr_newname, ch->ifname); if (ioctl(ctl_sk, SIOCSIFNAME, &ifr) < 0) - serror("cannot change ifname %s to %s: %m", + bb_perror_msg_and_die("cannot change ifname %s to %s", ifr.ifr_name, ch->ifname); /* Remove list entry of renamed interface */ -- cgit v1.2.3