Commit f0d40796afe07df3a350f609d0f08874137ca0a1

Authored by Jürgen Knödlseder
1 parent 7b96c7eb

Correct file existing checking.

The file existence checking is not to be done in GUrlFile as this class may create a new file. The check needs to be done in GXml.
src/support/GUrlFile.cpp
... ... @@ -211,11 +211,6 @@ void GUrlFile::open(const std::string& url, const std::string& mode)
211 211 // Expand environment variables
212 212 std::string filename = gammalib::expand_env(url);
213 213  
214   - // Check if file exists
215   - if (!gammalib::file_exists(filename)) {
216   - throw GException::file_open_error(G_OPEN, filename);
217   - }
218   -
219 214 // Try opening file. Throw an exception if opening failed.
220 215 m_fptr = std::fopen(filename.c_str(), mode.c_str());
221 216 if (m_fptr == NULL) {
... ...
src/xml/GXml.cpp
... ... @@ -517,8 +517,16 @@ const GXmlElement* GXml::element(const std::string& name, const int& index) cons
517 517 ***************************************************************************/
518 518 void GXml::load(const std::string& filename)
519 519 {
  520 + // Expand environment variables
  521 + std::string fname = gammalib::expand_env(filename);
  522 +
  523 + // Check if file exists
  524 + if (!gammalib::file_exists(fname)) {
  525 + throw GException::file_open_error(G_LOAD, fname);
  526 + }
  527 +
520 528 // Open XML URL as file for reading
521   - GUrlFile url(filename.c_str(), "r");
  529 + GUrlFile url(fname.c_str(), "r");
522 530  
523 531 // Read XML document from URL
524 532 read(url);
... ...