X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib-python/blobdiff_plain/ae68e889be24648e94d936e1aea614d2d1a0e7a8..HEAD:/defs.pxi diff --git a/defs.pxi b/defs.pxi index f452b28..b14b855 100644 --- a/defs.pxi +++ b/defs.pxi @@ -1,31 +1,30 @@ -# -*-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 @@ -44,7 +43,8 @@ cdef extern from 'string.h': char *strerror(int err) size_t strlen(char *p) -#----- Unix interface ------------------------------------------------------- +###-------------------------------------------------------------------------- +### Unix interface. cdef extern from 'sys/types.h': pass @@ -54,6 +54,7 @@ cdef extern from 'sys/time.h': int tv_usec cdef extern from 'sys/socket.h': + ctypedef int socklen_t struct sockaddr: int sa_family enum: @@ -84,7 +85,8 @@ cdef extern from 'netdb.h': char *h_addr int h_errno -#----- Python --------------------------------------------------------------- +###-------------------------------------------------------------------------- +### Python. cdef extern from 'Python.h': @@ -93,19 +95,20 @@ 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) int _PyString_Resize(PyObject **string, int size) except -1 + void PyErr_Clear() 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) @@ -122,12 +125,14 @@ cdef extern from 'mLib/dstr.h': 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: @@ -137,7 +142,8 @@ cdef extern from 'mLib/unihash.h': 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: @@ -155,7 +161,8 @@ cdef extern from 'mLib/sym.h': 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: @@ -169,7 +176,8 @@ cdef extern from 'mLib/str.h': 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: @@ -186,12 +194,12 @@ cdef extern from 'mLib/url.h': 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 @@ -208,8 +216,7 @@ cdef extern from 'atom.h': atom *ATOM_A(obj) PyTypeObject atom_pytype -# --- Association tables --- - +## Association tables. cdef extern from 'mLib/assoc.h': ctypedef struct assoc_table: pass @@ -225,14 +232,16 @@ cdef extern from 'mLib/assoc.h': 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: @@ -253,7 +262,8 @@ cdef extern from 'mLib/lbuf.h': 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: @@ -271,10 +281,10 @@ cdef extern from 'mLib/pkbuf.h': void *arg) void pkbuf_destroy(pkbuf *b) -#----- Select stuff --------------------------------------------------------- - -# --- Basics --- +###-------------------------------------------------------------------------- +### Select stuff. +## Basics. cdef extern from 'mLib/sel.h': ctypedef struct sel_state: pass @@ -299,8 +309,7 @@ cdef extern from 'mLib/sel.h': 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 @@ -308,8 +317,7 @@ cdef extern from 'mLib/conn.h': 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 @@ -321,8 +329,7 @@ cdef extern from 'mLib/bres.h': 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 @@ -330,8 +337,7 @@ cdef extern from 'mLib/sig.h': 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 @@ -343,8 +349,7 @@ cdef extern from 'mLib/selbuf.h': 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 @@ -358,8 +363,7 @@ cdef extern from 'mLib/selpk.h': void *arg) void selpk_destroy(selpk *b) -# --- Ident client --- - +## Ident client. cdef extern from 'mLib/ident.h': ctypedef struct ident_request: pass @@ -384,7 +388,8 @@ cdef extern from 'mLib/ident.h': void *arg) void ident_abort(ident_request *rq) -#----- Error reporting ------------------------------------------------------ +###-------------------------------------------------------------------------- +### Error reporting. cdef extern from 'mLib/quis.h': void _ego "ego"(char *prog) @@ -393,7 +398,8 @@ cdef extern from 'mLib/quis.h': 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: @@ -403,7 +409,8 @@ cdef extern from 'mLib/fwatch.h': 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, @@ -414,15 +421,24 @@ cdef extern from 'mLib/fdpass.h': int fdpass_send(int sock, int fd, void *p, size_t sz) int fdpass_recv(int sock, int *fd, void *p, size_t sz) -#----- Daemon utilities ----------------------------------------------------- +cdef extern from 'mLib/mdup.h': + ctypedef struct mdup_fd: + int cur + int want + int _mdup "mdup"(mdup_fd *v, size_t n) + +###-------------------------------------------------------------------------- +### 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 --------------------------------------------------