diff options
Diffstat (limited to 'pym/portage_file.py')
-rw-r--r-- | pym/portage_file.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/pym/portage_file.py b/pym/portage_file.py new file mode 100644 index 000000000..5cee6458b --- /dev/null +++ b/pym/portage_file.py @@ -0,0 +1,62 @@ +# portage_data.py -- Calculated/Discovered Data Values +# Copyright 1998-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-src/portage/pym/portage_file.py,v 1.3.2.1 2005/01/16 02:35:33 carpaski Exp $ +cvs_id_string="$Id: portage_file.py,v 1.3.2.1 2005/01/16 02:35:33 carpaski Exp $"[5:-2] + +import os +import portage_data +import portage_exception +from portage_localization import _ + +def normpath(mypath): + newpath = os.path.normpath(mypath) + if len(newpath) > 1: + if newpath[:2] == "//": + newpath = newpath[1:] + return newpath + + +def makedirs(path, perms=0755, uid=None, gid=None, must_chown=False): + old_umask = os.umask(0) + if(uid == None): + uid = portage_data.portage_uid + if(gid == None): + gid = portage_data.portage_gid + if not path: + raise portage_exception.InvalidParameter, _("Invalid path: type: '%(type)s' value: '%(path)s'") % {"path": path, "type": type(path)} + if(perm > 1535) or (perm == 0): + raise portage_exception.InvalidParameter, _("Invalid permissions passed. Value is octal and no higher than 02777.") + + mypath = normpath(path) + dirs = string.split(path, "/") + + mypath = "" + if dirs and dirs[0] == "": + mypath = "/" + dirs = dirs[1:] + for x in dirs: + mypath += x+"/" + if not os.path.exists(mypath): + os.mkdir(mypath, perm) + try: + os.chown(mypath, uid, gid) + except SystemExit, e: + raise + except: + if must_chown: + os.umask(old_umask) + raise + portage_util.writemsg(_("Failed to chown: %(path)s to %(uid)s:%(gid)s\n") % {"path":mypath,"uid":uid,"gid":gid}) + + os.umask(old_umask) + + + + + + + + + + |