From 72db49afe96aad453c46dfe59f9daa6fa7dc31f1 Mon Sep 17 00:00:00 2001
From: Xavier Robin <xavier.robin@unibas.ch>
Date: Thu, 21 Dec 2023 10:59:39 +0100
Subject: [PATCH] Improve error message

---
 modules/io/src/mol/star_writer.cc | 18 +++++++++---------
 modules/io/src/mol/star_writer.hh |  1 -
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/modules/io/src/mol/star_writer.cc b/modules/io/src/mol/star_writer.cc
index 327d00563..1a017e934 100644
--- a/modules/io/src/mol/star_writer.cc
+++ b/modules/io/src/mol/star_writer.cc
@@ -21,29 +21,29 @@
 
 namespace ost{ namespace io{
 
-StarWriter::StarWriter(std::ostream& stream): filename_("<stream>"),
-                                              file_open_(true) {
+StarWriter::StarWriter(std::ostream& stream): filename_("<stream>") {
   if(!stream) {
-    file_open_ = false;
+    std::stringstream ss;
+    ss << "Cannot open stream: [Errno " << errno << "] "
+       << strerror(errno) << std::endl;
+    throw IOException(ss.str());
   }
   stream_.push(stream);
 }
 
 
 StarWriter::StarWriter(const String& filename): filename_(filename),
-                                                file_open_(true),
                                                 fstream_(filename.c_str()) {
   if (!fstream_) {
-    file_open_ = false;
+    std::stringstream ss;
+    ss << "Cannot open " << filename_ << ": [Errno " << errno << "] "
+       << strerror(errno) << std::endl;
+    throw IOException(ss.str());
   }
   stream_.push(fstream_);
 }
 
 void StarWriter::Write(const String& data_name) {
-  if (!file_open_) {
-    throw IOException("yolo");
-  }
-
   // write data header
   stream_ << "data_" << data_name << std::endl;
 
diff --git a/modules/io/src/mol/star_writer.hh b/modules/io/src/mol/star_writer.hh
index 3ef9c64c0..41e6fbfa8 100644
--- a/modules/io/src/mol/star_writer.hh
+++ b/modules/io/src/mol/star_writer.hh
@@ -296,7 +296,6 @@ public:
   void Write(const String& data_name);
 private:
   String filename_;
-  bool file_open_;
   std::ofstream fstream_;
   boost::iostreams::filtering_stream<boost::iostreams::output> stream_;
   std::vector<StarWriterObjectPtr> categories_to_write_;
-- 
GitLab