diff --git a/src/OpenFOAM/global/argList/argList.C b/src/OpenFOAM/global/argList/argList.C index 01feb13dfc..37caa6ddb3 100644 --- a/src/OpenFOAM/global/argList/argList.C +++ b/src/OpenFOAM/global/argList/argList.C @@ -127,8 +127,7 @@ void Foam::argList::getRootCase() if (iter != options_.end()) { casePath = iter(); - casePath.removeRepeated('/'); - casePath.removeTrailing('/'); + casePath.clean(); // handle degenerate form and '-case .' like no -case specified if (casePath.empty() || casePath == ".") diff --git a/src/OpenFOAM/primitives/strings/fileName/fileName.C b/src/OpenFOAM/primitives/strings/fileName/fileName.C index 6d930e9fe8..ac6dc75025 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileName.C +++ b/src/OpenFOAM/primitives/strings/fileName/fileName.C @@ -55,6 +55,27 @@ Foam::fileName::Type Foam::fileName::type() const } +bool Foam::fileName::clean() +{ + bool changed = false; + + changed = this->removeRepeated('/') || changed; + changed = this->removeTrailing('/') || changed; + + return changed; +} + + +// Return string with repeated characters removed +Foam::fileName Foam::fileName::clean() const +{ + fileName fName(*this); + fName.clean(); + return fName; +} + + + // Return file name (part beyond last /) // // behaviour compared to /usr/bin/basename: diff --git a/src/OpenFOAM/primitives/strings/fileName/fileName.H b/src/OpenFOAM/primitives/strings/fileName/fileName.H index a47f53ed80..709e70920b 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileName.H +++ b/src/OpenFOAM/primitives/strings/fileName/fileName.H @@ -128,6 +128,13 @@ public: //- Is this character valid for a fileName? inline static bool valid(char); + //- Cleanup file name + // eg, remove repeated slashes, etc. + bool clean(); + + //- Cleanup file name + // eg, remove repeated slashes, etc. + fileName clean() const; // Interogation