changeset 3998:315d47991fd4

symlinks: check whether a filesystem supports symlinks
author Matt Mackall <mpm@selenic.com>
date Fri, 29 Dec 2006 20:04:31 -0600
parents 3f0ba82c103f
children 0b740dcf0cf1
files mercurial/util.py
diffstat 1 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/util.py	Fri Dec 29 20:04:31 2006 -0600
+++ b/mercurial/util.py	Fri Dec 29 20:04:31 2006 -0600
@@ -713,6 +713,18 @@
         return lambda x: is_exec(os.path.join(path, x))
     return fallback
 
+def checksymlink(path):
+    """check whether the given path is on a symlink-capable filesystem"""
+    # mktemp is not racy because symlink creation will fail if the
+    # file already exists
+    name = tempfile.mktemp(dir=path)
+    try:
+        os.symlink(".", name)
+        os.unlink(name)
+        return True
+    except OSError:
+        return False
+
 # Platform specific variants
 if os.name == 'nt':
     import msvcrt