[DEV] add internal tool to get the list of availlable drive in Windows
This commit is contained in:
parent
dd40b60744
commit
90ca5dd976
@ -38,6 +38,59 @@ extern "C" {
|
|||||||
#define TK_DBG_MODE TK_VERBOSE
|
#define TK_DBG_MODE TK_VERBOSE
|
||||||
//#define TK_DBG_MODE TK_DEBUG
|
//#define TK_DBG_MODE TK_DEBUG
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __TARGET_OS__Windows
|
||||||
|
static std::vector<std::string> getListDrive() {
|
||||||
|
std::vector<std::string> out;
|
||||||
|
int dr_type=99;
|
||||||
|
char dr_avail[4096];
|
||||||
|
char *temp=dr_avail;
|
||||||
|
/* 1st we fill the buffer */
|
||||||
|
GetLogicalDriveStrings(4096,dr_avail);
|
||||||
|
while(*temp != 0) {
|
||||||
|
dr_type=GetDriveType(temp);
|
||||||
|
std::string driveName = etk::replace(std::string(temp), '\\', '/');
|
||||||
|
switch(dr_type) {
|
||||||
|
case 0: // Unknown
|
||||||
|
TK_WARNING("'" << driveName << "' : Unknown Drive type");
|
||||||
|
break;
|
||||||
|
case 1: // Invalid
|
||||||
|
TK_WARNING("'" << driveName << "' : Drive is invalid");
|
||||||
|
break;
|
||||||
|
case 2: // Removable Drive
|
||||||
|
TK_WARNING("'" << driveName << "' : Removable Drive type");
|
||||||
|
out.push_back(driveName);
|
||||||
|
break;
|
||||||
|
case 3: // Fixed
|
||||||
|
TK_WARNING("'" << driveName << "' : Hard Disk (Fixed) Drive type");
|
||||||
|
out.push_back(driveName);
|
||||||
|
break;
|
||||||
|
case 4: // Remote
|
||||||
|
TK_WARNING("'" << driveName << "' : Remote (Network) Drive type");
|
||||||
|
out.push_back(driveName);
|
||||||
|
break;
|
||||||
|
case 5: // CDROM
|
||||||
|
TK_WARNING("'" << driveName << "' : CD-Rom/DVD-Rom Drive type");
|
||||||
|
out.push_back(driveName);
|
||||||
|
break;
|
||||||
|
case 6: // RamDrive
|
||||||
|
TK_WARNING("'" << driveName << "' : Ram Drive type");
|
||||||
|
out.push_back(driveName);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
temp += lstrlen(temp) + 1; // incriment the buffer
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static std::vector<std::string> getListDrive() {
|
||||||
|
std::vector<std::string> out;
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::string etk::simplifyPath(std::string _input) {
|
std::string etk::simplifyPath(std::string _input) {
|
||||||
// step 1 : for windows change \ in /:
|
// step 1 : for windows change \ in /:
|
||||||
TK_DEBUG("Simplify(1) : '" << _input << "'");
|
TK_DEBUG("Simplify(1) : '" << _input << "'");
|
||||||
@ -1513,6 +1566,13 @@ std::ostream& etk::operator <<(std::ostream &_os, const enum etk::typeNode &_obj
|
|||||||
Folder specific :
|
Folder specific :
|
||||||
*/
|
*/
|
||||||
int64_t etk::FSNode::folderCount() {
|
int64_t etk::FSNode::folderCount() {
|
||||||
|
#ifdef __TARGET_OS__Windows
|
||||||
|
/*
|
||||||
|
if (m_systemFileName.size() == 0) {
|
||||||
|
return getListDrive().size();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
int64_t counter=0;
|
int64_t counter=0;
|
||||||
DIR *dir = nullptr;
|
DIR *dir = nullptr;
|
||||||
struct dirent *ent = nullptr;
|
struct dirent *ent = nullptr;
|
||||||
@ -1547,6 +1607,17 @@ std::vector<etk::FSNode *> etk::FSNode::folderGetSubList(bool _showHidenFile, bo
|
|||||||
std::vector<etk::FSNode *> etk::FSNode::folderGetSubList(bool _showHidenFile, bool _getFolderAndOther, bool _getFile, const std::string& _filter) {
|
std::vector<etk::FSNode *> etk::FSNode::folderGetSubList(bool _showHidenFile, bool _getFolderAndOther, bool _getFile, const std::string& _filter) {
|
||||||
TK_TODO("implement filter ... ");
|
TK_TODO("implement filter ... ");
|
||||||
std::vector<etk::FSNode*> tmpp;
|
std::vector<etk::FSNode*> tmpp;
|
||||||
|
#ifdef __TARGET_OS__Windows
|
||||||
|
/*
|
||||||
|
if (m_systemFileName.size() == 0) {
|
||||||
|
std::vector<std::string> listDrive = getListDrive();
|
||||||
|
for (auto &it : listDrive) {
|
||||||
|
tmpp.push_back(new etk::FSNode(it));
|
||||||
|
}
|
||||||
|
return tmpp;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
// regenerate the next list :
|
// regenerate the next list :
|
||||||
etk::FSNode * tmpEmement = nullptr;
|
etk::FSNode * tmpEmement = nullptr;
|
||||||
if (m_typeNode != etk::typeNode_folder ) {
|
if (m_typeNode != etk::typeNode_folder ) {
|
||||||
@ -1648,6 +1719,13 @@ std::vector<etk::FSNode *> etk::FSNode::folderGetSubList(bool _showHidenFile, bo
|
|||||||
|
|
||||||
std::vector<std::string> etk::FSNode::folderGetSub(bool _getFolder, bool _getFile, const std::string& _filter) {
|
std::vector<std::string> etk::FSNode::folderGetSub(bool _getFolder, bool _getFile, const std::string& _filter) {
|
||||||
TK_TODO("implement filter ... ");
|
TK_TODO("implement filter ... ");
|
||||||
|
#ifdef __TARGET_OS__Windows
|
||||||
|
/*
|
||||||
|
if (m_systemFileName.size() == 0) {
|
||||||
|
return getListDrive();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
std::vector<std::string> out;
|
std::vector<std::string> out;
|
||||||
// regenerate the next list :
|
// regenerate the next list :
|
||||||
etk::FSNode * tmpEmement = nullptr;
|
etk::FSNode * tmpEmement = nullptr;
|
||||||
@ -1666,7 +1744,7 @@ std::vector<std::string> etk::FSNode::folderGetSub(bool _getFolder, bool _getFil
|
|||||||
if (FolderName[FolderName.size()-1] != '/') {
|
if (FolderName[FolderName.size()-1] != '/') {
|
||||||
FolderName += "/";
|
FolderName += "/";
|
||||||
}
|
}
|
||||||
for (size_t iii=0; iii<s_APKArchive->size(); iii++) {
|
for (int32_t iii=0; iii<s_APKArchive->size(); iii++) {
|
||||||
std::string filename = s_APKArchive->getName(iii);
|
std::string filename = s_APKArchive->getName(iii);
|
||||||
if (start_with(filename, FolderName) == true) {
|
if (start_with(filename, FolderName) == true) {
|
||||||
std::string tmpString(filename, FolderName.size());
|
std::string tmpString(filename, FolderName.size());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user