From: Zac Medico Date: Sun, 16 Sep 2007 22:01:25 +0000 (-0000) Subject: Use ensure_dirs() and apply_permissions() to avoid redundant chown/chmod calls. This... X-Git-Tag: v2.2_pre1~796 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=9e4c01ed7e6b3db97d43ba10fc460e241278b197;p=portage.git Use ensure_dirs() and apply_permissions() to avoid redundant chown/chmod calls. This helps avoid 'Permission denied' errors during elog_process() when the ebuild command is run by normal user (issue reported by graaff). svn path=/main/trunk/; revision=7789 --- diff --git a/pym/portage/elog/mod_save.py b/pym/portage/elog/mod_save.py index 31c410fac..35c433828 100644 --- a/pym/portage/elog/mod_save.py +++ b/pym/portage/elog/mod_save.py @@ -5,6 +5,7 @@ import os, time from portage.data import portage_uid, portage_gid +from portage.util import ensure_dirs def process(mysettings, key, logentries, fulltext): path = key.replace("/", ":") @@ -13,10 +14,7 @@ def process(mysettings, key, logentries, fulltext): elogdir = os.path.join(mysettings["PORT_LOGDIR"], "elog") else: elogdir = os.path.join(os.sep, "var", "log", "portage", "elog") - if not os.path.exists(elogdir): - os.makedirs(elogdir) - os.chown(elogdir, portage_uid, portage_gid) - os.chmod(elogdir, 02770) + ensure_dirs(elogdir, uid=portage_uid, gid=portage_gid, mode=02770) elogfilename = elogdir+"/"+path+":"+time.strftime("%Y%m%d-%H%M%S", time.gmtime(time.time()))+".log" elogfile = open(elogfilename, "w") diff --git a/pym/portage/elog/mod_save_summary.py b/pym/portage/elog/mod_save_summary.py index 25f8ae77a..ee40731df 100644 --- a/pym/portage/elog/mod_save_summary.py +++ b/pym/portage/elog/mod_save_summary.py @@ -5,20 +5,19 @@ import os, time from portage.data import portage_uid, portage_gid +from portage.util import ensure_dirs, apply_permissions def process(mysettings, key, logentries, fulltext): if mysettings["PORT_LOGDIR"] != "": elogdir = os.path.join(mysettings["PORT_LOGDIR"], "elog") else: elogdir = os.path.join(os.sep, "var", "log", "portage", "elog") - if not os.path.exists(elogdir): - os.makedirs(elogdir) - os.chown(elogdir, portage_uid, portage_gid) - os.chmod(elogdir, 02770) + ensure_dirs(elogdir, uid=portage_uid, gid=portage_gid, mode=02770) # TODO: Locking elogfilename = elogdir+"/summary.log" elogfile = open(elogfilename, "a") + apply_permissions(elogfilename, mode=060, mask=0) elogfile.write(">>> Messages generated by process %d on %s for package %s:\n\n" % \ (os.getpid(), time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time())), key)) elogfile.write(fulltext)