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;

}
Esempio n. 2
0
_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);


	
}
Esempio n. 4
0
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();
}