From ffc0b5e4de02873ee825f70f4c434c8cb3b7edde Mon Sep 17 00:00:00 2001 From: Andy Cedilnik Date: Thu, 15 Feb 2007 15:07:16 -0500 Subject: [PATCH] BUG: Overwrite the symlink if it already exists. Close Bug #4418 - cmake -create-symlink doesn't overwrite existing symlinks --- Source/cmake.cxx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 3f6143aa39..7edf2eabae 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1072,6 +1072,22 @@ int cmake::ExecuteCMakeCommand(std::vector& args) // supporting them. else if (args[1] == "create_symlink" && args.size() == 4) { + const char* destinationFileName = args[3].c_str(); + if ( cmSystemTools::FileExists(destinationFileName) ) + { + if ( cmSystemTools::FileIsSymlink(destinationFileName) ) + { + if ( !cmSystemTools::RemoveFile(destinationFileName) || + cmSystemTools::FileExists(destinationFileName) ) + { + return 0; + } + } + else + { + return 0; + } + } return cmSystemTools::CreateSymlink(args[2].c_str(), args[3].c_str())? 0:1; }