Salome HOME
Additional fix for bug PAL13701(EDF 319 SMESH : Export UNV failed with not enough...
authormzn <mzn@opencascade.com>
Wed, 6 Dec 2006 14:40:44 +0000 (14:40 +0000)
committermzn <mzn@opencascade.com>
Wed, 6 Dec 2006 14:40:44 +0000 (14:40 +0000)
src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx
src/DriverUNV/UNV_Utilities.hxx

index f0c2203f3b34e712dcd431864795e5f1d0d64fe1..b9554e306cd250331eda6df1dded300155f2d784 100644 (file)
@@ -35,6 +35,7 @@
 #include "UNV_Utilities.hxx"
 
 using namespace std;
+using namespace UNV;
 
 namespace{
   typedef std::vector<size_t> TConnect;
@@ -292,6 +293,11 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
       }
       UNV2417::Write(out_stream,aDataSet2417);
       }*/
+
+    out_stream.flush();
+    out_stream.close();
+    if (!check_file(myFile))
+      EXCEPTION(runtime_error,"ERROR: Output file not good.");
   }
   catch(const std::exception& exc){
     INFOS("Follow exception was cought:\n\t"<<exc.what());
index 6f8598341b0e378ce8473ee5b6ba3ed44f8e16e0..11ab9ae5ef8a681152b1fad5e48f8702eda3c725 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <iostream>    
 #include <sstream>     
+#include <fstream>
 #include <string>
 #include <stdexcept>
 #include <cassert>
@@ -87,6 +88,24 @@ namespace UNV{
     }
     return atof (number.c_str());
   }
+  
+  /**
+   * @returns \p false when file is incorrect, \p true otherwise.
+   * Check file with name \p theFileName for correct terminate
+   * string, i.e. the next to the last line is equal to "    -1",
+   */
+  inline bool check_file(const std::string theFileName)
+  {
+    std::ifstream in_stream(theFileName.c_str());
+    if (!in_stream)
+      return false;
+    std::string olds, news;
+    while (!in_stream.eof()){
+      olds = news;
+      std::getline(in_stream, news, '\n');
+    }
+    return (olds == "    -1");
+  }
 
 };