Salome HOME
Merge branch 'master' of https://codev-tuleap.cea.fr/plugins/git/salome/medcoupling
[tools/medcoupling.git] / src / MEDLoader / MEDLoaderBase.cxx
index e35e58563c7aeeb82c49aa410b4e8b1dba733f91..b2f8fd78a5e53b3cf84b2559bff8811449dbf451 100644 (file)
@@ -1,9 +1,9 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 const char MEDLoaderBase::WHITE_SPACES[]=" \n";
 
-int MEDLoaderBase::getStatusOfFile(const char *fileName)
+int MEDLoaderBase::getStatusOfFile(const std::string& fileName)
 {
   std::ifstream ifs;
-  ifs.open(fileName);
+  ifs.open(fileName.c_str());
   if((ifs.rdstate() & std::ifstream::failbit)!=0)
     {
       ifs.close();
       return NOT_EXIST;
     }
-  std::ofstream ofs(fileName,std::ios_base::app);
+  std::ofstream ofs(fileName.c_str(),std::ios_base::app);
   if((ofs.rdstate() & std::ofstream::failbit)!=0)
     {
       return EXIST_RDONLY;
@@ -89,7 +89,7 @@ std::string MEDLoaderBase::buildUnionUnit(const char *name, int nameLgth, const
 {
   std::string ret(buildStringFromFortran(name,nameLgth));
   std::string unitCpp(buildStringFromFortran(unit,unitLgth));
-  if(unitCpp[0]=='\0')
+  if(unitCpp.empty() || unitCpp[0]=='\0')
     return ret;
   ret+=" [";
   ret+=unitCpp;
@@ -130,7 +130,7 @@ void MEDLoaderBase::strip(std::string& s)
 
 /*!
  * This method operates a safe copy from 'src' to 'dest' by checking the size of 'src' before trying to copy.
- * If size of 'src' string is higher than 'maxLgth' the behaviour is dependant from 'behaviour' parameter.
+ * If size of 'src' string is higher than 'maxLgth' the behaviour is dependent from 'behaviour' parameter.
  * If 'behaviour' equals 0 an exception is thrown. If 'behaviour' equals 1 an attempt of zipping of string will be done
  * ( see zipString to have more details).
  */
@@ -177,7 +177,8 @@ void MEDLoaderBase::safeStrCpy2(const char *src, int maxLgth, char *dest, int be
           return ;
         }
     }
-  int n=strlen(src);
+  int n(strlen(src));
+  std::fill(dest,dest+maxLgth,' ');
   strncpy(dest,src,n);
 }
 
@@ -199,7 +200,7 @@ std::string MEDLoaderBase::buildStringFromFortran(const char *expr, int lgth)
  * This method given the target size to respect 'sizeToRespect' tries to reduce size of 'src' string.
  * This method uses several soft methods to do its job. But if it fails a simple cut of string will be performed.
  */
-std::string MEDLoaderBase::zipString(const char *src, int sizeToRespect)
+std::string MEDLoaderBase::zipString(const std::string& src, int sizeToRespect)
 {
   std::string s(src);
   strip(s);