[DEBUG] corect init of home folder and basei double / in path

This commit is contained in:
Edouard DUPIN 2018-08-24 22:41:20 +02:00
parent 056734e5fe
commit 21601649df
2 changed files with 52 additions and 16 deletions

View File

@ -36,7 +36,7 @@ extern "C" {
#endif
#define TK_DBG_MODE TK_VERBOSE
//#define TK_DBG_MODE TK_DEBUG
//#define TK_DBG_MODE TK_WARNING
ETK_DECLARE_TYPE(etk::FSNode);
@ -317,7 +317,7 @@ etk::String etk::FSNodeGetApplicationPath() {
}
etk::String etk::FSNodeGetHomePath() {
return baseFolderHome;
return etk::getUserHomeFolder();
}
#ifdef HAVE_ZIP_DATA
@ -503,11 +503,12 @@ etk::String getApplicationPath() {
return binaryName;
}
void etk::initDefaultFolder(const char* _applName) {
baseApplName = _applName;
char cCurrentPath[FILENAME_MAX];
static bool initHomeFolder() {
static bool isInit = false;
if (isInit == false) {
TK_DBG_MODE("Real Ini Home folder:");
char * basicPath = getenv("HOME");
if (null == basicPath) {
if (basicPath == null) {
TK_WARNING("ERROR while trying to get the path of the home folder");
#if defined(__TARGET_OS__Windows)
baseFolderHome = "c:/";
@ -519,6 +520,16 @@ void etk::initDefaultFolder(const char* _applName) {
} else {
baseFolderHome = basicPath;
}
TK_DBG_MODE(" home=:" << baseFolderHome);
isInit = true;
}
return isInit;
}
void etk::initDefaultFolder(const char* _applName) {
baseApplName = _applName;
char cCurrentPath[FILENAME_MAX];
initHomeFolder();
if (!getcwd(cCurrentPath, FILENAME_MAX)) {
baseRunPath = ".";
baseRunPathInHome = ".";
@ -662,6 +673,7 @@ void etk::initDefaultFolder(const char* _applName) {
}
etk::String etk::getUserHomeFolder() {
initHomeFolder();
return baseFolderHome;
}
@ -1085,8 +1097,13 @@ void etk::FSNode::generateFileSystemPath() {
&& m_systemFileName[m_systemFileName.size()-1] != '/') {
m_systemFileName += '/';
}
if ( m_userFileName.size()>0
&& m_userFileName[0] == '/') {
m_systemFileName += &m_userFileName[1];
} else {
m_systemFileName += m_userFileName;
}
}
}

View File

@ -11,6 +11,25 @@
#include <etk/os/FSNode.hpp>
#define NAME "FSNode"
TEST(TestEtkFSNode, checkHomePath) {
etk::String homePath = etk::FSNodeGetHomePath();
EXPECT_EQ(homePath, "/home/heero");
etk::FSNode myNodeTest1("HOME:filePresent.txt");
EXPECT_EQ(myNodeTest1.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest1.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest1.getNameFolder(), "/home/heero");
etk::FSNode myNodeTest2("HOME:/filePresent.txt");
EXPECT_EQ(myNodeTest2.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest2.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest2.getNameFolder(), "/home/heero");
etk::FSNode myNodeTest3("~/filePresent.txt");
EXPECT_EQ(myNodeTest3.getNameFile(), "filePresent.txt");
EXPECT_EQ(myNodeTest3.getFileSystemName(), homePath + "/filePresent.txt");
EXPECT_EQ(myNodeTest3.getNameFolder(), "/home/heero");
}
TEST(TestEtkFSNode, checkDATAFilePresent) {
etk::String fileName("DATA:filePresent.txt");
etk::FSNode myNodeTest1(fileName);