-# -*-pyrex-*-
-#
-# $Id$
-#
-# Basic definitions, used all over
-#
-# (c) 2005 Straylight/Edgeware
-#
-
-#----- Licensing notice -----------------------------------------------------
-#
-# This file is part of the Python interface to mLib.
-#
-# mLib/Python is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# mLib/Python is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with mLib/Python; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-#----- C library ------------------------------------------------------------
+### -*-pyrex-*-
+###
+### Basic definitions, used all over
+###
+### (c) 2005 Straylight/Edgeware
+###
+
+###----- Licensing notice ---------------------------------------------------
+###
+### This file is part of the Python interface to mLib.
+###
+### mLib/Python is free software; you can redistribute it and/or modify
+### it under the terms of the GNU General Public License as published by
+### the Free Software Foundation; either version 2 of the License, or
+### (at your option) any later version.
+###
+### mLib/Python is distributed in the hope that it will be useful,
+### but WITHOUT ANY WARRANTY; without even the implied warranty of
+### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+### GNU General Public License for more details.
+###
+### You should have received a copy of the GNU General Public License
+### along with mLib/Python; if not, write to the Free Software Foundation,
+### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+###--------------------------------------------------------------------------
+### C library.
cdef extern from 'errno.h':
int errno
char *strerror(int err)
size_t strlen(char *p)
-#----- Unix interface -------------------------------------------------------
+###--------------------------------------------------------------------------
+### Unix interface.
cdef extern from 'sys/types.h':
pass
int tv_usec
cdef extern from 'sys/socket.h':
+ ctypedef int socklen_t
struct sockaddr:
int sa_family
enum:
char *h_addr
int h_errno
-#----- Python ---------------------------------------------------------------
+###--------------------------------------------------------------------------
+### Python.
cdef extern from 'Python.h':
ctypedef struct PyTypeObject:
pass
- object PyString_FromStringAndSize(char *p, int len)
- int PyString_AsStringAndSize(obj, char **p, int *len) except -1
- int PyObject_AsReadBuffer(obj, void **buf, int *len) except -1
- int PyObject_TypeCheck(obj, ty)
+ object PyString_FromStringAndSize(char *p, Py_ssize_t len)
+ int PyString_AsStringAndSize(obj, char **p, Py_ssize_t *len) except -1
+ int PyObject_AsReadBuffer(obj, void **buf, Py_ssize_t *len) except -1
object PyInt_FromLong(long i)
object PyLong_FromUnsignedLong(unsigned long i)
char *PyString_AS_STRING(string)
void Py_INCREF(PyObject *obj)
void Py_DECREF(PyObject *obj)
-#----- mLib basic stuff -----------------------------------------------------
+###--------------------------------------------------------------------------
+### mLib basic stuff.
cdef extern from 'mLib/alloc.h':
char *xstrdup(char *p)
void DCREATE(dstr *d)
void dstr_destroy(dstr *d)
-#----- CRC32 ----------------------------------------------------------------
+###--------------------------------------------------------------------------
+### CRC32.
cdef extern from 'mLib/crc32.h':
uint32 c_crc32 "crc32" (uint32 a, void *p, int sz)
-#----- Universal hashing ----------------------------------------------------
+###--------------------------------------------------------------------------
+### Universal hashing.
cdef extern from 'mLib/unihash.h':
ctypedef struct unihash_info:
uint32 unihash_hash(unihash_info *i, uint32 a, void *p, int sz)
unihash_info unihash_global
-#----- Symbol tables --------------------------------------------------------
+###--------------------------------------------------------------------------
+### Symbol tables.
cdef extern from 'mLib/sym.h':
ctypedef struct sym_table:
void sym_mkiter(sym_iter *i, sym_table *t)
void *sym_next(sym_iter *i)
-#----- String utilities -----------------------------------------------------
+###--------------------------------------------------------------------------
+### String utilities.
cdef extern from 'mLib/str.h':
enum:
cdef extern from 'mLib/versioncmp.h':
int _versioncmp "versioncmp"(char *va, char *vb)
-#----- Form-urlencoding functions -------------------------------------------
+###--------------------------------------------------------------------------
+### Form-urlencoding functions.
cdef extern from 'mLib/url.h':
struct url_ectx:
void url_initdec(url_dctx *ctx, char *p)
int url_dec(url_dctx *ctx, dstr *n, dstr *v)
-#----- Atom stuff -----------------------------------------------------------
-
-# --- Atoms ---
-#
-# Partly written in `real' C.
+###--------------------------------------------------------------------------
+### Atom stuff.
+## Atoms.
+##
+## Partly written in `real' C.
cdef extern from 'atom.h':
ctypedef struct atom:
pass
atom *ATOM_A(obj)
PyTypeObject atom_pytype
-# --- Association tables ---
-
+## Association tables.
cdef extern from 'mLib/assoc.h':
ctypedef struct assoc_table:
pass
void assoc_mkiter(assoc_iter *i, assoc_table *t)
void *assoc_next(assoc_iter *i)
-#----- Double-ended arrays --------------------------------------------------
+###--------------------------------------------------------------------------
+### Double-ended arrays.
cdef extern from 'array.h':
void da_pysetup()
PyTypeObject da_pytype
PyTypeObject daiter_pytype
-#----- Line buffer ----------------------------------------------------------
+###--------------------------------------------------------------------------
+### Line buffer.
cdef extern from 'mLib/lbuf.h':
cdef struct lbuf:
void lbuf_enable(lbuf *b)
void lbuf_disable(lbuf *b)
void lbuf_init(lbuf *b,
- void (*func)(char *s, size_t len, void *arg), void *arg)
+ void (*func)(char *s, size_t len, void *arg), void *arg)
void lbuf_destroy(lbuf *b)
-#----- Packet buffer --------------------------------------------------------
+###--------------------------------------------------------------------------
+### Packet buffer.
cdef extern from 'mLib/pkbuf.h':
ctypedef struct pkbuf:
size_t pkbuf_free(pkbuf *pk, unsigned char **p)
void pkbuf_want(pkbuf *pk, size_t sz)
void pkbuf_init(pkbuf *b,
- void (*func)(unsigned char *s, size_t len,
- pkbuf *pk, size_t *keep, void *arg),
- void *arg)
+ void (*func)(unsigned char *s, size_t len,
+ pkbuf *pk, size_t *keep, void *arg),
+ void *arg)
void pkbuf_destroy(pkbuf *b)
-#----- Select stuff ---------------------------------------------------------
-
-# --- Basics ---
+###--------------------------------------------------------------------------
+### Select stuff.
+## Basics.
cdef extern from 'mLib/sel.h':
ctypedef struct sel_state:
pass
_SEL_EXC "SEL_EXC"
void sel_init(sel_state *s)
void sel_initfile(sel_state *s, sel_file *f, int fd, unsigned mode,
- void (*func)(int fd, unsigned mode, void *arg),
- void *arg)
+ void (*func)(int fd, unsigned mode, void *arg),
+ void *arg)
void sel_force(sel_file *f)
void sel_addfile(sel_file *f)
void sel_rmfile(sel_file *f)
void sel_addtimer(sel_state *s, sel_timer *t, timeval *tv,
- void (*func)(timeval *tv, void *arg),
- void *arg)
+ void (*func)(timeval *tv, void *arg),
+ void *arg)
void sel_rmtimer(sel_timer *t)
int sel_select(sel_state *s) except *
-# --- Non-blocking connection ---
-
+### Non-blocking connection.
cdef extern from 'mLib/conn.h':
ctypedef struct conn:
pass
int conn_fd(conn *c, sel_state *s, int fd,
- void (*func)(int fd, void *arg), void *arg)
+ void (*func)(int fd, void *arg), void *arg)
void conn_kill(conn *c)
-# --- Background name resolver ---
-
+## Background name resolver.
cdef extern from 'mLib/bres.h':
ctypedef struct bres_client:
pass
void bres_byname(bres_client *r, char *name,
- void (*func)(hostent *h, void *arg), void *arg)
+ void (*func)(hostent *h, void *arg), void *arg)
void bres_byaddr(bres_client *r, in_addr addr,
- void (*func)(hostent *h, void *arg), void *arg)
+ void (*func)(hostent *h, void *arg), void *arg)
void bres_abort(bres_client *r)
void bres_exec(char *null)
void bres_init(sel_state *s)
-# --- In-band signal handling ---
-
+## In-band signal handling.
cdef extern from 'mLib/sig.h':
ctypedef struct sig:
pass
void sig_remove(sig *s)
void sig_init(sel_state *s)
-# --- Line buffer ---
-
+## Line buffer.
cdef extern from 'mLib/selbuf.h':
ctypedef struct selbuf:
sel_file reader
void selbuf_disable(selbuf *b)
void selbuf_setsize(selbuf *b, size_t sz)
void selbuf_init(selbuf *b, sel_state *s, int fd,
- void (*func)(char *s, size_t len, void *arg), void *arg)
+ void (*func)(char *s, size_t len, void *arg), void *arg)
void selbuf_destroy(selbuf *b)
-# --- Packet buffer ---
-
+## Packet buffer.
cdef extern from 'mLib/selpk.h':
ctypedef struct selpk:
sel_file reader
void selpk_disable(selpk *b)
void selpk_want(selpk *b, size_t sz)
void selpk_init(selpk *b, sel_state *s, int fd,
- void (*func)(unsigned char *p, size_t n,
- pkbuf *pk, size_t *keep, void *arg),
- void *arg)
+ void (*func)(unsigned char *p, size_t n,
+ pkbuf *pk, size_t *keep, void *arg),
+ void *arg)
void selpk_destroy(selpk *b)
-# --- Ident client ---
-
+## Ident client.
cdef extern from 'mLib/ident.h':
ctypedef struct ident_request:
pass
int type
ident_u u
void ident(ident_request *rq, sel_state *s,
- sockaddr_in *local, sockaddr_in *remote,
- void (*func)(ident_reply *r, void *arg),
- void *arg)
+ sockaddr_in *local, sockaddr_in *remote,
+ void (*func)(ident_reply *r, void *arg),
+ void *arg)
void ident_abort(ident_request *rq)
-#----- Error reporting ------------------------------------------------------
+###--------------------------------------------------------------------------
+### Error reporting.
cdef extern from 'mLib/quis.h':
void _ego "ego"(char *prog)
cdef extern from 'mLib/report.h':
void _moan "moan"(char *f, char *msg)
-#----- File comparison ------------------------------------------------------
+###--------------------------------------------------------------------------
+### File comparison.
cdef extern from 'mLib/fwatch.h':
ctypedef struct fwatch:
int fwatch_update(fwatch *f, char *name)
int fwatch_updatefd(fwatch *f, int fd)
-#----- File descriptor hacking ----------------------------------------------
+###--------------------------------------------------------------------------
+### File descriptor hacking.
cdef extern from 'mLib/fdflags.h':
int _fdflags "fdflags"(int fd,
- unsigned fbic, unsigned fxor,
- unsigned fdbic, unsigned fdxor)
+ unsigned fbic, unsigned fxor,
+ unsigned fdbic, unsigned fdxor)
cdef extern from 'mLib/fdpass.h':
int fdpass_send(int sock, int fd, void *p, size_t sz)
int want
int _mdup "mdup"(mdup_fd *v, size_t n)
-#----- Daemon utilities -----------------------------------------------------
+###--------------------------------------------------------------------------
+### Daemon utilities.
cdef extern from 'mLib/daemonize.h':
int _daemonize "daemonize"()
void _detachtty "detachtty"()
-#----- Internal utilities ---------------------------------------------------
+###--------------------------------------------------------------------------
+### Internal utilities.
cdef extern from 'grim.h':
int PSIZEOF(void *x)
+ ctypedef void *cvp
-#----- That's all, folks ----------------------------------------------------
+###----- That's all, folks --------------------------------------------------