diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/print_ip_addr.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/src/print_ip_addr.c b/src/print_ip_addr.c index e719d2f..1c2839d 100644 --- a/src/print_ip_addr.c +++ b/src/print_ip_addr.c @@ -22,6 +22,7 @@ const char *get_ip_addr(const char *interface) {          memset(part, 0, sizeof(part));          struct ifaddrs *ifaddr, *addrp; +        bool found = false;          getifaddrs(&ifaddr); @@ -40,8 +41,10 @@ const char *get_ip_addr(const char *interface) {               addrp = addrp->ifa_next) {                  /* Check if the interface is down */ -                if (strcmp(addrp->ifa_name, interface) == 0 && -                    (addrp->ifa_flags & IFF_RUNNING) == 0) { +                if (strcmp(addrp->ifa_name, interface) != 0) +                        continue; +                found = true; +                if ((addrp->ifa_flags & IFF_RUNNING) == 0) {                          freeifaddrs(ifaddr);                          return NULL;                  } @@ -49,7 +52,7 @@ const char *get_ip_addr(const char *interface) {          if (addrp == NULL) {                  freeifaddrs(ifaddr); -                return "no IP"; +                return (found ? "no IP" : NULL);          }          int ret; | 
