chiark / gitweb /
mdup.pyx: New support for mLib's glorious `mdup' function.
[mLib-python] / defs.pxi
index 69f4adb6214184caa14c99016b11da603fc13e7f..2dd50b7eac43d3a9a1a58387bc46309d77ca9453 100644 (file)
--- a/defs.pxi
+++ b/defs.pxi
 # 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.
@@ -88,17 +88,20 @@ cdef extern from 'netdb.h':
 
 cdef extern from 'Python.h':
 
+  ctypedef struct PyObject:
+    pass
+  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 PyInt_FromLong(long i)
   object PyLong_FromUnsignedLong(unsigned long i)
+  char *PyString_AS_STRING(string)
+  int _PyString_Resize(PyObject **string, int size) except -1
 
-  ctypedef struct PyObject:
-    pass
-  ctypedef struct PyTypeObject:
-    pass
   void Py_INCREF(PyObject *obj)
   void Py_DECREF(PyObject *obj)
 
@@ -157,11 +160,32 @@ cdef extern from 'mLib/sym.h':
 cdef extern from 'mLib/str.h':
   enum:
     STRF_QUOTE
+    STRF_PREFIX
   char *str_qword(char **pp, unsigned f)
   size_t str_qsplit(char *p, char **v, size_t c, char **rest, unsigned f)
-  int str_match(char *p, char *s)
+  int str_matchx(char *p, char *s, unsigned f)
   void str_sanitize(char *d, char *p, size_t sz)
 
+cdef extern from 'mLib/versioncmp.h':
+  int _versioncmp "versioncmp"(char *va, char *vb)
+
+#----- Form-urlencoding functions -------------------------------------------
+
+cdef extern from 'mLib/url.h':
+  struct url_ectx:
+    unsigned f
+  struct url_dctx:
+    char *p
+    unsigned f
+  enum:
+    URLF_STRICT
+    URLF_LAX
+    URLF_SEMI
+  void url_initenc(url_ectx *ctx)
+  void url_enc(url_ectx *ctx, dstr *d, char *name, char *value)
+  void url_initdec(url_dctx *ctx, char *p)
+  int url_dec(url_dctx *ctx, dstr *n, dstr *v)
+
 #----- Atom stuff -----------------------------------------------------------
 
 # --- Atoms ---
@@ -226,7 +250,7 @@ cdef extern from 'mLib/lbuf.h':
   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 --------------------------------------------------------
@@ -242,9 +266,9 @@ cdef extern from 'mLib/pkbuf.h':
   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 ---------------------------------------------------------
@@ -264,14 +288,14 @@ cdef extern from 'mLib/sel.h':
     _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 *
 
@@ -281,7 +305,7 @@ 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 ---
@@ -290,9 +314,9 @@ 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)
@@ -316,7 +340,7 @@ cdef extern from 'mLib/selbuf.h':
   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 ---
@@ -329,9 +353,9 @@ cdef extern from 'mLib/selpk.h':
   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 ---
@@ -355,9 +379,9 @@ cdef extern from 'mLib/ident.h':
     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 ------------------------------------------------------
@@ -365,9 +389,43 @@ cdef extern from 'mLib/ident.h':
 cdef extern from 'mLib/quis.h':
   void _ego "ego"(char *prog)
   char *_quis "quis"()
+
 cdef extern from 'mLib/report.h':
   void _moan "moan"(char *f, char *msg)
 
+#----- File comparison ------------------------------------------------------
+
+cdef extern from 'mLib/fwatch.h':
+  ctypedef struct fwatch:
+    pass
+  void fwatch_init(fwatch *f, char *name)
+  void fwatch_initfd(fwatch *f, int fd)
+  int fwatch_update(fwatch *f, char *name)
+  int fwatch_updatefd(fwatch *f, int fd)
+
+#----- File descriptor hacking ----------------------------------------------
+
+cdef extern from 'mLib/fdflags.h':
+  int _fdflags "fdflags"(int fd,
+                        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 fdpass_recv(int sock, int *fd, void *p, size_t sz)
+
+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 ---------------------------------------------------
 
 cdef extern from 'grim.h':