]> git.sur5r.net Git - i3/i3status/blobdiff - i3status.c
Fix display of IP addresses (display "no IP" correctly)
[i3/i3status] / i3status.c
index cb563736f05df3513bfe71218e720acd7630a85f..a0415d3aa9b4b571d2aac19b64ed37d6cf47aa0b 100644 (file)
@@ -360,10 +360,17 @@ static const char *get_ip_address(const char *interface) {
        socklen_t len = sizeof(struct sockaddr_in);
        memset(part, 0, sizeof(part));
 
+       /* First check if the interface is running */
+       (void)strcpy(ifr.ifr_name, interface);
+       if (ioctl(general_socket, SIOCGIFFLAGS, &ifr) < 0 ||
+           !(ifr.ifr_flags & IFF_RUNNING))
+               return NULL;
+
+       /* Interface is up, get the IP address */
        (void)strcpy(ifr.ifr_name, interface);
        ifr.ifr_addr.sa_family = AF_INET;
        if (ioctl(general_socket, SIOCGIFADDR, &ifr) < 0)
-               return NULL;
+               return "no IP";
 
        memcpy(&addr, &ifr.ifr_addr, len);
        (void)inet_ntop(AF_INET, &addr.sin_addr.s_addr, part, len);