From b642ffa7a82922d99475fa38e9a7f317e029ebf3 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 17 Aug 2006 12:07:51 -0400 Subject: ENH: Fix directory installation to properly deal with trailing slash names (using the rsync convention for whether the last directory name is included in naming the destination directory). --- Source/cmFileCommand.cxx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index bbf4265..80c69e6 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -741,13 +741,20 @@ bool cmFileCommand::HandleInstallCommand( for ( i = 0; i < files.size(); i ++ ) { // Split the input file into its directory and name components. - std::string fromDir = cmSystemTools::GetFilenamePath(files[i]); - std::string fromName = cmSystemTools::GetFilenameName(files[i]); + std::vector fromPathComponents; + cmSystemTools::SplitPath(files[i].c_str(), fromPathComponents); + std::string fromName = *(fromPathComponents.end()-1); + std::string fromDir = cmSystemTools::JoinPath(fromPathComponents.begin(), + fromPathComponents.end()-1); // Compute the full path to the destination file. std::string toFile = destination; - toFile += "/"; - toFile += rename.empty()? fromName : rename; + std::string const& toName = rename.empty()? fromName : rename; + if(!toName.empty()) + { + toFile += "/"; + toFile += toName; + } // Handle type-specific installation details. switch(itype) -- cgit v0.12