summaryrefslogtreecommitdiff
path: root/fs/errors.py
diff options
context:
space:
mode:
authorrfkelly0 <rfkelly0@67cdc799-7952-0410-af00-57a81ceafa0f>2009-09-03 04:22:58 +0000
committerrfkelly0 <rfkelly0@67cdc799-7952-0410-af00-57a81ceafa0f>2009-09-03 04:22:58 +0000
commitc3bfd38686dd1ac9a0a44fdb2fa7aa30800e21b5 (patch)
tree333bb41cb6fdab19c1a79deee8a218e61a3c2dd4 /fs/errors.py
parent0f0fde5c3dc27972314d274927946c6635e1d66c (diff)
downloadpyfilesystem-c3bfd38686dd1ac9a0a44fdb2fa7aa30800e21b5.tar.gz
report correct line numbers in various error decorators
git-svn-id: http://pyfilesystem.googlecode.com/svn/trunk@243 67cdc799-7952-0410-af00-57a81ceafa0f
Diffstat (limited to 'fs/errors.py')
-rw-r--r--fs/errors.py25
1 files changed, 13 insertions, 12 deletions
diff --git a/fs/errors.py b/fs/errors.py
index b96674a..a96b985 100644
--- a/fs/errors.py
+++ b/fs/errors.py
@@ -159,36 +159,37 @@ def convert_os_errors(func):
try:
return func(self,*args,**kwds)
except (OSError,IOError), e:
+ (exc_type,exc_inst,tb) = sys.exc_info()
path = getattr(e,"filename",None)
if path and path[0] == "/" and hasattr(self,"root_path"):
path = normpath(path)
if isprefix(self.root_path,path):
path = path[len(self.root_path):]
if not hasattr(e,"errno") or not e.errno:
- raise OperationFailedError(opname,details=e)
+ raise OperationFailedError(opname,details=e),None,tb
if e.errno == errno.ENOENT:
- raise ResourceNotFoundError(path,opname=opname,details=e)
+ raise ResourceNotFoundError(path,opname=opname,details=e),None,tb
if e.errno == errno.ENOTEMPTY:
- raise DirectoryNotEmptyError(path,opname=opname,details=e)
+ raise DirectoryNotEmptyError(path,opname=opname,details=e),None,tb
if e.errno == errno.EEXIST:
- raise DestinationExistsError(path,opname=opname,details=e)
+ raise DestinationExistsError(path,opname=opname,details=e),None,tb
if e.errno == 183: # some sort of win32 equivalent to EEXIST
- raise DestinationExistsError(path,opname=opname,details=e)
+ raise DestinationExistsError(path,opname=opname,details=e),None,tb
if e.errno == errno.ENOTDIR:
- raise ResourceInvalidError(path,opname=opname,details=e)
+ raise ResourceInvalidError(path,opname=opname,details=e),None,tb
if e.errno == errno.EISDIR:
- raise ResourceInvalidError(path,opname=opname,details=e)
+ raise ResourceInvalidError(path,opname=opname,details=e),None,tb
if e.errno == errno.EINVAL:
- raise ResourceInvalidError(path,opname=opname,details=e)
+ raise ResourceInvalidError(path,opname=opname,details=e),None,tb
if e.errno == errno.EOPNOTSUPP:
- raise UnsupportedError(opname,details=e)
+ raise UnsupportedError(opname,details=e),None,tb
if e.errno == errno.ENOSPC:
- raise StorageSpaceError(opname,details=e)
+ raise StorageSpaceError(opname,details=e),None,tb
# Sometimes windows gives some random errors...
if sys.platform == "win32":
if e.errno in (13,):
- raise ResourceInvalidError(path,opname=opname,details=e)
- raise OperationFailedError(opname,details=e)
+ raise ResourceInvalidError(path,opname=opname,details=e),None,tb
+ raise OperationFailedError(opname,details=e),None,tb
return wrapper