#include <sys/time.h>
#include <sys/stat.h>
#include <sys/types.h>
-#include <iostream.h>
-#include <fstream.h>
#include <pwd.h>
#include <unistd.h>
#else
#include <lmcons.h>
#endif
+#include <iostream>
+#include <fstream>
#include <stdlib.h>
#include <SALOMEconfig.h>
// purpose : Removes files listed in theFileList
//============================================================================
void SALOMEDS_Tool::RemoveTemporaryFiles(const std::string& theDirectory,
- const SALOMEDS::ListOfFileNames& theFiles,
- const bool IsDirDeleted)
+ const SALOMEDS::ListOfFileNames& theFiles,
+ const bool IsDirDeleted)
{
string aDirName = theDirectory;
if(IsDirDeleted) {
if(Exists(aDirName)) {
#ifdef WNT
- RemoveDirectory(aDireName.c_str());
+ RemoveDirectory(aDirName.c_str());
#else
rmdir(aDirName.c_str());
#endif
namespace
{
SALOMEDS::TMPFile*
- PutFilesToStream(const std::string& theFromDirectory,
- const SALOMEDS::ListOfFileNames& theFiles,
- const SALOMEDS::ListOfFileNames& theFileNames,
- const int theNamesOnly)
+ PutFilesToStream(const std::string& theFromDirectory,
+ const SALOMEDS::ListOfFileNames& theFiles,
+ const SALOMEDS::ListOfFileNames& theFileNames,
+ const int theNamesOnly)
{
int i, aLength = theFiles.length();
if(aLength == 0)
return (new SALOMEDS::TMPFile);
-
+
//Get a temporary directory for saved a file
string aTmpDir = theFromDirectory;
-
+
long aBufferSize = 0;
long aCurrentPos;
-
+
int aNbFiles = 0;
int* aFileNameSize= new int[aLength];
long* aFileSize= new long[aLength];
-
+
//Determine the required size of the buffer
-
+
for(i=0; i<aLength; i++) {
-
+
//Check if the file exists
-
+
if (!theNamesOnly) { // mpv 15.01.2003: if only file names must be stroed, then size of files is zero
- string aFullPath = aTmpDir + const_cast<char*>(theFiles[i].in());
- if(!Exists(aFullPath)) continue;
+ string aFullPath = aTmpDir + const_cast<char*>(theFiles[i].in());
+ if(!Exists(aFullPath)) continue;
#ifdef WNT
- ifstream aFile(aFullPath.c_str(), ios::binary);
+ ifstream aFile(aFullPath.c_str(), ios::binary);
#else
- ifstream aFile(aFullPath.c_str());
+ ifstream aFile(aFullPath.c_str());
#endif
- aFile.seekg(0, ios::end);
- aFileSize[i] = aFile.tellg();
- aBufferSize += aFileSize[i]; //Add a space to store the file
+ aFile.seekg(0, ios::end);
+ aFileSize[i] = aFile.tellg();
+ aBufferSize += aFileSize[i]; //Add a space to store the file
}
aFileNameSize[i] = strlen(theFileNames[i])+1;
aBufferSize += aFileNameSize[i]; //Add a space to store the file name
// 8 bytes: length of the file itself
aNbFiles++;
}
-
+
aBufferSize += 4; //4 bytes for a number of the files that will be written to the stream;
unsigned char* aBuffer = new unsigned char[aBufferSize];
if(aBuffer == NULL)
return (new SALOMEDS::TMPFile);
-
+
//Initialize 4 bytes of the buffer by 0
memset(aBuffer, 0, 4);
//Copy the number of files that will be written to the stream
memcpy(aBuffer, &aNbFiles, ((sizeof(int) > 4) ? 4 : sizeof(int)));
-
-
+
+
aCurrentPos = 4;
-
+
for(i=0; i<aLength; i++) {
ifstream *aFile;
if (!theNamesOnly) { // mpv 15.01.2003: we don't open any file if theNamesOnly = true
- string aFullPath = aTmpDir + const_cast<char*>(theFiles[i].in());
- if(!Exists(aFullPath)) continue;
+ string aFullPath = aTmpDir + const_cast<char*>(theFiles[i].in());
+ if(!Exists(aFullPath)) continue;
#ifdef WNT
- aFile = new ifstream(aFullPath.c_str(), ios::binary);
+ aFile = new ifstream(aFullPath.c_str(), ios::binary);
#else
- aFile = new ifstream(aFullPath.c_str());
+ aFile = new ifstream(aFullPath.c_str());
#endif
}
//Initialize 4 bytes of the buffer by 0
//Copy the length of the file name to the buffer
memcpy((aBuffer + aCurrentPos), (aFileNameSize + i), ((sizeof(int) > 4) ? 4 : sizeof(int)));
aCurrentPos += 4;
-
+
//Copy the file name to the buffer
memcpy((aBuffer + aCurrentPos), theFileNames[i], aFileNameSize[i]);
aCurrentPos += aFileNameSize[i];
-
+
if (!theNamesOnly) { // mpv 15.01.2003: we don't copy file content to the buffer if !theNamesOnly
- //Initialize 8 bytes of the buffer by 0
- memset((aBuffer + aCurrentPos), 0, 8);
- //Copy the length of the file to the buffer
- memcpy((aBuffer + aCurrentPos), (aFileSize + i), ((sizeof(long) > 8) ? 8 : sizeof(long)));
- aCurrentPos += 8;
-
- aFile->seekg(0, ios::beg);
- aFile->read((char *)(aBuffer + aCurrentPos), aFileSize[i]);
- aFile->close();
- delete(aFile);
- aCurrentPos += aFileSize[i];
+ //Initialize 8 bytes of the buffer by 0
+ memset((aBuffer + aCurrentPos), 0, 8);
+ //Copy the length of the file to the buffer
+ memcpy((aBuffer + aCurrentPos), (aFileSize + i), ((sizeof(long) > 8) ? 8 : sizeof(long)));
+ aCurrentPos += 8;
+
+ aFile->seekg(0, ios::beg);
+ aFile->read((char *)(aBuffer + aCurrentPos), aFileSize[i]);
+ aFile->close();
+ delete(aFile);
+ aCurrentPos += aFileSize[i];
}
}
-
+
delete[] aFileNameSize;
delete[] aFileSize;
-
-
+
+
CORBA::Octet* anOctetBuf = (CORBA::Octet*)aBuffer;
-
+
return (new SALOMEDS::TMPFile(aBufferSize, aBufferSize, anOctetBuf, 1));
}
-
+
}
SALOMEDS::TMPFile*
SALOMEDS_Tool::PutFilesToStream(const std::string& theFromDirectory,
- const SALOMEDS::ListOfFileNames& theFiles,
- const int theNamesOnly)
+ const SALOMEDS::ListOfFileNames& theFiles,
+ const int theNamesOnly)
{
SALOMEDS::ListOfFileNames aFileNames(theFiles);
return ::PutFilesToStream(theFromDirectory,theFiles,aFileNames,theNamesOnly);
SALOMEDS::TMPFile*
SALOMEDS_Tool::PutFilesToStream(const SALOMEDS::ListOfFileNames& theFiles,
- const SALOMEDS::ListOfFileNames& theFileNames)
+ const SALOMEDS::ListOfFileNames& theFileNames)
{
return ::PutFilesToStream("",theFiles,theFileNames,0);
}
//============================================================================
SALOMEDS::ListOfFileNames_var
SALOMEDS_Tool::PutStreamToFiles(const SALOMEDS::TMPFile& theStream,
- const std::string& theToDirectory,
- const int theNamesOnly)
+ const std::string& theToDirectory,
+ const int theNamesOnly)
{
SALOMEDS::ListOfFileNames_var aFiles = new SALOMEDS::ListOfFileNames;
//Put a file name to aFileName
memcpy(aFileName, (aBuffer + aCurrentPos), aFileNameSize);
aCurrentPos += aFileNameSize;
-
+
//Put a length of the file to aFileSize
if (!theNamesOnly) {
memcpy(&aFileSize, (aBuffer + aCurrentPos), ((sizeof(long) > 8) ? 8 : sizeof(long)));
aCurrentPos += 8;
-
+
string aFullPath = aTmpDir + aFileName;
#ifdef WNT
ofstream aFile(aFullPath.c_str(), ios::binary);
pos = aPath.rfind('.');
if(pos > 0) aPath = aPath.substr(0, pos); //Remove extension
-
+
return aPath;
}
if(path.empty()) {
path = thePath+"/";
}
-
+
#ifdef WNT //Check if the only disk letter is given as path
- if(path.size() == 2 && path[1] == ":") path +='\\';
+ if(path.size() == 2 && path[1] == ':') path +='\\';
#endif
for(int i = 0, len = path.size(); i<len; i++)
// Purpose : Retrieve specified flaf from "AttributeFlags" attribute
//=======================================================================
bool SALOMEDS_Tool::GetFlag( const int theFlag,
- SALOMEDS::Study_var theStudy,
- SALOMEDS::SObject_var theObj )
+ SALOMEDS::Study_var theStudy,
+ SALOMEDS::SObject_var theObj )
{
SALOMEDS::GenericAttribute_var anAttr;
if ( !theObj->_is_nil() && theObj->FindAttribute( anAttr, "AttributeFlags" ) )
// Purpose : Set/Unset specified flaf from "AttributeFlags" attribute
//=======================================================================
bool SALOMEDS_Tool::SetFlag( const int theFlag,
- SALOMEDS::Study_var theStudy,
- const std::string& theEntry,
- const bool theValue )
+ SALOMEDS::Study_var theStudy,
+ const std::string& theEntry,
+ const bool theValue )
{
SALOMEDS::SObject_var anObj = theStudy->FindObjectID(theEntry.c_str());
// If theObj is null all objects of study are returned
//=======================================================================
void SALOMEDS_Tool::GetAllChildren( SALOMEDS::Study_var theStudy,
- SALOMEDS::SObject_var theObj,
- std::list<SALOMEDS::SObject_var>& theList )
+ SALOMEDS::SObject_var theObj,
+ std::list<SALOMEDS::SObject_var>& theList )
{
if ( theObj->_is_nil() )
{