mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 17:00:34 +05:00
Fix the problem with saving a file with several meshes under Windows.
This commit is contained in:
parent
eb7803d480
commit
20d7486abe
@ -28,6 +28,10 @@
|
||||
#include <med_err.h>
|
||||
#include <med_proto.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#include <boost/version.hpp>
|
||||
|
||||
#ifdef _DEBUG_
|
||||
@ -100,6 +104,23 @@ namespace MED
|
||||
{
|
||||
if (myCount++ == 0) {
|
||||
const char* aFileName = myFileName.c_str();
|
||||
#ifdef WIN32
|
||||
if (med_access_mode(theMode) == MED_ACC_RDWR) {
|
||||
// Force removing readonly attribute from a file under Windows, because of a bug in the HDF5
|
||||
std::string aReadOlnyRmCmd = "attrib -r \"" + myFileName + "\"> nul 2>&1";
|
||||
#ifdef UNICODE
|
||||
const char* to_decode = aReadOlnyRmCmd.c_str();
|
||||
int size_needed = MultiByteToWideChar(CP_UTF8, 0, to_decode, strlen(to_decode), NULL, 0);
|
||||
wchar_t* awReadOlnyRmCmd = new wchar_t[size_needed + 1];
|
||||
MultiByteToWideChar(CP_UTF8, 0, to_decode, strlen(to_decode), awReadOlnyRmCmd, size_needed);
|
||||
awReadOlnyRmCmd[size_needed] = '\0';
|
||||
_wsystem(awReadOlnyRmCmd);
|
||||
delete[] awReadOlnyRmCmd;
|
||||
#else
|
||||
system(aReadOlnyRmCmd.c_str());
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
myFid = MEDfileVersionOpen(aFileName,med_access_mode(theMode), myMajor, myMinor, MED_RELEASE_NUM);
|
||||
}
|
||||
if (theErr)
|
||||
|
Loading…
Reference in New Issue
Block a user