aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage_file.py')
-rw-r--r--pym/portage_file.py62
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)
+
+
+
+
+
+
+
+
+
+