~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

merged 376388 related changes for 2.0 patch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
51
51
    cache_utf8,
52
52
    errors,
53
53
    win32utils,
 
54
    trace,
54
55
    )
 
56
 
55
57
""")
56
58
 
57
59
# sha and md5 modules are deprecated in python2.6 but hashlib is available as
1771
1773
            real_handlers[kind](abspath, relpath)
1772
1774
 
1773
1775
 
 
1776
def parent_dir(path):
 
1777
    """same as os.path.dirname but returns '.' instead of ''
 
1778
    for paths that just have a filename in it e.g. 'foo'"""
 
1779
    pdir = os.path.dirname(path)
 
1780
    if pdir == '':
 
1781
        pdir = '.'
 
1782
    return pdir
 
1783
 
 
1784
 
 
1785
def copy_ownership(dst, src):
 
1786
    """copy user and group ownership from own_src file/dir to dst file/dir.
 
1787
    If own_src is None, the containing directory is used as source."""
 
1788
    if os.name != 'posix':
 
1789
        return False
 
1790
    try:
 
1791
        s = os.stat(src)
 
1792
        os.chown(dst, s.st_uid, s.st_gid)
 
1793
    except OSError, e:
 
1794
        trace.warning("IOError: %s\nUnable to copy ownership from '%s' to '%s'" % (e, src, dst))
 
1795
    return True
 
1796
 
 
1797
 
 
1798
def mkdir(path, ownership_src=None):
 
1799
    """creates the directory 'path'. If ownership_src is given, copies (chown)
 
1800
    usr/grp ownership from 'ownership_src' to 'path'"""
 
1801
    os.mkdir(path)
 
1802
    if ownership_src != None:
 
1803
        copy_ownership(path, ownership_src)
 
1804
 
 
1805
def open(filename, mode='r', bufsize=-1, ownership_src=None):
 
1806
    """This function wraps the python builtin open. filename, mode and bufsize
 
1807
    parameters behave the same as the builtin open[1].
 
1808
    [1] http://python.org/doc/2.6.4/library/functions.html#open"""
 
1809
    import __builtin__
 
1810
    f = __builtin__.open(filename, mode, bufsize)
 
1811
    if ownership_src != None:
 
1812
        copy_ownership(filename, ownership_src)
 
1813
    return f
 
1814
 
 
1815
 
1774
1816
def path_prefix_key(path):
1775
1817
    """Generate a prefix-order path key for path.
1776
1818