proposal: add setresuid() system call to python

Hrvoje Niksic hniksic at xemacs.org
Tue Aug 25 09:03:12 EDT 2009


travis+ml-python at subspacefield.org writes:

> 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 should use ctypes.get_errno() instead of os.errno; sorry about that.

Also, when raising OSError, you should set the 'errno' attribute to the
appropriate code.



More information about the Python-list mailing list