libc.pxd
changeset 7 74fde84264b1
parent 6 10bd48c9b6ce
child 8 b3880dafbab1
--- a/libc.pxd	Sun Aug 16 18:29:55 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
-"""
-    Libc stuff
-"""
-
-cdef extern from "stdint.h" :
-    # yes, these are "wrong"
-    ctypedef unsigned char uint8_t
-    ctypedef unsigned short uint16_t
-    ctypedef unsigned int uint32_t
-    
-    ctypedef signed char int8_t
-    ctypedef signed short int16_t
-    ctypedef signed int int32_t
-
-cdef extern from "sys/types.h" :
-    # potentially wrong...
-    ctypedef signed long ssize_t
-
-# <linux/types.h>
-cdef extern from "linux/types.h" :
-    ctypedef uint8_t __u8
-    ctypedef uint16_t __u16
-    ctypedef uint32_t __u32
-    
-    ctypedef int8_t __s8
-    ctypedef int16_t __s16
-    ctypedef int32_t __s32
-
-cdef extern from "errno.h" :
-    int errno
-    
-cdef extern from "string.h" :
-    void* memcpy (void *dest, void *src, size_t n)
-    void* memset (void *s, int c, size_t n)
-
-    char* strerror (int errno)
-
-cdef extern from "alloca.h" :
-    void* alloca (size_t size)
-
-cdef extern from "sys/uio.h" :
-    struct iovec :
-        void *iov_base
-        size_t iov_len
-
-cdef extern from "arpa/inet.h" :
-    # XXX: correct?!
-    ctypedef uint32_t socklen_t
-    
-    char* c_inet_ntop "inet_ntop" (int af, void *sockaddr, char *buf, socklen_t len)
-    int c_inet_pton "inet_pton" (int af, char *src, void *dst)
-
-# <sys/socket.h>
-cdef extern from "sys/socket.h" :
-    # socket types
-    enum :
-        SOCK_STREAM
-        SOCK_DGRAM
-        SOCK_RAW
-        SOCK_RDM
-        SOCK_SEQPACKET
-        SOCK_PACKET
-    
-    # packet/address families
-    enum :
-        PF_UNSPEC
-        PF_LOCAL
-        PF_UNIX     # same as PF_LOCAL
-        PF_FILE     # same as PF_LOCAL
-        PF_INET
-        PF_INET6
-        PF_NETLINK
-        PF_ROUTE    # same as PF_NETLINK
-
-    
-    # aliases for PF_*
-    enum :
-        AF_UNSPEC
-        AF_LOCAL
-        AF_UNIX
-        AF_FILE
-        AF_INET
-        AF_INET6
-        AF_NETLINK
-        AF_ROUTE
-    
-    # base sockaddr stuff
-    ctypedef uint16_t sa_family_t
-
-    struct sockaddr :
-        sa_family_t     sa_family
-
-    struct sockaddr_storage :
-        sa_family_t     ss_family
-
-    # flag values
-    enum :
-        MSG_OOB
-        MSG_PEEK
-        MSG_DONTROUTE
-        MSG_CTRUNC
-        MSG_PROXY
-        MSG_TRUNC
-        MSG_DONTWAIT
-        MSG_EOR
-        MSG_WAITALL
-        MSG_FIN
-        MSG_SYN
-        MSG_CONFIRM
-        MSG_RST
-        MSG_ERRQUEUE
-        MSG_NOSIGNAL
-        MSG_MORE
-        MSG_CMSG_CLOEXEC
-    
-    ## send/recv-msg
-    struct msghdr :
-        void *msg_name              # sockaddr
-        socklen_t msg_namelen
-
-        iovec *msg_iov              # message data
-        size_t msg_iovlen
-
-        void *msg_control           # aux data
-        size_t msg_controllen
-
-        int msg_flags               # flags
-
-    struct cmsghdr :
-        size_t cmsg_len             # length including this cmsghdr struct
-
-        int cmsg_level              # originating protocol (IPPROTO_* ???)
-        int cmsg_type               # protocol-specific type
-
-    ## socket-level cmsghdr types
-    enum :
-        SCM_RIGHTS
-        SCM_CREDENTIALS
-
-    #- ucred
-
-    # SO_LINGER parameters
-    struct linger :
-        int l_onoff
-        int l_linger
-
-
-    ## API
-    int socket (int domain, int socktype, int protocol)
-    int bind (int fd, sockaddr *addr, socklen_t len)
-    int connect (int fd, sockaddr *addr, socklen_t len)
-    int listen (int fd, int n)
-    int accept (int fd, sockaddr *addr, socklen_t *len)
-    int shutdown (int fd, int how)
-
-    int getsockname (int fd, sockaddr *addr, socklen_t *len)
-    int getpeername (int fd, sockaddr *addr, socklen_t *len)
-
-    ssize_t send (int fd, void *buf, size_t n, int flags)
-    ssize_t recv (int fd, void *buf, size_t n, int flags)
-    ssize_t sendto (int fd, void *buf, size_t n, int flags, sockaddr *addr, socklen_t addr_len)
-    ssize_t recvfrom (int fd, void *buf, size_t n, int flags, sockaddr *addr, socklen_t addr_len)
-    ssize_t sendmsg (int fd, msghdr *msg, int flags)
-    ssize_t recvmsg (int fd, msghdr *msg, int flags)
-
-    int getsockopt (int fd, int level, int optname, void *optval, socklen_t optlen)
-    int setsockopt (int fd, int level, int optname, void *optval, socklen_t optlen)
-
-    enum :
-        SHUT_RD
-        SHUT_WR
-        SHUT_RDWR
-
-cdef extern from "netinet/in.h" :
-    ## socket protocol types
-    enum :
-        IPPROTO_IP
-        IPPROTO_ICMP
-        IPPROTO_IGMP
-        IPPROTO_TCP
-        IPPROTO_UDP
-        IPPROTO_IPV6
-        IPPROTO_ICMPV6
-        IPPROTO_SCTP
-        IPPROTO_RAW
-
-    
-    ## ports
-    ctypedef uint16_t in_port_t
-
-    ## AF_INET
-    ctypedef uint32_t in_addr_t
-    struct in_addr :
-        in_addr_t s_addr
-    
-    # XXX: should these be in another cdef?
-    in_addr_t INADDR_ANY
-
-    ## AF_INET6
-    struct in6_addr :
-        # XXX: check POSIX...
-        uint8_t s6_addr[16]
-        uint16_t s6_addr16[8]
-        uint32_t s6_addr32[4]
-
-    # common in6_addr's
-    in6_addr in6addr_any
-    in6_addr in6addr_loopback
-
-    ## constants
-    enum :
-        INET_ADDRSTRLEN
-        INET6_ADDRSTRLEN
-
-    ## sockaddrs
-    struct sockaddr_in :
-        sa_family_t     sin_family
-        in_port_t       sin_port
-        in_addr         sin_addr
-
-    struct sockaddr_in6 :
-        sa_family_t     sin6_family
-        in_port_t       sin6_port
-        uint32_t        sin6_flowinfo
-        in6_addr        sin6_addr
-        uint32_t        sin6_scope_id
-
-    uint16_t htons(uint16_t)
-    uint32_t htonl(uint32_t)
-    uint16_t ntohs(uint16_t)
-    uint32_t ntohl(uint32_t)
-
-cdef extern from "netdb.h" :
-    ## getaddrinfo
-    struct addrinfo :
-        int         ai_flags
-        int         ai_family
-        int         ai_socktype
-        int         ai_protocol
-        int         ai_addrlen
-        sockaddr   *ai_addr
-        char       *ai_canonname
-        addrinfo   *ai_next
-    
-    enum :
-        AI_PASSIVE
-        AI_CANONNAME
-        AI_NUMERICHOST
-        AI_V4MAPPED
-        AI_ALL
-        AI_ADDRCONFIG
-        # AI_*IDN*
-        AI_NUMERICSERV
-
-    int c_getaddrinfo "getaddrinfo" (
-            char *node, char *service, 
-            addrinfo *hints, addrinfo **res
-    )
-
-    void c_freeaddrinfo "freeaddrinfo" (addrinfo *res)
-
-    ## getnameinfo
-    int c_getnameinfo "getnameinfo" (
-            sockaddr *sa, socklen_t salen, 
-            char *host, size_t hostlen, 
-            char *serv, size_t servlen, 
-            int flags
-    )
-
-    enum :
-        NI_NOFQDN
-        NI_NUMERICHOST
-        NI_NAMEREQD
-        NI_NUMERICSERV
-        NI_DGRAM
-
-        NI_MAXHOST
-        NI_MAXSERV
-
-    char* gai_strerror (int err)
-
-# python-friendly wrapper around inet_ntop
-cdef object inet_ntop (int af, void *sockaddr)
-cdef object inet_pton (int af, char *addr, void *sockaddr_out)
-
-# sockaddr, flags -> (host, service)
-cdef object getnameinfo (sockaddr *sa, socklen_t salen, int flags)
-
-## general errno-based errors
-#cdef class Errno (py.OSError) :
-#    """
-#        Some libc function returned an error code:
-#
-#            func        - the name of the function called
-#            err         - the system error code
-#            strerror    - human-readable error code -> message
-#    """
-#
-#    cdef readonly char *func
-#    cdef readonly int err
-#    cdef readonly object strerror
-#
-#cdef class GAIError (py.OSError) :
-#    """
-#        Some libc GAI function returnd an error code:
-#
-#            func        - the name of the function called
-#            err         - the GAI_* error code
-#            strerror    - human-readable error code -> message
-#    """
-#
-#    cdef readonly char *func
-#    cdef readonly int err
-#    cdef readonly object strerror
-#