BOOL CMainFrame::doNewAddress(CString &text) { if (text!="") { text.TrimLeft(_T(" ")); text.TrimRight(_T(" ")); text.TrimRight(_T("\\")); if (text == _T("")) { SetLocalFolder(text, 0); return TRUE; } if (text.Right(1)==_T(":") ) { CFileStatus64 status; if (GetStatus64(text+"\\*.*", status)) { SetLocalFolder(text, 0); return TRUE; } else { AfxMessageBox(IDS_ERRORMSG_PATHNOTFOUND, MB_ICONEXCLAMATION); return FALSE; } } CFileStatus64 status; if (GetStatus64(text, status)) { if (!(status.m_attribute&0x10)){ AfxMessageBox(IDS_ERRORMSG_PATHNOTFOUND, MB_ICONEXCLAMATION); return FALSE; } else { CMainFrame *pMainFrame=DYNAMIC_DOWNCAST(CMainFrame,GetParentFrame()); MakeLong(text); pMainFrame->SetLocalFolder(text, 0); return TRUE; } } else{ AfxMessageBox(IDS_ERRORMSG_PATHNOTFOUND, MB_ICONEXCLAMATION); return FALSE; } } return FALSE; }
_int64 GetLength64(LPCTSTR filename) { WIN32_FILE_ATTRIBUTE_DATA data{}; if (!GetStatus64(filename, data) ) { return -1; } return GetLength64(data); }
void CMainFrame::SetLocalFolder(CString folder, int setaddress, int addCache) { folder.TrimRight( _T("\\") ); CString folder2=folder; folder+=_T("\\"); //MessageBox("hello"); if ( folder2!="" && folder2.Right(1)!=_T(":") ) { CFileStatus64 status; if (!GetStatus64(folder2, status) || !(status.m_attribute&0x10)) { if(setaddress) m_wndAddress.GetEditCtrl()->SetWindowText(GetDirView()->GetLocalFolder()); return; } } if(addCache) AddAddressCache(folder); if (GetFileView()->GetLocalFolder()!=folder) { GetFileView()->SetLocalFolder(folder); } // if (m_bShowTree) if (GetDirView()->GetLocalFolder()!=folder) { GetDirView()->SetLocalFolder(folder); } if(setaddress) m_wndAddress.GetEditCtrl()->SetWindowText(folder); }
void COptions::Init() { if (m_bInitialized) return; simple_lock lock(m_mutex); m_bInitialized = TRUE; for (int i = 0; i < OPTIONS_NUM; ++i) m_sOptionsCache[i].bCached = FALSE; USES_CONVERSION; CStdString xmlFileName = GetExecutableDirectory() + _T("FileZilla Server.xml"); char* bufferA = T2A(xmlFileName); if (!bufferA) { return; } TiXmlDocument document; WIN32_FILE_ATTRIBUTE_DATA status{}; if (!GetStatus64(xmlFileName, status) ) { document.LinkEndChild(new TiXmlElement("FileZillaServer")); document.SaveFile(bufferA); } else if (status.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { return; } if (!document.LoadFile(bufferA)) { return; } TiXmlElement* pRoot = document.FirstChildElement("FileZillaServer"); if (!pRoot) { return; } TiXmlElement* pSettings = pRoot->FirstChildElement("Settings"); if (!pSettings) pSettings = pRoot->LinkEndChild(new TiXmlElement("Settings"))->ToElement(); TiXmlElement* pItem; for (pItem = pSettings->FirstChildElement("Item"); pItem; pItem = pItem->NextSiblingElement("Item")) { const char* pName = pItem->Attribute("name"); if (!pName) continue; CStdString name(pName); const char* pType = pItem->Attribute("type"); if (!pType) continue; CStdString type(pType); TiXmlNode* textNode = pItem->FirstChild(); CStdString value; if (textNode && textNode->ToText()) value = ConvFromNetwork(textNode->Value()); else if (type == _T("numeric")) continue; for (int i = 0; i < OPTIONS_NUM; ++i) { if (!_tcscmp(name, m_Options[i].name)) { if (m_sOptionsCache[i].bCached) break; if (type == _T("numeric")) { if (m_Options[i].nType != 1) break; _int64 value64 = _ttoi64(value); if (IsNumeric(value)) SetOption(i + 1, value64, false); } else { if (m_Options[i].nType != 0) break; SetOption(i + 1, value, false); } break; } } } ReadSpeedLimits(pSettings); UpdateInstances(); }