From 1b0cf102cc4b1b9f1d5626bedd87c4e3f0932a0a Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Fri, 4 Dec 2009 16:22:59 +0100
Subject: [PATCH] testing on fileName Istream construction

---
 .../test/fileNameClean/fileNameCleanTest.C    | 19 ++++++++++-
 .../primitives/strings/fileName/fileNameIO.C  | 33 ++++++++++++++-----
 src/OpenFOAM/primitives/strings/word/wordIO.C |  3 --
 3 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/applications/test/fileNameClean/fileNameCleanTest.C b/applications/test/fileNameClean/fileNameCleanTest.C
index 70317e61ede..ce52da1e00e 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 bed17b9fd15..b7618bf5442 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 20a2a216d14..b2b183075b0 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"
-- 
GitLab