diff --git a/applications/test/fileNameClean/fileNameCleanTest.C b/applications/test/fileNameClean/fileNameCleanTest.C index 70317e61edee6d4b6bfd1d8a5998a0ba1273488a..ce52da1e00e745a21195e100be72d0a78c5ab8f1 100644 --- a/applications/test/fileNameClean/fileNameCleanTest.C +++ b/applications/test/fileNameClean/fileNameCleanTest.C @@ -66,10 +66,11 @@ int main(int argc, char *argv[]) argList::noBanner(); argList::noParallel(); argList::validArgs.insert("fileName .. fileNameN"); + argList::addOption("istream", "fileName", "test Istream values"); argList args(argc, argv, false, true); - if (args.additionalArgs().empty()) + if (args.additionalArgs().empty() && args.options().empty()) { args.printUsage(); } @@ -95,6 +96,22 @@ int main(int argc, char *argv[]) printCleaning(pathName); } + if (args.optionFound("istream")) + { + args.optionLookup("istream")() >> pathName; + + Info<< nl + << "-case" << nl + << "path = " << args.path() << nl + << "root = " << args.rootPath() << nl + << "case = " << args.caseName() << nl + << "FOAM_CASE=" << getEnv("FOAM_CASE") << nl + << "FOAM_CASENAME=" << getEnv("FOAM_CASENAME") << nl + << endl; + + printCleaning(pathName); + } + Info<< "\nEnd\n" << endl; return 0; } diff --git a/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C b/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C index bed17b9fd155c88db5bc489035a752ab59b1451b..b7618bf5442070fc3d4f3d0d5fa4cfe4c7c29812 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C +++ b/src/OpenFOAM/primitives/strings/fileName/fileNameIO.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Istream constructor and IOstream operators for fileName. - \*---------------------------------------------------------------------------*/ #include "fileName.H" @@ -34,21 +31,41 @@ Description Foam::fileName::fileName(Istream& is) : - string(is) + string() { - stripInvalid(); + is >> *this; } Foam::Istream& Foam::operator>>(Istream& is, fileName& fn) { - fileName fName(is); + token t(is); + + if (!t.good()) + { + is.setBad(); + return is; + } + + if (t.isString()) + { + fn = t.stringToken(); + } + else + { + is.setBad(); + FatalIOErrorIn("operator>>(Istream&, fileName&)", is) + << "wrong token type - expected string, found " << t.info() + << exit(FatalIOError); + + return is; + } + + fn.stripInvalid(); // Check state of Istream is.check("Istream& operator>>(Istream&, fileName&)"); - fn = fName; - return is; } diff --git a/src/OpenFOAM/primitives/strings/word/wordIO.C b/src/OpenFOAM/primitives/strings/word/wordIO.C index 20a2a216d1463386ca586cb28bb6ec3ba9e915a4..b2b183075b019ce7ed76f9c7dfa41b1d9de72c1f 100644 --- a/src/OpenFOAM/primitives/strings/word/wordIO.C +++ b/src/OpenFOAM/primitives/strings/word/wordIO.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Istream constructor and IOstream operators for word. - \*---------------------------------------------------------------------------*/ #include "word.H"