-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// 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
#include <iterator>
#include <sstream>
+#include "Basics_DirUtils.hxx"
+#include "Basics_Utils.hxx"
+
#include "SALOMEDSImpl_Tool.hxx"
#ifndef WIN32
bool SALOMEDS_Exists(const std::string thePath)
{
-#ifdef WIN32
- if ( GetFileAttributes ( thePath.c_str() ) == 0xFFFFFFFF ) {
- if ( GetLastError () == ERROR_FILE_NOT_FOUND ) {
- return false;
- }
- }
-#else
- int status = access ( thePath.c_str() , F_OK );
- if (status != 0) return false;
-#endif
- return true;
+ return Kernel_Utils::IsExists( thePath );
}
-
-
-
//============================================================================
// function : GetTempDir
-// purpose : Return a temp directory to store created files like "/tmp/sub_dir/"
-//============================================================================
+// purpose : Return a temp directory to store created files like "/tmp/sub_dir/"
+//============================================================================
std::string SALOMEDSImpl_Tool::GetTmpDir()
{
- //Find a temporary directory to store a file
-
- std::string aTmpDir;
-
- char *Tmp_dir = getenv("SALOME_TMP_DIR");
- if(Tmp_dir != NULL) {
- aTmpDir = std::string(Tmp_dir);
-#ifdef WIN32
- if(aTmpDir[aTmpDir.size()-1] != '\\') aTmpDir+='\\';
-#else
- if(aTmpDir[aTmpDir.size()-1] != '/') aTmpDir+='/';
-#endif
- }
- else {
-#ifdef WIN32
- aTmpDir = std::string("C:\\");
-#else
- aTmpDir = std::string("/tmp/");
-#endif
- }
-
- srand((unsigned int)time(NULL));
- int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
- char buffer[127];
- sprintf(buffer, "%d", aRND);
- std::string aSubDir(buffer);
- if(aSubDir.size() <= 1) aSubDir = std::string("123409876");
-
- aTmpDir += aSubDir; //Get RND sub directory
-
- std::string aDir = aTmpDir;
-
- if(SALOMEDS_Exists(aDir)) {
- for(aRND = 0; SALOMEDS_Exists(aDir); aRND++) {
- sprintf(buffer, "%d", aRND);
- aDir = aTmpDir+buffer; //Build a unique directory name
- }
- }
-
-#ifdef WIN32
- if(aDir[aTmpDir.size()-1] != '\\') aDir+='\\';
-#else
- if(aDir[aTmpDir.size()-1] != '/') aDir+='/';
-#endif
-
-
-#ifdef WIN32
- CreateDirectory(aDir.c_str(), NULL);
-#else
- mkdir(aDir.c_str(), 0x1ff);
-#endif
-
- return aDir;
+ return Kernel_Utils::GetTmpDirByEnv("SALOME_TMP_DIR");
}
//============================================================================
// function : RemoveTemporaryFiles
// purpose : Removes files listed in theFileList
//============================================================================
-void SALOMEDSImpl_Tool::RemoveTemporaryFiles(const std::string& theDirectory,
+void SALOMEDSImpl_Tool::RemoveTemporaryFiles(const std::string& theDirectory,
const std::vector<std::string>& theFiles,
const bool IsDirDeleted)
{
std::string aDirName = theDirectory;
- int i, aLength = theFiles.size();
+ size_t i, aLength = theFiles.size();
for(i=1; i<=aLength; i++) {
std::string aFile(aDirName);
aFile += theFiles[i-1];
if(!SALOMEDS_Exists(aFile)) continue;
#ifdef WIN32
- DeleteFile(aFile.c_str());
+#if defined(UNICODE)
+ std::wstring aFileToDelete = Kernel_Utils::utf8_decode_s(aFile);
+#else
+ std::string aFileToDelete = aFile;
+#endif
+ DeleteFile( aFileToDelete.c_str() );
#else
unlink(aFile.c_str());
#endif
if(IsDirDeleted) {
if(SALOMEDS_Exists(aDirName)) {
#ifdef WIN32
- RemoveDirectory(aDirName.c_str());
+#if defined(UNICODE)
+ std::wstring aDirToDelete = Kernel_Utils::utf8_decode_s(aDirName);
+#else
+ std::string aDirToDelete = aDirName;
+#endif
+ RemoveDirectory(aDirToDelete.c_str());
#else
rmdir(aDirName.c_str());
#endif
//============================================================================
std::string SALOMEDSImpl_Tool::GetNameFromPath(const std::string& thePath) {
if (thePath.empty()) return "";
- int pos = thePath.rfind('/');
+ int pos = (int)thePath.rfind('/'); //TODO: conversion from size_t to int
if(pos >= 0) return thePath.substr(pos+1, thePath.size());
pos = thePath.rfind('\\');
if(pos >= 0) return thePath.substr(pos+1, thePath.size());
std::string path;
if (!thePath.empty()) {
- int pos = thePath.rfind('/');
+ int pos = (int)thePath.rfind('/'); //TODO: conversion from size_t to int
if (pos < 0) pos = thePath.rfind('\\');
if (pos < 0) pos = thePath.rfind('|');
{
std::vector<std::string> vs;
if(theValue[0] == separator && theValue.size() == 1) return vs;
- int pos = theValue.find(separator);
+ int pos = (int)theValue.find(separator); //TODO: conversion from size_t to int
if(pos < 0) {
vs.push_back(theValue);
return vs;
std::vector<std::string> treatRepetation(const std::string& theValue)
{
std::vector<std::string> aResult;
- int pos = theValue.find(";*=");
+ int pos = (int)theValue.find(";*="); //TODO: conversion from size_t to int
if(pos < 0 )
{
aResult.push_back(theValue);
{
std::vector<std::string> aResult;
if(theValue[0] == sep ) aResult.push_back(std::string());
- int pos = theValue.find(sep);
+ int pos = (int)theValue.find(sep); //TODO: conversion from size_t to int
if(pos < 0 ) {
if(sep == '|')
{
std::vector< std::vector<std::string> > aResult;
if(theValue.size() > 0) {
std::vector<std::string> aSections = splitStringWithEmpty( theValue, sep1 );
- for( int i = 0, n = aSections.size(); i < n; i++ )
+ for( size_t i = 0, n = aSections.size(); i < n; i++ )
aResult.push_back( splitStringWithEmpty( aSections[i], sep2 ) );
}
return aResult;
struct tm transfert;
struct timeval tval;
struct timezone tzone;
- int status;
+ //int status;
- status = gettimeofday( &tval, &tzone );
- memcpy(&transfert, localtime((time_t *)&tval.tv_sec), sizeof(tm));
+ /*status = */ gettimeofday( &tval, &tzone );
+ memcpy(&transfert, localtime((time_t *)&tval.tv_sec), sizeof(tm));
- month = transfert.tm_mon + 1;
- day = transfert.tm_mday;
- year = transfert.tm_year + 1900;
- hours = transfert.tm_hour;
- minutes = transfert.tm_min ;
- seconds = transfert.tm_sec ;
+ month = transfert.tm_mon + 1;
+ day = transfert.tm_mday;
+ year = transfert.tm_year + 1900;
+ hours = transfert.tm_hour;
+ minutes = transfert.tm_min ;
+ seconds = transfert.tm_sec ;
#endif
}
#endif
}
-
-
-
-
-