1812
1811
real_handlers[kind](abspath, relpath)
1814
def copy_ownership(dst, src=None):
1815
"""Copy usr/grp ownership from src file/dir to dst file/dir.
1817
If src is None, the containing directory is used as source. If chown
1818
fails, the error is ignored and a warning is printed.
1820
chown = getattr(os, 'chown', None)
1825
src = os.path.dirname(dst)
1831
chown(dst, s.st_uid, s.st_gid)
1833
trace.warning("Unable to copy ownership from '%s' to '%s': IOError: %s." % (src, dst, e))
1836
def mkdir_with_ownership(path, ownership_src=None):
1837
"""Create the directory 'path' with specified ownership.
1839
If ownership_src is given, copies (chown) usr/grp ownership
1840
from 'ownership_src' to 'path'. If ownership_src is None, use the
1841
containing dir ownership.
1844
copy_ownership(path, ownership_src)
1847
def open_with_ownership(filename, mode='r', bufsize=-1, ownership_src=None):
1848
"""Open the file 'filename' with the specified ownership.
1850
If ownership_src is specified, copy usr/grp ownership from ownership_src
1851
to filename. If ownership_src is None, copy ownership from containing
1853
Returns the opened file object.
1855
f = open(filename, mode, bufsize)
1856
copy_ownership(filename, ownership_src)
1815
1860
def path_prefix_key(path):
1816
1861
"""Generate a prefix-order path key for path.