From 6d7fdedde6c41e6d5e7840a7d653d490296aa6e7 Mon Sep 17 00:00:00 2001 From: KWSys Upstream Date: Fri, 22 Jun 2018 07:44:17 -0400 Subject: [PATCH 1/2] KWSys 2018-06-22 (49068d94) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 49068d948ee03cde172fe5ff15a2778c50f91d38 (master). Upstream Shortlog ----------------- Brad King (1): 5d6f59fe SystemTools: Change SplitString return type to use std::string --- SystemTools.cxx | 19 +++++++++---------- SystemTools.hxx.in | 8 +++----- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/SystemTools.cxx b/SystemTools.cxx index b87b6b5575..d552d9fb08 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -1752,11 +1752,11 @@ std::string SystemTools::CropString(const std::string& s, size_t max_len) return n; } -std::vector SystemTools::SplitString(const std::string& p, - char sep, bool isPath) +std::vector SystemTools::SplitString(const std::string& p, + char sep, bool isPath) { std::string path = p; - std::vector paths; + std::vector paths; if (path.empty()) { return paths; } @@ -3279,13 +3279,12 @@ std::string SystemTools::RelativePath(const std::string& local, std::string r = SystemTools::CollapseFullPath(remote); // split up both paths into arrays of strings using / as a separator - std::vector localSplit = - SystemTools::SplitString(l, '/', true); - std::vector remoteSplit = + std::vector localSplit = SystemTools::SplitString(l, '/', true); + std::vector remoteSplit = SystemTools::SplitString(r, '/', true); - std::vector + std::vector commonPath; // store shared parts of path in this array - std::vector finalPath; // store the final relative path here + std::vector finalPath; // store the final relative path here // count up how many matching directory names there are from the start unsigned int sameCount = 0; while (((sameCount <= (localSplit.size() - 1)) && @@ -3325,7 +3324,7 @@ std::string SystemTools::RelativePath(const std::string& local, } // for each entry that is not common in the remote path add it // to the final path. - for (std::vector::iterator vit = remoteSplit.begin(); + for (std::vector::iterator vit = remoteSplit.begin(); vit != remoteSplit.end(); ++vit) { if (!vit->empty()) { finalPath.push_back(*vit); @@ -3334,7 +3333,7 @@ std::string SystemTools::RelativePath(const std::string& local, std::string relativePath; // result string // now turn the array of directories into a unix path by puttint / // between each entry that does not already have one - for (std::vector::iterator vit1 = finalPath.begin(); + for (std::vector::iterator vit1 = finalPath.begin(); vit1 != finalPath.end(); ++vit1) { if (!relativePath.empty() && *relativePath.rbegin() != '/') { relativePath += "/"; diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in index 928ee41f2a..8d1f78cf73 100644 --- a/SystemTools.hxx.in +++ b/SystemTools.hxx.in @@ -10,8 +10,6 @@ #include #include -#include <@KWSYS_NAMESPACE@/String.hxx> - #include // include sys/stat.h after sys/types.h #include @@ -197,9 +195,9 @@ public: s starts with a / then the first element of the returned array will be /, so /foo/bar will be [/, foo, bar] */ - static std::vector SplitString(const std::string& s, - char separator = '/', - bool isPath = false); + static std::vector SplitString(const std::string& s, + char separator = '/', + bool isPath = false); /** * Perform a case-independent string comparison */ From b41b30f16e1ae2c8248321dbf51347b7a4b90d30 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 22 Jun 2018 11:35:34 -0400 Subject: [PATCH 2/2] Update use of KWSys SystemTools::SplitString for new signature --- Source/CTest/cmCTestMultiProcessHandler.cxx | 5 ++--- Source/cmCTest.cxx | 5 ++--- Source/cmCTest.h | 4 ++-- Source/cmFileCommand.cxx | 8 ++++---- Source/cmGlobalGhsMultiGenerator.cxx | 16 +++++++--------- Source/cmGlobalGhsMultiGenerator.h | 5 ++--- Source/cmGlobalVisualStudio7Generator.cxx | 4 ++-- 7 files changed, 21 insertions(+), 26 deletions(-) diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index dcef8a0372..52db9d4c7c 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -15,7 +15,6 @@ #include "cmUVSignalHackRAII.h" // IWYU pragma: keep #include "cmsys/FStream.hxx" -#include "cmsys/String.hxx" #include "cmsys/SystemInformation.hxx" #include @@ -458,7 +457,7 @@ void cmCTestMultiProcessHandler::UpdateCostData() if (line == "---") { break; } - std::vector parts = cmSystemTools::SplitString(line, ' '); + std::vector parts = cmSystemTools::SplitString(line, ' '); // Format: if (parts.size() < 3) { break; @@ -511,7 +510,7 @@ void cmCTestMultiProcessHandler::ReadCostData() break; } - std::vector parts = cmSystemTools::SplitString(line, ' '); + std::vector parts = cmSystemTools::SplitString(line, ' '); // Probably an older version of the file, will be fixed next run if (parts.size() < 3) { diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index d0e668d4dc..95edd8b70f 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -9,7 +9,6 @@ #include "cmsys/FStream.hxx" #include "cmsys/Glob.hxx" #include "cmsys/Process.h" -#include "cmsys/String.hxx" #include "cmsys/SystemInformation.hxx" #include #include @@ -1491,7 +1490,7 @@ int cmCTest::GenerateCTestNotesOutput(cmXMLWriter& xml, this->AddSiteProperties(xml); xml.StartElement("Notes"); - for (cmsys::String const& file : files) { + for (std::string const& file : files) { cmCTestLog(this, OUTPUT, "\tAdd file: " << file << std::endl); std::string note_time = this->CurrentTime(); xml.StartElement("Note"); @@ -1595,7 +1594,7 @@ std::string cmCTest::Base64EncodeFile(std::string const& file) bool cmCTest::SubmitExtraFiles(const VectorOfStrings& files) { - for (cmsys::String const& file : files) { + for (std::string const& file : files) { if (!cmSystemTools::FileExists(file)) { cmCTestLog(this, ERROR_MESSAGE, "Cannot find extra file: " << file << " to submit." diff --git a/Source/cmCTest.h b/Source/cmCTest.h index ddeab1a8cd..c6ece98122 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -7,7 +7,7 @@ #include "cmDuration.h" #include "cmProcessOutput.h" -#include "cmsys/String.hxx" + #include #include #include @@ -93,7 +93,7 @@ public: if the string does not name a valid part. */ Part GetPartFromName(const char* name); - typedef std::vector VectorOfStrings; + typedef std::vector VectorOfStrings; typedef std::set SetOfStrings; /** Process Command line arguments */ diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index aae70b160c..2e7829b8f3 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -7,7 +7,7 @@ #include "cmsys/FStream.hxx" #include "cmsys/Glob.hxx" #include "cmsys/RegularExpression.hxx" -#include "cmsys/String.hxx" + #include #include #include // IWYU pragma: keep @@ -2490,11 +2490,11 @@ bool cmFileCommand::HandleCMakePathCommand( #else char pathSep = ':'; #endif - std::vector path = cmSystemTools::SplitString(*i, pathSep); + std::vector path = cmSystemTools::SplitString(*i, pathSep); i++; const char* var = i->c_str(); std::string value; - for (std::vector::iterator j = path.begin(); j != path.end(); + for (std::vector::iterator j = path.begin(); j != path.end(); ++j) { if (j != path.begin()) { value += ";"; @@ -2504,7 +2504,7 @@ bool cmFileCommand::HandleCMakePathCommand( } else { *j = cmSystemTools::ConvertToOutputPath(*j); // remove double quotes in the path - cmsys::String& s = *j; + std::string& s = *j; if (s.size() > 1 && s[0] == '\"' && s[s.size() - 1] == '\"') { s = s.substr(1, s.size() - 2); diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx index 0328991e63..1e104ee9f4 100644 --- a/Source/cmGlobalGhsMultiGenerator.cxx +++ b/Source/cmGlobalGhsMultiGenerator.cxx @@ -348,16 +348,14 @@ void cmGlobalGhsMultiGenerator::AddFilesUpToPath( { std::string workingPath(path); cmSystemTools::ConvertToUnixSlashes(workingPath); - std::vector splitPath = - cmSystemTools::SplitString(workingPath); + std::vector splitPath = cmSystemTools::SplitString(workingPath); std::string workingRelPath(relPath); cmSystemTools::ConvertToUnixSlashes(workingRelPath); if (!workingRelPath.empty()) { workingRelPath += "/"; } std::string pathUpTo; - for (std::vector::const_iterator splitPathI = - splitPath.begin(); + for (std::vector::const_iterator splitPathI = splitPath.begin(); splitPath.end() != splitPathI; ++splitPathI) { pathUpTo += *splitPathI; if (targetFolderBuildStreams->end() == @@ -415,11 +413,11 @@ void cmGlobalGhsMultiGenerator::AddFilesUpToPathNewBuildFile( void cmGlobalGhsMultiGenerator::AddFilesUpToPathAppendNextFile( std::map* targetFolderBuildStreams, std::string const& pathUpTo, - std::vector::const_iterator splitPathI, - std::vector::const_iterator end, + std::vector::const_iterator splitPathI, + std::vector::const_iterator end, GhsMultiGpj::Types const projType) { - std::vector::const_iterator splitPathNextI = splitPathI + 1; + std::vector::const_iterator splitPathNextI = splitPathI + 1; if (end != splitPathNextI && targetFolderBuildStreams->end() == targetFolderBuildStreams->find(pathUpTo + "/" + *splitPathNextI)) { @@ -436,7 +434,7 @@ std::string cmGlobalGhsMultiGenerator::GetFileNameFromPath( std::string output(path); if (!path.empty()) { cmSystemTools::ConvertToUnixSlashes(output); - std::vector splitPath = cmSystemTools::SplitString(output); + std::vector splitPath = cmSystemTools::SplitString(output); output += "/" + splitPath.back() + FILE_EXTENSION; } return output; @@ -457,7 +455,7 @@ void cmGlobalGhsMultiGenerator::UpdateBuildFiles( this->GetCMakeInstance()->GetHomeOutputDirectory().c_str(), folderName, GhsMultiGpj::PROJECT); } - std::vector splitPath = cmSystemTools::SplitString( + std::vector splitPath = cmSystemTools::SplitString( cmGhsMultiTargetGenerator::GetRelBuildFileName(tgt)); std::string foldNameRelBuildFile(*(splitPath.end() - 2) + "/" + splitPath.back()); diff --git a/Source/cmGlobalGhsMultiGenerator.h b/Source/cmGlobalGhsMultiGenerator.h index 30d4d3b274..ef1b66f520 100644 --- a/Source/cmGlobalGhsMultiGenerator.h +++ b/Source/cmGlobalGhsMultiGenerator.h @@ -112,9 +112,8 @@ private: static void AddFilesUpToPathAppendNextFile( std::map* targetFolderBuildStreams, std::string const& pathUpTo, - std::vector::const_iterator splitPathI, - std::vector::const_iterator end, - GhsMultiGpj::Types projType); + std::vector::const_iterator splitPathI, + std::vector::const_iterator end, GhsMultiGpj::Types projType); static std::string GetFileNameFromPath(std::string const& path); void UpdateBuildFiles(const std::vector& tgts); bool IsTgtForBuild(const cmGeneratorTarget* tgt); diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 158f484315..21121f2bbf 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -397,12 +397,12 @@ void cmGlobalVisualStudio7Generator::WriteTargetsToSolution( if (written && this->UseFolderProperty()) { const std::string targetFolder = target->GetEffectiveFolderName(); if (!targetFolder.empty()) { - std::vector tokens = + std::vector tokens = cmSystemTools::SplitString(targetFolder, '/', false); std::string cumulativePath; - for (cmsys::String const& iter : tokens) { + for (std::string const& iter : tokens) { if (!iter.size()) { continue; }