### 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 ----------------------------------------------------------
+###--------------------------------------------------------------------------
+### 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 ---------------------------------------------------------
+###--------------------------------------------------------------------------
+### Atom stuff.
## Atoms.
##
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 (*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:
void *arg)
void pkbuf_destroy(pkbuf *b)
-###----- Select stuff -------------------------------------------------------
+###--------------------------------------------------------------------------
+### Select stuff.
## Basics.
cdef extern from 'mLib/sel.h':
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,
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 --------------------------------------------------