Merge: Nitiwiki next
[nit.git] / lib / socket / socket_c.nit
index 5962b3d..03d9ddc 100644 (file)
@@ -332,7 +332,9 @@ class NativeSocketObserver
        # are boxed objects, passing them to a C function is illegal.
        fun select(max: NativeSocket, reads: nullable NativeSocketSet, write: nullable NativeSocketSet,
                         except: nullable NativeSocketSet, timeout: NativeTimeval): Int `{
-               fd_set *rds, *wts, *exs = NULL;
+               fd_set *rds = NULL,
+                      *wts = NULL,
+                      *exs = NULL;
                struct timeval *tm = NULL;
                if (reads != NULL) rds = (fd_set*)reads;
                if (write != NULL) wts = (fd_set*)write;
@@ -511,4 +513,21 @@ extern class HErrno `{ int `}
 
        # A temporary error occurred on an authoritative name server, try again later
        fun try_again: Bool `{ return self == TRY_AGAIN; `}
+
+       redef fun to_s
+       do
+               if host_not_found then
+                       return "The specified host is unknown"
+               else if no_address then
+                       return "The requested name is valid but does not have an IP address"
+               else if no_recovery then
+                       return "A nonrecoverable name server error occurred"
+               else if try_again then
+                       return "A temporary error occurred on an authoritative name server, try again later"
+               else
+                       # This may happen if another call was made to `gethostbyname`
+                       # before we fetch the error code.
+                       return "Unknown error on `gethostbyname`"
+               end
+       end
 end