diff options
Diffstat (limited to 'pym/portage_util.py')
-rw-r--r-- | pym/portage_util.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py index bd8aefeff..ae7525186 100644 --- a/pym/portage_util.py +++ b/pym/portage_util.py @@ -686,3 +686,23 @@ def write_atomic(file_path, content): except IOError, ioe: f.abort() raise ioe + +def ensure_dirs(dir_path, *args, **kwargs): + """Create a directory and call apply_permissions. + Returns True if a directory is created or the permissions needed to be + modified, and False otherwise.""" + + created_dir = False + + try: + os.makedirs(dir_path) + created_dir = True + except OSError, oe: + if errno.EEXIST == oe.errno: + pass + elif oe.errno in (errno.EPERM, errno.EROFS): + raise portage_exception.OperationNotPermitted(str(oe)) + else: + raise + perms_modified = apply_permissions(dir_path, *args, **kwargs) + return created_dir or perms_modified |