X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/mLib-python/blobdiff_plain/5b1830f325c55c70d65fd020f08dd958493e528d..addc0c3760b565ead630bd67cc038b31954b9284:/fdutils.pyx diff --git a/fdutils.pyx b/fdutils.pyx index 8e5d94a..55c8ca1 100644 --- a/fdutils.pyx +++ b/fdutils.pyx @@ -26,6 +26,17 @@ def fdflags(file, unsigned fbic = 0, unsigned fxor = 0, unsigned fdbic = 0, unsigned fdxor = 0): + """ + fdflags(FILE, [fbic = 0], [fxor = 0], [fdbic = 0], [fdxor = 0]) + + Set fcntl(2) file and descriptor flags. If these are FL and FD, then + update: + + * FL = (FL & ~FBIC) ^ FXOR + * FD = (FD & ~FDBIC) ^ FDXOR + + FILE may be integer file descriptor or an object with `fileno' method. + """ cdef int rc rc = _fdflags(_getfd(fd), fbix, fxor, fdbic, fdxor) if rc < 0: @@ -33,19 +44,27 @@ def fdflags(file, return rc def fdsend(sock, file, buffer): + """ + fdsend(SOCK, FILE, BUFFER) -> RC: + send FILE over Unix-domain socket SOCK, along with BUFFER + """ cdef void *p - cdef int len + cdef Py_ssize_t len cdef int rc - PyObject_AsReadBuffer(buffer, &p, &len) + 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): + """ + fdrecv(SOCK, SIZE) -> FD, BUFFER + receive file FD and BUFFER of length up to SIZE from Unix-domain SOCK + """ cdef void *p cdef buf - cdef int len + cdef Py_ssize_t len cdef PyObject *obj cdef int fd buf = PyString_FromStringAndSize(NULL, size)