self.strerror = strerror
def __str__(self):
- return '[Errno {0}] {1}'.format(self.errno, self.strerror)
+ return '{0}: {1} [Errno {2}]'.format(self.strerror, os.strerror(self.errno), self.errno)
class PermissionError(OSError):
pass
+class ObjectNotEmpty(OSError):
+ pass
+
+
IF UNAME_SYSNAME == "FreeBSD":
cdef errno_to_exception = {
errno.EPERM : PermissionError,
errno.EOPNOTSUPP : OperationNotSupported,
errno.ERANGE : OutOfRange,
errno.EWOULDBLOCK: WouldBlock,
+ errno.ENOTEMPTY : ObjectNotEmpty,
}
ELSE:
cdef errno_to_exception = {
errno.EOPNOTSUPP : OperationNotSupported,
errno.ERANGE : OutOfRange,
errno.EWOULDBLOCK: WouldBlock,
+ errno.ENOTEMPTY : ObjectNotEmpty,
}
if ret in errno_to_exception:
return errno_to_exception[ret](ret, msg)
else:
- return Error(ret, msg + (": error code %d" % ret))
+ return Error(msg + ': {} [Errno {:d}]'.format(os.strerror(ret), ret))
class DirEntry(namedtuple('DirEntry',