X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib-python/blobdiff_plain/6a6bd8fac21d06b426006a5e92f6e2696590a435..e59e053aed9c90b85e177b5b0ef2e1f66643a1ca:/defs.pxi diff --git a/defs.pxi b/defs.pxi index 69f4adb..a09130c 100644 --- a/defs.pxi +++ b/defs.pxi @@ -15,12 +15,12 @@ # 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,37 @@ 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) + +#----- Daemon utilities ----------------------------------------------------- + +cdef extern from 'mLib/daemonize.h': + int _daemonize "daemonize"() + void _detachtty "detachtty"() + #----- Internal utilities --------------------------------------------------- cdef extern from 'grim.h':