chiark / gitweb /
*.pyx, defs.pxi, grim.h: Add awful casts to `PyObject_AsReadBuffer'.
[mLib-python] / defs.pxi
index c0b304a9af16d4ab982d0545bf29f6491583f5d5..bfb4dcc52827fff16ce855a513a1694d607c3918 100644 (file)
--- a/defs.pxi
+++ b/defs.pxi
@@ -23,7 +23,8 @@
 ### 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
@@ -42,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
@@ -52,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:
@@ -82,7 +85,8 @@ cdef extern from 'netdb.h':
     char *h_addr
   int h_errno
 
-###----- Python -------------------------------------------------------------
+###--------------------------------------------------------------------------
+### Python.
 
 cdef extern from 'Python.h':
 
@@ -91,9 +95,9 @@ 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
+  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
   int PyObject_TypeCheck(obj, ty)
   object PyInt_FromLong(long i)
   object PyLong_FromUnsignedLong(unsigned long i)
@@ -103,7 +107,8 @@ cdef extern from 'Python.h':
   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)
@@ -120,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:
@@ -135,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:
@@ -153,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:
@@ -167,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:
@@ -184,7 +194,8 @@ 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 ---------------------------------------------------------
+###--------------------------------------------------------------------------
+### Atom stuff.
 
 ## Atoms.
 ##
@@ -221,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:
@@ -249,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:
@@ -267,7 +281,8 @@ cdef extern from 'mLib/pkbuf.h':
                   void *arg)
   void pkbuf_destroy(pkbuf *b)
 
-###----- Select stuff -------------------------------------------------------
+###--------------------------------------------------------------------------
+### Select stuff.
 
 ## Basics.
 cdef extern from 'mLib/sel.h':
@@ -373,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)
@@ -382,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:
@@ -392,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,
@@ -409,15 +427,18 @@ cdef extern from 'mLib/mdup.h':
     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 --------------------------------------------------