From 9ef5b8a061169f756a75d77e2712bf5bb4a07ecf Mon Sep 17 00:00:00 2001 From: Xavier Robin Date: Fri, 29 May 2026 15:25:27 +0200 Subject: [PATCH] Show error message upon error opening log file --- src/CifFile.C | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/CifFile.C b/src/CifFile.C index ede03e5..5e0772b 100644 --- a/src/CifFile.C +++ b/src/CifFile.C @@ -17,8 +17,11 @@ #include #include #include +#include +#include #include "GenString.h" +#include "Exceptions.h" #include "RcsbFile.h" #include "CifString.h" #include "regex.h" @@ -306,6 +309,14 @@ int CifFile::DataChecking(CifFile& ref, const string& diagFileName, ofstream log; log.open(diagFileName.c_str(), ios::out | ios::app); + if (!log.is_open() || log.fail()) + { + string msg = "Unable to open diagnostic log file \"" + diagFileName + "\""; + if (errno != 0) + msg += ": " + string(strerror(errno)); + throw FileException(msg, "CifFile::DataChecking"); + } + vector refBlockNames; ref.GetBlockNames(refBlockNames); @@ -344,6 +355,14 @@ int CifFile::DataChecking(CifFile& ref, const string& diagFileName, } } + if (log.fail()) + { + string msg = "Unable to write diagnostic log file \"" + diagFileName + "\""; + if (errno != 0) + msg += ": " + string(strerror(errno)); + throw FileException(msg, "CifFile::DataChecking"); + } + if (RcsbFile::IsEmpty(log)) { log.close();