From c4542294a86c11cd959fe67f7c6f33faf68aa6f7 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Thu, 11 Oct 2018 10:07:11 +0200 Subject: [PATCH] ENH: more stringent checks for fileName concatenation - avoids some doubled slashes STYLE: simplify concatenation of processor directory names --- .../extrude/extrudeMesh/extrudeMesh.C | 3 +-- .../decomposePar/decomposePar.C | 8 +++---- .../decomposePar/domainDecomposition.C | 2 +- .../decomposePar/faMeshDecomposition.C | 9 ++++---- .../reconstructPar/reconstructPar.C | 2 +- .../reconstructParMesh/reconstructParMesh.C | 4 ++-- .../profilingSummary/profilingSummary.C | 4 ++-- .../preProcessing/mapFields/mapFields.C | 9 ++++---- src/OpenFOAM/global/argList/argList.C | 2 +- .../masterUncollatedFileOperation.C | 3 +-- .../primitives/strings/fileName/fileName.C | 23 ++++++++++++++----- 11 files changed, 38 insertions(+), 31 deletions(-) diff --git a/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C index 26b33a8605e..1529ce78226 100644 --- a/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C +++ b/applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C @@ -358,8 +358,7 @@ int main(int argc, char *argv[]) if (Pstream::parRun()) { sourceCaseDir = - sourceCaseDir - /"processor" + Foam::name(Pstream::myProcNo()); + sourceCaseDir/("processor" + Foam::name(Pstream::myProcNo())); } wordList sourcePatches; dict.readEntry("sourcePatches", sourcePatches); diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C index e061325c846..d7354e91ac6 100644 --- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C +++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C @@ -589,7 +589,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/fileName(word("processor") + name(proci)) + args.caseName()/("processor" + Foam::name(proci)) ); processorDb.setTime(runTime); @@ -1016,7 +1016,7 @@ int main(int argc, char *argv[]) Time::controlDictName, args.rootPath(), args.caseName() - /fileName(word("processor") + name(proci)) + / ("processor" + Foam::name(proci)) ) ); } @@ -1374,8 +1374,8 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/ - fileName(word("processor") + name(procI)) + args.caseName() + / ("processor" + Foam::name(procI)) ); processorDb.setTime(runTime); diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C index 3576fd34044..1d34f53a5a4 100644 --- a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C +++ b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C @@ -305,7 +305,7 @@ bool Foam::domainDecomposition::writeDecomposition(const bool decomposeSets) fileName processorCasePath ( - time().caseName()/fileName(word("processor") + Foam::name(proci)) + time().caseName()/("processor" + Foam::name(proci)) ); // create a database diff --git a/applications/utilities/parallelProcessing/decomposePar/faMeshDecomposition.C b/applications/utilities/parallelProcessing/decomposePar/faMeshDecomposition.C index a1296bd86e6..bcefd8c7c9e 100644 --- a/applications/utilities/parallelProcessing/decomposePar/faMeshDecomposition.C +++ b/applications/utilities/parallelProcessing/decomposePar/faMeshDecomposition.C @@ -50,7 +50,7 @@ void Foam::faMeshDecomposition::distributeFaces() ( Time::controlDictName, time().rootPath(), - time().caseName()/fileName(word("processor") + Foam::name(procI)) + time().caseName()/("processor" + Foam::name(procI)) ); fvMesh procMesh @@ -250,7 +250,7 @@ void Foam::faMeshDecomposition::decomposeMesh() ( Time::controlDictName, time().rootPath(), - time().caseName()/fileName(word("processor") + Foam::name(procI)) + time().caseName()/("processor" + Foam::name(procI)) ); fvMesh procFvMesh @@ -1059,8 +1059,7 @@ void Foam::faMeshDecomposition::decomposeMesh() { fileName processorCasePath ( - time().caseName()/fileName(word("processor") - + Foam::name(procI)) + time().caseName()/("processor" + Foam::name(procI)) ); // create a database @@ -1179,7 +1178,7 @@ bool Foam::faMeshDecomposition::writeDecomposition() fileName processorCasePath ( - time().caseName()/fileName(word("processor") + Foam::name(procI)) + time().caseName()/("processor" + Foam::name(procI)) ); // create a database diff --git a/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C b/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C index 37e179440d0..6429453e7bf 100644 --- a/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C +++ b/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C @@ -223,7 +223,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/fileName(word("processor") + name(proci)) + args.caseName()/("processor" + Foam::name(proci)) ) ); } diff --git a/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C b/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C index 5236940d408..8bc73b9040e 100644 --- a/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C +++ b/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C @@ -550,7 +550,7 @@ int main(int argc, char *argv[]) forAll(databases, proci) { Info<< "Reading database " - << args.caseName()/fileName(word("processor") + name(proci)) + << args.caseName()/("processor" + Foam::name(proci)) << endl; databases.set @@ -560,7 +560,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/fileName(word("processor") + name(proci)) + args.caseName()/("processor" + Foam::name(proci)) ) ); } diff --git a/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C b/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C index 877bdf3de5b..920ba165a57 100644 --- a/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C +++ b/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C @@ -88,7 +88,7 @@ int main(int argc, char *argv[]) const label nProcs = fileHandler().nProcs(args.path()); #else label nProcs = 0; - while (isDir(args.path()/(word("processor") + name(nProcs)))) + while (isDir(args.path()/("processor" + Foam::name(nProcs)))) { ++nProcs; } @@ -106,7 +106,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/fileName(word("processor") + name(proci)) + args.caseName()/("processor" + Foam::name(proci)) ) ); } diff --git a/applications/utilities/preProcessing/mapFields/mapFields.C b/applications/utilities/preProcessing/mapFields/mapFields.C index d6fe3578544..649e908d6a8 100644 --- a/applications/utilities/preProcessing/mapFields/mapFields.C +++ b/applications/utilities/preProcessing/mapFields/mapFields.C @@ -396,7 +396,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, rootDirSource, - caseDirSource/fileName(word("processor") + name(proci)) + caseDirSource/("processor" + Foam::name(proci)) ); #include "setTimeIndex.H" @@ -471,7 +471,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, rootDirTarget, - caseDirTarget/fileName(word("processor") + name(proci)) + caseDirTarget/("processor" + Foam::name(proci)) ); fvMesh meshTarget @@ -536,7 +536,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, rootDirSource, - caseDirSource/fileName(word("processor") + name(procISource)) + caseDirSource/("processor" + Foam::name(procISource)) ); #include "setTimeIndex.H" @@ -572,8 +572,7 @@ int main(int argc, char *argv[]) ( Time::controlDictName, rootDirTarget, - caseDirTarget/fileName(word("processor") - + name(procITarget)) + caseDirTarget/("processor" + Foam::name(procITarget)) ); fvMesh meshTarget diff --git a/src/OpenFOAM/global/argList/argList.C b/src/OpenFOAM/global/argList/argList.C index 467002727ee..b2f0d979cc2 100644 --- a/src/OpenFOAM/global/argList/argList.C +++ b/src/OpenFOAM/global/argList/argList.C @@ -1317,7 +1317,7 @@ void Foam::argList::parse isDir ( rootPath_/globalCase_ - / "processor" + Foam::name(++nProcDirs) + / ("processor" + Foam::name(++nProcDirs)) ) ) {} diff --git a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C index 18ff87a6cb6..13a28663c54 100644 --- a/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C +++ b/src/OpenFOAM/global/fileOperations/masterUncollatedFileOperation/masterUncollatedFileOperation.C @@ -367,8 +367,7 @@ Foam::fileOperations::masterUncollatedFileOperation::localObjectPath // Uncollated type, e.g. processor1 const word procName ( - "processor" - +Foam::name(Pstream::myProcNo(Pstream::worldComm)) + "processor" + Foam::name(Pstream::myProcNo(Pstream::worldComm)) ); return processorsPath diff --git a/src/OpenFOAM/primitives/strings/fileName/fileName.C b/src/OpenFOAM/primitives/strings/fileName/fileName.C index 83a6d0b70a6..6fda7a5c8f5 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileName.C +++ b/src/OpenFOAM/primitives/strings/fileName/fileName.C @@ -426,13 +426,17 @@ Foam::fileName& Foam::fileName::operator/=(const string& other) { // Two non-empty strings: can concatenate - s.append("/"); + if (s.back() != '/' && other.front() != '/') + { + s += '/'; + } + s.append(other); } } else if (other.size()) { - // Or, if the first string is empty + // The first string is empty s = other; } @@ -449,16 +453,23 @@ Foam::fileName Foam::operator/(const string& a, const string& b) if (b.size()) { // Two non-empty strings: can concatenate - return fileName(a + '/' + b); + + if (a.back() == '/' || b.front() == '/') + { + return fileName(a + b); + } + else + { + return fileName(a + '/' + b); + } } - return a; + return a; // The second string was empty } - // Or, if the first string is empty - if (b.size()) { + // The first string is empty return b; } -- GitLab