util: move checklink() to posix.py and return False on Windows
authorAdrian Buehlmann <adrian@cadifra.com>
Tue, 05 Apr 2011 11:55:52 +0200
changeset 13890 31eb145b50b6
parent 13889 9a96efc4af8a
child 13891 1bd9f3a6a0d0
util: move checklink() to posix.py and return False on Windows Python added support for Windows 6.0 (Vista) symbolic links in 3.2 [1], but even these symbolic links aren't what we can expect from a canonical symbolic link, since creation requires SeCreateSymbolicLinkPrivilege, which typically only admins have. So we can safely assume that we don't have symbolic links on Windows. [1] http://docs.python.org/py3k/library/os.html#os.symlink
mercurial/posix.py
mercurial/util.py
mercurial/windows.py
--- a/mercurial/posix.py	Tue Apr 05 16:55:47 2011 +0800
+++ b/mercurial/posix.py	Tue Apr 05 11:55:52 2011 +0200
@@ -135,6 +135,18 @@
         return False
     return not (new_file_has_exec or exec_flags_cannot_flip)
 
+def checklink(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, prefix='hg-checklink-')
+    try:
+        os.symlink(".", name)
+        os.unlink(name)
+        return True
+    except (OSError, AttributeError):
+        return False
+
 def set_binary(fd):
     pass
 
--- a/mercurial/util.py	Tue Apr 05 16:55:47 2011 +0800
+++ b/mercurial/util.py	Tue Apr 05 11:55:52 2011 +0200
@@ -683,18 +683,6 @@
 
     return ''.join(result)
 
-def checklink(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, prefix='hg-checklink-')
-    try:
-        os.symlink(".", name)
-        os.unlink(name)
-        return True
-    except (OSError, AttributeError):
-        return False
-
 def checknlink(testfile):
     '''check whether hardlink count reporting works properly'''
 
--- a/mercurial/windows.py	Tue Apr 05 16:55:47 2011 +0800
+++ b/mercurial/windows.py	Tue Apr 05 11:55:52 2011 +0200
@@ -135,6 +135,9 @@
 def checkexec(path):
     return False
 
+def checklink(path):
+    return False
+
 def set_binary(fd):
     # When run without console, pipes may expose invalid
     # fileno(), usually set to -1.