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)
+ rc = _fdflags(_getfd(file), fbic, fxor, fdbic, fdxor)
if rc < 0:
_oserror()
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, <cvp *>&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)