Cleanup the interface for creating soft or hard links.

Before this patch the unix code for creating hardlinks was unused. The code
for creating symbolic links was implemented in lib/Support/LockFileManager.cpp
and the code for creating hard links in lib/Support/*/Path.inc.

The only use we have for these is in LockFileManager.cpp and it can use both
soft and hard links. Just have a create_link function that creates one or the
other depending on the platform.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203596 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-03-11 18:40:24 +00:00
parent 7e3e9aa8e1
commit 8acff70de1
5 changed files with 20 additions and 39 deletions

View File

@ -67,22 +67,6 @@ bool LockFileManager::processStillExecuting(StringRef Hostname, int PID) {
return true;
}
#if LLVM_ON_UNIX
static error_code unix_create_symbolic_link(const Twine &to,
const Twine &from) {
// Get arguments.
SmallString<128> from_storage;
SmallString<128> to_storage;
StringRef f = from.toNullTerminatedStringRef(from_storage);
StringRef t = to.toNullTerminatedStringRef(to_storage);
if (::symlink(t.begin(), f.begin()) == -1)
return error_code(errno, system_category());
return error_code::success();
}
#endif
LockFileManager::LockFileManager(StringRef FileName)
{
this->FileName = FileName;
@ -132,20 +116,9 @@ LockFileManager::LockFileManager(StringRef FileName)
}
while (1) {
#if LLVM_ON_UNIX
// Create a symbolic link from the lock file name. If this succeeds, we're
// done. Note that we are using symbolic link because hard links are not
// supported by all filesystems.
error_code EC
= unix_create_symbolic_link(UniqueLockFileName.str(),
LockFileName.str());
#else
// We can't use symbolic links for windows.
// Create a hard link from the lock file name. If this succeeds, we're done.
error_code EC
= sys::fs::create_hard_link(UniqueLockFileName.str(),
LockFileName.str());
#endif
// Create a link from the lock file name. If this succeeds, we're done.
error_code EC =
sys::fs::create_link(UniqueLockFileName.str(), LockFileName.str());
if (EC == errc::success)
return;