diff options
author | Jason Stubbs <jstubbs@gentoo.org> | 2005-08-28 08:37:44 +0000 |
---|---|---|
committer | Jason Stubbs <jstubbs@gentoo.org> | 2005-08-28 08:37:44 +0000 |
commit | d9fc4acc572c6647a4f27b838d35d27d805d190e (patch) | |
tree | 262a8de35d8c7567312757da5f1f66efdc8cece5 /pym/portage_file.py | |
download | portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.gz portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.bz2 portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.zip |
Migration (without history) of the current stable line to subversion.
svn path=/main/branches/2.0/; revision=1941
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) + + + + + + + + + + |