diff --git a/ifconfig.c b/ifconfig.c
index 80c0e5c..b524647 100644
--- a/ifconfig.c
+++ b/ifconfig.c
@@ -61,7 +61,7 @@
 {
     struct ifreq ifr;
     int s;
-    unsigned int addr, mask, flags;
+    unsigned int flags;
     char astring[20];
     char mstring[20];
     char *updown, *brdcst, *loopbk, *ppp, *running, *multi;
@@ -82,16 +82,23 @@
 
     if (argc == 0) {
         if (ioctl(s, SIOCGIFADDR, &ifr) < 0) {
-            perror(ifr.ifr_name);
-            return -1;
-        } else
-            addr = ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr;
+            if (errno == EADDRNOTAVAIL || errno == EAFNOSUPPORT) {
+                bzero((char *)&ifr.ifr_addr, sizeof(ifr.ifr_addr));
+            } else {
+                perror(ifr.ifr_name);
+                return -1;
+            }
+        }
+        sprintf(astring, "%s",
+                inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));
 
         if (ioctl(s, SIOCGIFNETMASK, &ifr) < 0) {
-            perror(ifr.ifr_name);
-            return -1;
-        } else
-            mask = ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr;
+            if (errno != EADDRNOTAVAIL)
+                perror(ifr.ifr_name);
+            bzero((char *)&ifr.ifr_addr, sizeof(ifr.ifr_addr));
+        }
+        sprintf(mstring, "%s",
+                inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));
 
         if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0) {
             perror(ifr.ifr_name);
@@ -99,16 +106,6 @@
         } else
             flags = ifr.ifr_flags;
 
-        sprintf(astring, "%d.%d.%d.%d",
-                addr & 0xff,
-                ((addr >> 8) & 0xff),
-                ((addr >> 16) & 0xff),
-                ((addr >> 24) & 0xff));
-        sprintf(mstring, "%d.%d.%d.%d",
-                mask & 0xff,
-                ((mask >> 8) & 0xff),
-                ((mask >> 16) & 0xff),
-                ((mask >> 24) & 0xff));
         printf("%s: ip %s mask %s flags [", ifr.ifr_name,
                astring,
                mstring
