View | Details | Raw Unified
Collapse All | Expand All

(-) pym/portage.py (-4 / +26 lines)
 Lines 4234-4245    Link Here 
					if droppriv:
					if droppriv:
						st = os.stat(mydir)
						st = os.stat(mydir)
						if st.st_gid != portage_gid or \
						if st.st_gid != portage_gid or \
							not stat.S_IMODE(st.st_mode) & dirmode:
							not dirmode == (stat.S_IMODE(st.st_mode) & dirmode):
							droppriv_fix = True
							droppriv_fix = True
						if not droppriv_fix:
							# Check permissions of files in the directory.
							for filename in os.listdir(mydir):
								try:
									subdir_st = os.lstat(
										os.path.join(mydir, filename))
								except OSError:
									continue
								if subdir_st.st_gid != portage_gid or \
									((stat.S_ISDIR(subdir_st.st_mode) and \
									not dirmode == (stat.S_IMODE(subdir_st.st_mode) & dirmode)) or \
									(not stat.S_ISDIR(subdir_st.st_mode) and \
									not filemode == (stat.S_IMODE(subdir_st.st_mode) & filemode))):
									droppriv_fix = True
									break
					if droppriv_fix:
						writemsg(colorize("WARN", " * ") + \
							 "Adjusting permissions " + \
							 "for FEATURES=userpriv: '%s'\n" % mydir,
							noiselevel=-1)
					elif modified:
						writemsg(colorize("WARN", " * ") + \
							 "Adjusting permissions " + \
							 "for FEATURES=%s: '%s'\n" % (myfeature, mydir),
							noiselevel=-1)
					if modified or kwargs["always_recurse"] or droppriv_fix:
					if modified or kwargs["always_recurse"] or droppriv_fix:
						if modified:
							writemsg("Adjusting permissions recursively: '%s'\n" % mydir,
								noiselevel=-1)
						def onerror(e):
						def onerror(e):
							raise	# The feature is disabled if a single error
							raise	# The feature is disabled if a single error
									# occurs during permissions adjustment.
									# occurs during permissions adjustment.