netspeeds: added error condition for openbsd - slstatus - suckless status monitor. mirror from suckless.org
 (HTM) git clone git://git.drkhsh.at/slstatus.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 2321aecff01fb9aa2fda156bb59bca6d16bd7c5d
 (DIR) parent 0383146e5e616e81c13b23a127ecfa697feac7db
 (HTM) Author: Tobias Tschinkowitz <he4d@posteo.de>
       Date:   Sat, 19 May 2018 11:23:16 +0200
       
       netspeeds: added error condition for openbsd
       
       implemented additional error condition for openbsd netstat in case the
       interface could not be found in the interface list or if_data is not
       readable.
       
       Diffstat:
         M components/netspeeds.c              |      14 ++++++++++++--
       
       1 file changed, 12 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/components/netspeeds.c b/components/netspeeds.c
       @@ -64,6 +64,7 @@
                        uint64_t rxbytes = 0;
                        const char *rxs;
                        extern const unsigned int interval;
       +                char if_ok = 0;
        
                        if (getifaddrs(&ifal) == -1) {
                                warn("getifaddrs failed");
       @@ -72,10 +73,14 @@
                        for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
                                if (!strcmp(ifa->ifa_name, interface) &&
                                   (ifd = (struct if_data *)ifa->ifa_data)) {
       -                                rxbytes += ifd->ifi_ibytes;
       +                                rxbytes += ifd->ifi_ibytes, if_ok = 1;
                                }
                        }
                        freeifaddrs(ifal);
       +                if (!if_ok) {
       +                        warn("reading 'if_data' failed");
       +                        return NULL;
       +                }
        
                        rxs = oldrxbytes ? fmt_scaled((rxbytes - oldrxbytes) /
                                                      interval * 1000) : NULL;
       @@ -91,6 +96,7 @@
                        uint64_t txbytes = 0;
                        const char *txs;
                        extern const unsigned int interval;
       +                char if_ok = 0;
        
                        if (getifaddrs(&ifal) == -1) {
                                warn("getifaddrs failed");
       @@ -99,10 +105,14 @@
                        for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
                                if (!strcmp(ifa->ifa_name, interface) &&
                                   (ifd = (struct if_data *)ifa->ifa_data)) {
       -                                txbytes += ifd->ifi_obytes;
       +                                txbytes += ifd->ifi_obytes, if_ok = 1;
                                }
                        }
                        freeifaddrs(ifal);
       +                if (!if_ok) {
       +                        warn("reading 'if_data' failed");
       +                        return NULL;
       +                }
        
                        txs = oldtxbytes ? fmt_scaled((txbytes - oldtxbytes) /
                                                      interval * 1000) : NULL;