On Aug 21, 1:50 pm, travis+ml-pyt...@subspacefield.org wrote: > On Mon, Jul 20, 2009 at 04:10:35PM +0200, Hrvoje Niksic wrote: > > To emulate the os-module-type calls, it's better to raise exceptions > > than return negative values: > > > > def setresuid(ruid, euid, suid): > > > return _setresuid(__uid_t(ruid), __uid_t(euid), __uid_t(suid)) > > > def setresuid(ruid, euid, suid): > > res = _setresuid(__uid_t(ruid), __uid_t(euid), __uid_t(suid)) > > if res < 0: > > raise OSError('[Errno %d] %s' % (os.errno, > > errno.strerror(os.errno))) > > I am working on a module to implement all of this, but that raise command > won't work in Python 2.6.1; it turns out that os.errno is a module, not > an integer. Does anyone know how to do what I want (that is, how to access > the errno set in C functions)?
You are using ctypes, I presume? Try replacing raise OSError with this: ctypes.pythonapi.PyErr_SetFromErrno(ctypes.py_object(OSError)) Not entirely sure it'll work with Python built with a static library, but I think it will. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list