--- 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
-#