diff --git a/SystemTools.cxx b/SystemTools.cxx index 2f0aac9fbf43448b64574bb483400a24171cce16..3419a5a164ebc979a951b1314c3bd58291aa2295 100644 --- a/SystemTools.cxx +++ b/SystemTools.cxx @@ -2466,6 +2466,31 @@ bool SystemTools::ComparePath(const char* c1, const char* c2) #endif } +//---------------------------------------------------------------------------- +bool SystemTools::Split(const char* str, kwsys_stl::vector<kwsys_stl::string>& lines, char separator) +{ + kwsys_stl::string data(str); + kwsys_stl::string::size_type lpos = 0; + while(lpos < data.length()) + { + kwsys_stl::string::size_type rpos = data.find_first_of(separator, lpos); + if(rpos == kwsys_stl::string::npos) + { + // Line ends at end of string without a newline. + lines.push_back(data.substr(lpos)); + return false; + } + else + { + // Line ends in a "\n", remove the character. + lines.push_back(data.substr(lpos, rpos-lpos)); + } + lpos = rpos+1; + } + return true; +} + +//---------------------------------------------------------------------------- bool SystemTools::Split(const char* str, kwsys_stl::vector<kwsys_stl::string>& lines) { kwsys_stl::string data(str); diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in index f48e0641a89845294fc865dedb0e734981e2170b..fe048c2f14778471797ac555c2694af1dcb31389 100644 --- a/SystemTools.hxx.in +++ b/SystemTools.hxx.in @@ -189,6 +189,7 @@ public: * Return false only if the last line stored had no newline */ static bool Split(const char* s, kwsys_stl::vector<kwsys_stl::string>& l); + static bool Split(const char* s, kwsys_stl::vector<kwsys_stl::string>& l, char separator); /** * Return string with space added between capitalized words