Module Name: src Committed By: pgoyette Date: Thu Nov 1 13:43:23 UTC 2012
Modified Files: src/sbin/ifconfig: ether.c ifconfig.c Log Message: Use snprintb_m(3) to split flags/capabilities/enabled across multiple output lines. As discussed on current-users To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sbin/ifconfig/ether.c cvs rdiff -u -r1.227 -r1.228 src/sbin/ifconfig/ifconfig.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sbin/ifconfig/ether.c diff -u src/sbin/ifconfig/ether.c:1.1 src/sbin/ifconfig/ether.c:1.2 --- src/sbin/ifconfig/ether.c:1.1 Wed Oct 31 10:17:34 2012 +++ src/sbin/ifconfig/ether.c Thu Nov 1 13:43:23 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ether.c,v 1.1 2012/10/31 10:17:34 msaitoh Exp $ */ +/* $NetBSD: ether.c,v 1.2 2012/11/01 13:43:23 pgoyette Exp $ */ /* * Copyright (c) 1983, 1993 @@ -31,7 +31,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: ether.c,v 1.1 2012/10/31 10:17:34 msaitoh Exp $"); +__RCSID("$NetBSD: ether.c,v 1.2 2012/11/01 13:43:23 pgoyette Exp $"); #endif /* not lint */ #include <sys/param.h> @@ -58,11 +58,14 @@ static void ether_constructor(void) __at static status_func_t status; +#define MAX_PRINT_LEN 55 + void ether_status(prop_dictionary_t env, prop_dictionary_t oenv) { struct eccapreq eccr; char fbuf[BUFSIZ]; + char *bp; memset(&eccr, 0, sizeof(eccr)); @@ -70,12 +73,20 @@ ether_status(prop_dictionary_t env, prop return; if (eccr.eccr_capabilities != 0) { - (void)snprintb(fbuf, sizeof(fbuf), ECCAPBITS, - eccr.eccr_capabilities); - printf("\tec_capabilities=%s\n", &fbuf[2]); - (void)snprintb(fbuf, sizeof(fbuf), ECCAPBITS, - eccr.eccr_capenable); - printf("\tec_enabled=%s\n", &fbuf[2]); + (void)snprintb_m(fbuf, sizeof(fbuf), ECCAPBITS, + eccr.eccr_capabilities, MAX_PRINT_LEN); + bp = fbuf; + while (*bp != '\0') { + printf("\tec_capabilities=%s\n", &bp[2]); + bp += strlen(bp) + 1; + } + (void)snprintb_m(fbuf, sizeof(fbuf), ECCAPBITS, + eccr.eccr_capenable, MAX_PRINT_LEN); + bp = fbuf; + while (*bp != '\0') { + printf("\tec_enabled=%s\n", &bp[2]); + bp += strlen(bp) + 1; + } } } Index: src/sbin/ifconfig/ifconfig.c diff -u src/sbin/ifconfig/ifconfig.c:1.227 src/sbin/ifconfig/ifconfig.c:1.228 --- src/sbin/ifconfig/ifconfig.c:1.227 Sat Jan 28 15:01:44 2012 +++ src/sbin/ifconfig/ifconfig.c Thu Nov 1 13:43:23 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ifconfig.c,v 1.227 2012/01/28 15:01:44 mbalmer Exp $ */ +/* $NetBSD: ifconfig.c,v 1.228 2012/11/01 13:43:23 pgoyette Exp $ */ /*- * Copyright (c) 1997, 1998, 2000 The NetBSD Foundation, Inc. @@ -63,7 +63,7 @@ #ifndef lint __COPYRIGHT("@(#) Copyright (c) 1983, 1993\ The Regents of the University of California. All rights reserved."); -__RCSID("$NetBSD: ifconfig.c,v 1.227 2012/01/28 15:01:44 mbalmer Exp $"); +__RCSID("$NetBSD: ifconfig.c,v 1.228 2012/11/01 13:43:23 pgoyette Exp $"); #endif /* not lint */ #include <sys/param.h> @@ -1163,6 +1163,9 @@ print_human_bytes(bool humanize, uint64_ * Print the status of the interface. If an address family was * specified, show it and it only; otherwise, show them all. */ + +#define MAX_PRINT_LEN 58 /* XXX need a better way to determine this! */ + void status(const struct sockaddr *sdl, prop_dictionary_t env, prop_dictionary_t oenv) @@ -1174,6 +1177,7 @@ status(const struct sockaddr *sdl, prop_ struct ifreq ifr; struct ifdrv ifdrv; char fbuf[BUFSIZ]; + char *bp; int af, s; const char *ifname; struct ifcapreq ifcr; @@ -1193,8 +1197,12 @@ status(const struct sockaddr *sdl, prop_ if ((ifname = getifinfo(env, oenv, &flags)) == NULL) err(EXIT_FAILURE, "%s: getifinfo", __func__); - (void)snprintb(fbuf, sizeof(fbuf), IFFBITS, flags); - printf("%s: flags=%s", ifname, &fbuf[2]); + (void)snprintb_m(fbuf, sizeof(fbuf), IFFBITS, flags, MAX_PRINT_LEN); + bp = fbuf; + while (*bp != '\0') { + printf("%s: flags=%s", ifname, &bp[2]); + bp += strlen(bp) + 1; + } estrlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); if (prog_ioctl(s, SIOCGIFMETRIC, &ifr) == -1) @@ -1211,12 +1219,20 @@ status(const struct sockaddr *sdl, prop_ err(EXIT_FAILURE, "%s: getifcaps", __func__); if (ifcr.ifcr_capabilities != 0) { - (void)snprintb(fbuf, sizeof(fbuf), IFCAPBITS, - ifcr.ifcr_capabilities); - printf("\tcapabilities=%s\n", &fbuf[2]); - (void)snprintb(fbuf, sizeof(fbuf), IFCAPBITS, - ifcr.ifcr_capenable); - printf("\tenabled=%s\n", &fbuf[2]); + (void)snprintb_m(fbuf, sizeof(fbuf), IFCAPBITS, + ifcr.ifcr_capabilities, MAX_PRINT_LEN); + bp = fbuf; + while (*bp != '\0') { + printf("\tcapabilities=%s\n", &bp[2]); + bp += strlen(bp) + 1; + } + (void)snprintb_m(fbuf, sizeof(fbuf), IFCAPBITS, + ifcr.ifcr_capenable, MAX_PRINT_LEN); + bp = fbuf; + while (*bp != '\0') { + printf("\tenabled=%s\n", &bp[2]); + bp += strlen(bp) + 1; + } } SIMPLEQ_FOREACH(status_f, &status_funcs, f_next)