Beispiel #1
0
UpdaterState CUpdater::ProcessFinishedDownload()
{
	UpdaterState s = newversion;

	wxString const temp = GetTempFile();
	if( temp.empty() ) {
		s = newversion;
	}
	else if( !VerifyChecksum( temp, version_information_.available_.size_, version_information_.available_.hash_ ) ) {
		wxLogNull log;
		wxRemoveFile(temp);
		s = newversion;
	}
	else {
		s = newversion_ready;

		wxString local_file = GetLocalFile( version_information_.available_, false );

		wxLogNull log;
		if (local_file.empty() || !wxRenameFile( temp, local_file, false ) ) {
			s = newversion;
			wxRemoveFile( temp );
			log_ += wxString::Format(_("Could not create local file %s\n"), local_file.c_str());
		}
		else {
			local_file_ = local_file;
			log_ += wxString::Format(_("Local file is %s\n"), local_file.c_str());
		}
	}
	return s;
}
Beispiel #2
0
void CFileItem::SaveItem(pugi::xml_node& element) const
{
    if (m_edit != CEditHandler::none || !element) {
        return;
    }

    auto file = element.append_child("File");

    AddTextElement(file, "LocalFile", m_localPath.GetPath() + GetLocalFile());
    AddTextElement(file, "RemoteFile", GetRemoteFile());
    AddTextElement(file, "RemotePath", m_remotePath.GetSafePath());
    AddTextElementUtf8(file, "Download", Download() ? "1" : "0");
    if (m_size != -1) {
        AddTextElement(file, "Size", m_size);
    }
    if (m_errorCount) {
        AddTextElement(file, "ErrorCount", m_errorCount);
    }
    if (m_priority != QueuePriority::normal) {
        AddTextElement(file, "Priority", static_cast<int>(m_priority));
    }
    AddTextElementUtf8(file, "DataType", Ascii() ? "0" : "1");
    if (m_defaultFileExistsAction != CFileExistsNotification::unknown) {
        AddTextElement(file, "OverwriteAction", m_defaultFileExistsAction);
    }
}
Beispiel #3
0
void CFolderItem::SaveItem(pugi::xml_node& element) const
{
    auto file = element.append_child("Folder");

    if (Download()) {
        AddTextElement(file, "LocalFile", GetLocalPath().GetPath() + GetLocalFile());
    }
    else {
        AddTextElement(file, "RemoteFile", GetRemoteFile());
        AddTextElement(file, "RemotePath", m_remotePath.GetSafePath());
    }
    AddTextElementUtf8(file, "Download", Download() ? "1" : "0");
}
Beispiel #4
0
void CFolderItem::SaveItem(TiXmlElement* pElement) const
{
	TiXmlElement *file = new TiXmlElement("Folder");

	if (Download())
		AddTextElement(file, "LocalFile", GetLocalPath().GetPath() + GetLocalFile());
	else
	{
		AddTextElement(file, "RemoteFile", GetRemoteFile());
		AddTextElement(file, "RemotePath", m_remotePath.GetSafePath());
	}
	AddTextElementRaw(file, "Download", Download() ? "1" : "0");

	pElement->LinkEndChild(file);
}
Beispiel #5
0
UpdaterState CUpdater::ProcessFinishedData(bool can_download)
{
	UpdaterState s = failed;

	ParseData();

	if( version_information_.available_.version_.empty() ) {
		s = idle;
	}
	else if( !version_information_.available_.url_.empty() ) {

		wxString const temp = GetTempFile();
		wxString const local_file = GetLocalFile(version_information_.available_, true);
		if( !local_file.empty() && CLocalFileSystem::GetFileType(local_file) != CLocalFileSystem::unknown) {
			local_file_ = local_file;
			log_ += wxString::Format(_("Local file is %s\n"), local_file.c_str());
			s = newversion_ready;
		}
		else {
			// We got a checksum over a secure channel already.
			update_options_->m_use_internal_rootcert = false;

			if( temp.empty() || local_file.empty() ) {
				s = newversion;
			}
			else {
				s = newversion_downloading;
				wxLongLong size = CLocalFileSystem::GetSize(temp);
				if( size >= 0 && static_cast<unsigned long long>(size.GetValue()) >= version_information_.available_.size_ ) {
					s = ProcessFinishedDownload();
				}
				else if( !can_download || Download( version_information_.available_.url_, GetTempFile() ) != FZ_REPLY_WOULDBLOCK ) {
					s = newversion;
				}
			}
		}
	}
	else {
		s = newversion;
	}

	return s;
}
Beispiel #6
0
void CFileItem::SaveItem(TiXmlElement* pElement) const
{
	if (m_edit != CEditHandler::none)
		return;

	TiXmlElement *file = pElement->LinkEndChild(new TiXmlElement("File"))->ToElement();

	AddTextElement(file, "LocalFile", m_localPath.GetPath() + GetLocalFile());
	AddTextElement(file, "RemoteFile", GetRemoteFile());
	AddTextElement(file, "RemotePath", m_remotePath.GetSafePath());
	AddTextElementRaw(file, "Download", Download() ? "1" : "0");
	if (m_size != -1)
		AddTextElement(file, "Size", m_size.ToString());
	if (m_errorCount)
		AddTextElement(file, "ErrorCount", m_errorCount);
	if (m_priority != QueuePriority::normal)
		AddTextElement(file, "Priority", static_cast<int>(m_priority));
	AddTextElementRaw(file, "DataType", m_transferSettings.binary ? "1" : "0");
	if (m_defaultFileExistsAction != CFileExistsNotification::unknown)
		AddTextElement(file, "OverwriteAction", m_defaultFileExistsAction);
}