diff options
author | Zac Medico <zmedico@gentoo.org> | 2006-07-09 20:18:59 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2006-07-09 20:18:59 +0000 |
commit | 5cd6e36273f2d5674aa47970eb1207de3ac3bc4a (patch) | |
tree | 9e60f5321a86d496b9102d0a93650507bb7a75b3 | |
parent | 31cd6692727c6020793346e9579299355e56d268 (diff) | |
download | portage-5cd6e36273f2d5674aa47970eb1207de3ac3bc4a.tar.gz portage-5cd6e36273f2d5674aa47970eb1207de3ac3bc4a.tar.bz2 portage-5cd6e36273f2d5674aa47970eb1207de3ac3bc4a.zip |
Wrap common write_atomic exceptions for easier error handling.
svn path=/main/trunk/; revision=3822
-rw-r--r-- | pym/portage_util.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py index a8f396c51..79babe05c 100644 --- a/pym/portage_util.py +++ b/pym/portage_util.py @@ -707,13 +707,25 @@ class atomic_ofstream(file): base_destructor() def write_atomic(file_path, content): - f = atomic_ofstream(file_path) + f = None try: + f = atomic_ofstream(file_path) f.write(content) f.close() - except IOError, ioe: - f.abort() - raise ioe + except (IOError, OSError), e: + if f: + f.abort() + func_call = "write_atomic('%s')" % file_path + if e.errno == errno.EPERM: + raise OperationNotPermitted(func_call) + elif e.errno == errno.EACCES: + raise PermissionDenied(func_call) + elif e.errno == errno.EROFS: + raise ReadOnlyFileSystem(func_call) + elif e.errno == errno.ENOENT: + raise FileNotFound(file_path) + else: + raise def ensure_dirs(dir_path, *args, **kwargs): """Create a directory and call apply_permissions. |