Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r359:d79455da114a Date: 2012-06-14 23:29 +0200 http://bitbucket.org/cffi/cffi/changeset/d79455da114a/
Log: Add errno on the ffi objects, and document it. diff --git a/cffi/api.py b/cffi/api.py --- a/cffi/api.py +++ b/cffi/api.py @@ -196,6 +196,13 @@ from .verifier import Verifier return Verifier(self).verify(source, **kwargs) + def _get_errno(self): + return self._backend.get_errno() + def _set_errno(self, errno): + self._backend.set_errno(errno) + errno = property(_get_errno, _set_errno, None, + "the value of 'errno' from/to the C calls") + def _make_ffi_library(ffi, libname): name = libname if name is None: diff --git a/doc/source/index.rst b/doc/source/index.rst --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -465,10 +465,21 @@ Note that callbacks of a variadic function type are not supported. +Be careful when writing the Python callback function: if it returns an +object of the wrong type, or more generally raises an exception, then +the exception cannot be propagated. Instead, it is printed to stderr +and the C-level callback is made to return, randomly, a null value. + Miscellaneous ------------- +``errno``: the value of ``errno`` received from the most recent C call +in this thread, and passed to the following C call, is available via +``ffi.dlopen(None).errno`` as a global variable of the C standard +library. It can also be accessed more directly via reads and writes of +``ffi.errno``. + ``ffi.string(pointer, length)``: return a Python string containing all the data at the given location with the given size. The pointer must be a cdata of type ``void *`` or ``char *``. Null characters are not _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit