diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-06-20 00:01:49 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-06-20 00:01:49 +0000 |
commit | 13ecf921b8e21c1ce98c6da8a5852ba13acfb280 (patch) | |
tree | f0d1666f8f386127bb745ecab6c497806fa5d460 /pym | |
parent | f1b6fede42435d2c53db5af3d10cdbc1f2853fb1 (diff) | |
download | portage-13ecf921b8e21c1ce98c6da8a5852ba13acfb280.tar.gz portage-13ecf921b8e21c1ce98c6da8a5852ba13acfb280.tar.bz2 portage-13ecf921b8e21c1ce98c6da8a5852ba13acfb280.zip |
For bug #180165, make portageq print a "Permission denied" error when appropriate. A PermissionDenied exception is raised from portage.listdir() enven when EmptyOnError is True since errno.EACCES is very likely to indicate a condition that should be reported in any case.
svn path=/main/trunk/; revision=6881
Diffstat (limited to 'pym')
-rw-r--r-- | pym/portage/__init__.py | 11 | ||||
-rw-r--r-- | pym/portage/exception.py | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 31f2f091c..f5a4893c1 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -185,7 +185,14 @@ def cacheddir(my_original_path, ignorecvs, ignorelist, EmptyOnError, followSymli mtime = pathstat[stat.ST_MTIME] else: raise portage.exception.DirectoryNotFound(mypath) - except (IOError,OSError,portage.exception.PortageException): + except EnvironmentError, e: + if e.errno == portage.exception.PermissionDenied.errno: + raise portage.exception.PermissionDenied(mypath) + del e + if EmptyOnError: + return [], [] + return None, None + except portage.exception.PortageException: if EmptyOnError: return [], [] return None, None @@ -199,8 +206,6 @@ def cacheddir(my_original_path, ignorecvs, ignorelist, EmptyOnError, followSymli if e.errno != errno.EACCES: raise del e - if EmptyOnError: - return [], [] raise portage.exception.PermissionDenied(mypath) ftype = [] for x in list: diff --git a/pym/portage/exception.py b/pym/portage/exception.py index 4be72cf96..3d590a563 100644 --- a/pym/portage/exception.py +++ b/pym/portage/exception.py @@ -53,6 +53,7 @@ class OperationNotPermitted(PortageException): """An operation was not permitted operating system""" class PermissionDenied(PortageException): + from errno import EACCES as errno """Permission denied""" class ReadOnlyFileSystem(PortageException): |