void InRescanRomsFirstFunc(XUIMessage *pMsg, InRescanRomsStruct* pData, char *szPath) { XuiMessage(pMsg,XM_MESSAGE_ON_RESCAN_ROMS); _XuiMessageExtra(pMsg,(XUIMessageData*) pData, sizeof(*pData)); }
vector<string> FileBrowser::GetFolderList() { vector<string> retVal; if(m_CurrentFolder.size()==0) { //List Drives retVal.push_back("Game:"); if (SETTINGS::getInstance().getSambaClientOn()) retVal.push_back("smb:"); std::vector<Drive* const> mountedDrives; DrivesManager::getInstance().getMountedDrives(&mountedDrives); for(unsigned int x=0;x<mountedDrives.size();x++) { retVal.push_back(mountedDrives[x]->GetCleanDriveName() + ":"); } return retVal; } else { retVal.push_back(".."); string path = GetCurrentPath(); if (path.substr(0,4).compare("smb:") == 0) { map<string, unsigned int> m_SambaTypes; int dir; if (path.length() == 5) { if (SambaClient::getInstance().m_SambaTopLevelTypes.size() > 0) { for (map<string, unsigned int>::const_iterator it = SambaClient::getInstance().m_SambaTopLevelTypes.begin(); it != SambaClient::getInstance().m_SambaTopLevelTypes.end(); ++it) { retVal.push_back(it->first); } return retVal; } } path.append("/"); if ((dir = smbc_opendir(path.c_str())) < 0) { DebugMsg("FileBrowser", "Could not open directory [%s] (%d:%s)\n", path.c_str(), errno, strerror(errno)); if (errno == 13) { // permission denied string user; string password; string share; string rawpath = GetRawSmbPath(user, password, share); XUIMessage xuiMsg; XuiMessage(&xuiMsg, XM_SMB_PERMISSION_DENIED); Credentials * cred = new Credentials(); _XuiMessageExtra(&xuiMsg,(XUIMessageData*) cred, sizeof(*cred)); cred->smbPath = rawpath; cred->user = user; cred->password = password; cred->share = share; XuiSendMessage( parentScene , &xuiMsg ); } return retVal; } struct smbc_dirent * dirent; while ((dirent = smbc_readdir(dir)) != NULL) { if (dirent->smbc_type != SMBC_WORKGROUP && dirent->smbc_type != SMBC_SERVER && dirent->smbc_type != SMBC_FILE_SHARE && dirent->smbc_type != SMBC_DIR) continue; if (strcmp(dirent->name, ".") == 0 || strcmp(dirent->name, "..") == 0) continue; if (hasEnding(dirent->name, "$")) continue; if (m_CurrentFolder.size() == 1) { SambaClient::getInstance().m_SambaTopLevelTypes[dirent->name] = dirent->smbc_type; } // filter ourselves out of the list of servers if (SETTINGS::getInstance().getSambaServerOn() && CFreestyleApp::getInstance().hasInternetConnection()) { if (m_CurrentFolder.size() == 2) { string wrkgroup = SETTINGS::getInstance().getSambaClientWorkgroup(); if (stricmp(wrkgroup.c_str(), m_CurrentFolder[1].c_str()) == 0) { string hostname = SETTINGS::getInstance().getHostname(); if (stricmp(hostname.c_str(), dirent->name) == 0) continue; } } } retVal.push_back(dirent->name); } // if (m_CurrentFolder.size() == 1) { // m_SambaTopLevelTypes = m_SambaTypes; // //m_CurrentFolderSambaTypes.push_back(m_SambaTypes); // } smbc_closedir(dir); return retVal; } WIN32_FIND_DATA findFileData; memset(&findFileData,0,sizeof(WIN32_FIND_DATA)); string searchcmd = GetCurrentPath() + "\\*"; HANDLE hFind = FindFirstFile(searchcmd.c_str(), &findFileData); if (hFind == INVALID_HANDLE_VALUE) return retVal; do { string s = findFileData.cFileName; if(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { retVal.push_back(s); } } while (FindNextFile(hFind, &findFileData)); FindClose(hFind); return retVal; } }