INNER CODE UNIT · Python
CreateWin32Hardlink
DaemonEngine/Daemon · external_deps/cygtar.py:100
def CreateWin32Hardlink(filepath, targpath, try_mklink):
"""Create a hardlink on Win32 if possible
Uses mklink to create a hardlink if possible. On failure, it will
assume mklink is unavailible and copy the file instead, returning False
to indicate future calls should not attempt to use mklink."""
# Assume an error, if subprocess succeeds, then it should return 0
err = 1
if try_mklink:
dst_src = ToNativePath(filepath) + ' ' + ToNativePath(targpath)
try:
err = subprocess.call(['cmd', '/C', 'mklink /H ' + dst_src],
stdout = open(os.devnull, 'wb'))
except EnvironmentError:
try_mklink = False
# If we failed to create a hardlink, then just copy it. We wrap this in a