libc.pyx
changeset 6 10bd48c9b6ce
parent 5 59bed837c265
--- a/libc.pyx	Sun Aug 16 16:38:44 2009 +0300
+++ b/libc.pyx	Sun Aug 16 18:29:55 2009 +0300
@@ -11,13 +11,20 @@
     cdef char buf[INET6_ADDRSTRLEN]
 
     if c_inet_ntop(af, sockaddr, buf, sizeof(buf)) == NULL :
-        raise_errno()
+        raise_errno('inet_ntop')
     
     # autoconvert -> str
     return buf
 
 cdef object inet_pton (int af, char *addr, void *sockaddr_out) :
-    if c_inet_pton(af, addr, sockaddr_out) <= 0 :
+    cdef int ret
+
+    ret = c_inet_pton(af, addr, sockaddr_out)
+    
+    if ret < 0 :
+        raise_errno('inet_pton')
+
+    elif ret == 0 :
         raise NameError("Invalid network address for specified address family: %r" % (addr, ))
 
 cdef object getnameinfo (sockaddr *sa, socklen_t salen, int flags) :
@@ -30,7 +37,26 @@
     if err :
         # XXX: raise a GAIError
         raise Exception(gai_strerror(err))
+#        raise GAIError('getnameinfo', err)
 
     else :
         return hostbuf, servbuf
 
+#cdef class Errno (py.OSError) :
+#    def __init__ (self, func) :
+#        self.func = func
+#        self.err = errno
+#        self.strerror = strerror(errno)
+#
+#    def __str__ (self) :
+#        return "%s: %s" % (self.func, self.strerror)
+#
+#cdef class GAIError (py.OSError) :
+#    def __init__ (self, func, err) :
+#        self.func = func
+#        self.err = err
+#        self.strerror = gai_strerror(err)
+#
+#    def __str__ (self) :
+#        return "%s: %s" % (self.func, self.strerror)
+#