libc.pxd
author Tero Marttila <terom@fixme.fi>
Sun, 16 Aug 2009 03:39:52 +0300
changeset 3 bbad9790b786
parent 2 inc/libc.pxd@171e77f8d675
child 4 664a1dfe08ac
permissions -rw-r--r--
fix .pxd names to package.module.pxd
0
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Libc stuff
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
cdef extern from "stdint.h":
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
    # yes, these are "wrong"
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
    ctypedef unsigned char uint8_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
    ctypedef unsigned short uint16_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
    ctypedef unsigned int uint32_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
    ctypedef signed char int8_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    ctypedef signed short int16_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
    ctypedef signed int int32_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
# <linux/types.h>
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
cdef extern from "linux/types.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    ctypedef uint8_t __u8
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    ctypedef uint16_t __u16
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    ctypedef uint32_t __u32
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    ctypedef int8_t __s8
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
    ctypedef int16_t __s16
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    ctypedef int32_t __s32
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
2
171e77f8d675 re-implement sctp_bindx using new sock_addr
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    25
cdef extern from "string.h" :
171e77f8d675 re-implement sctp_bindx using new sock_addr
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    26
    void* memcpy (void *dest, void *src, size_t n)
171e77f8d675 re-implement sctp_bindx using new sock_addr
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    27
0
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
cdef extern from "alloca.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
    void* alloca (size_t size)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
# <sys/socket.h>
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
cdef extern from "sys/socket.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
        SOCK_STREAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
        SOCK_DGRAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
        SOCK_SEQPACKET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        PF_UNSPEC
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
        PF_LOCAL
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
        PF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
        PF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
    # these are #defines
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
        PF_UNIX
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
        AF_UNSPEC
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
        AF_LOCAL
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
        AF_UNIX
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
        AF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
        AF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
    ctypedef uint16_t sa_family_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
    ctypedef uint16_t in_port_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
    ctypedef uint32_t in_addr_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
    ## AF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
    struct in_addr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
        in_addr_t s_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
    struct sockaddr_in :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
        sa_family_t     sin_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
        in_port_t       sin_port
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
        in_addr         sin_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
    # XXX: should these be in another cdef?
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
    in_addr_t INADDR_ANY
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
    ## AF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
    struct in6_addr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
        pass
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
    struct sockaddr_in6 :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
        sa_family_t     sin6_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
        in_port_t       sin6_port
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
        uint32_t        sin6_flowinfo
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
        in6_addr        sin6_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
        uint32_t        sin6_scope_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
    # common in6_addr's
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
    in6_addr in6addr_any
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
    in6_addr in6addr_loopback
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
    ## actually from bits/socket.h...
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    struct sockaddr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
        sa_family_t     sa_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
    struct sockaddr_storage :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
        sa_family_t     ss_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
cdef extern from "arpa/inet.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
    uint16_t htons(uint16_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
    uint32_t htonl(uint32_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
    uint16_t ntohs(uint16_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
    uint32_t ntohl(uint32_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
    # XXX: correct?!
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
    ctypedef size_t socklen_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
    ## constants
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
        INET_ADDRSTRLEN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
        INET6_ADDRSTRLEN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
    char* c_inet_ntop "inet_ntop" (int af, void *sockaddr, char *buf, socklen_t len)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
    int c_inet_pton "inet_pton" (int af, char *src, void *dst)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
cdef extern from "netdb.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
    int c_getnameinfo "getnameinfo" (
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
            sockaddr *sa, socklen_t salen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
            char *host, size_t hostlen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
            char *serv, size_t servlen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
            int flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
    )
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
        NI_NOFQDN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
        NI_NUMERICHOST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
        NI_NAMEREQD
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
        NI_NUMERICSERV
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
        NI_DGRAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
        NI_MAXHOST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
        NI_MAXSERV
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
    char* gai_strerror (int err)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
# python-friendly wrapper around inet_ntop
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
cdef object inet_ntop (int af, void *sockaddr)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
cdef object inet_pton (int af, char *addr, void *sockaddr_out)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
# sockaddr, flags -> (host, service)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
cdef object getnameinfo (sockaddr *sa, socklen_t salen, int flags)