X-Git-Url: https://git.distorted.org.uk/~mdw/mLib-python/blobdiff_plain/b170d65aecec439b1ca2dd52f60f47f547d365e3..ae68e889be24648e94d936e1aea614d2d1a0e7a8:/fdutils.pyx diff --git a/fdutils.pyx b/fdutils.pyx new file mode 100644 index 0000000..7923d44 --- /dev/null +++ b/fdutils.pyx @@ -0,0 +1,62 @@ +# -*-pyrex-*- +# +# $Id$ +# +# Messing with file descriptors +# +# (c) 2007 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. + +def fdflags(file, + unsigned fbic = 0, unsigned fxor = 0, + unsigned fdbic = 0, unsigned fdxor = 0): + cdef int rc + rc = _fdflags(_getfd(fd), fbix, fxor, fdbic, fdxor) + if rc < 0: + _oserror() + return rc + +def fdsend(sock, file, buffer): + cdef void *p + cdef int len + cdef int rc + PyObject_AsReadBuffer(buffer, &p, &len) + rc = fdpass_send(_getfd(sock), _getfd(file), p, len) + if rc < 0: + _oserror() + return rc + +def fdrecv(sock, unsigned size): + cdef void *p + cdef buf + cdef int len + cdef PyObject *obj + cdef int fd + buf = PyString_FromStringAndSize(NULL, len) + p = PyString_AS_STRING(buf) + len = fdpass_recv(_getfd(sock), &fd, p, size) + if len < 0: + _oserror() + obj = buf + _PyString_Resize(&obj, len) + return fd, obj + +#----- That's all, folks ----------------------------------------------------