# HG changeset patch # User Matt Mackall # Date 1167444270 21600 # Node ID 1cc60eebc71f1808faaed9928451ea0d7852088e # Parent 04d919cdf263e3d89642b8d73f7536f3979e559a exec: checkexec checks whether filesystem supports exec flags diff --git a/mercurial/util.py b/mercurial/util.py --- a/mercurial/util.py +++ b/mercurial/util.py @@ -693,6 +693,20 @@ def checkfolding(path): except: return True +def checkexec(path): + """ + Check whether the given path is on a filesystem with UNIX-like exec flags + + Requires a directory (like /foo/.hg) + """ + fh, fn = tempfile.mkstemp("", "", path) + os.close(fh) + m = os.stat(fn).st_mode + os.chmod(fn, m ^ 0111) + r = (os.stat(fn).st_mode != m) + os.unlink(fn) + return r + # Platform specific variants if os.name == 'nt': import msvcrt