Пример #1
0
std::wstring CServerPath::GetPath() const
{
	if (empty()) {
		return std::wstring();
	}

	std::wstring path;

	if (!traits[m_type].prefixmode && m_data->m_prefix) {
		path = *m_data->m_prefix;
	}

	if (traits[m_type].left_enclosure != 0) {
		path += traits[m_type].left_enclosure;
	}
	if (m_data->m_segments.empty() && (!traits[m_type].has_root || !m_data->m_prefix || traits[m_type].separator_after_prefix)) {
		path += traits[m_type].separators[0];
	}

	for (auto iter = m_data->m_segments.cbegin(); iter != m_data->m_segments.cend(); ++iter) {
		std::wstring const& segment = *iter;
		if (iter != m_data->m_segments.cbegin()) {
			path += traits[m_type].separators[0];
		}
		else if (traits[m_type].has_root) {
			if (!m_data->m_prefix || traits[m_type].separator_after_prefix) {
				path += traits[m_type].separators[0];
			}
		}

		if (traits[m_type].separatorEscape) {
			std::wstring tmp = segment;
			EscapeSeparators(m_type, tmp);
			path += tmp;
		}
		else {
			path += segment;
		}
	}

	if (traits[m_type].prefixmode && m_data->m_prefix) {
		path += *m_data->m_prefix;
	}

	if (traits[m_type].right_enclosure != 0) {
		path += traits[m_type].right_enclosure;
	}

	// DOS is strange.
	// C: is current working dir on drive C, C:\ the drive root.
	if ((m_type == DOS || m_type == DOS_FWD_SLASHES) && m_data->m_segments.size() == 1) {
		path += traits[m_type].separators[0];
	}

	return path;
}
Пример #2
0
wxString CServerPath::FormatSubdir(const wxString &subdir) const
{
	if (!traits[m_type].separatorEscape)
		return subdir;

	wxString res = subdir;
	EscapeSeparators(m_type, res);

	return res;
}
Пример #3
0
std::wstring CServerPath::FormatSubdir(std::wstring const& subdir) const
{
	if (!traits[m_type].separatorEscape) {
		return subdir;
	}

	std::wstring res = subdir;
	EscapeSeparators(m_type, res);

	return res;
}
Пример #4
0
wxString CServerPath::GetPath() const
{
	if (empty())
		return wxString();

	wxString path;

	if (!traits[m_type].prefixmode && m_data->m_prefix)
		path = *m_data->m_prefix;

	if (traits[m_type].left_enclosure != 0)
		path += traits[m_type].left_enclosure;
	if (m_data->m_segments.empty() && (!traits[m_type].has_root || !m_data->m_prefix || traits[m_type].separator_after_prefix))
		path += traits[m_type].separators[0];

	for (tConstSegmentIter iter = m_data->m_segments.begin(); iter != m_data->m_segments.end(); ++iter) {
		const wxString& segment = *iter;
		if (iter != m_data->m_segments.begin())
			path += traits[m_type].separators[0];
		else if (traits[m_type].has_root) {
			if (!m_data->m_prefix || traits[m_type].separator_after_prefix)
				path += traits[m_type].separators[0];
		}

		if (traits[m_type].separatorEscape) {
			wxString tmp = segment;
			EscapeSeparators(m_type, tmp);
			path += tmp;
		}
		else
			path += segment;
	}

	if (traits[m_type].prefixmode && m_data->m_prefix)
		path += *m_data->m_prefix;

	if (traits[m_type].right_enclosure != 0)
		path += traits[m_type].right_enclosure;

	// DOS is strange.
	// C: is current working dir on drive C, C:\ the drive root.
	if (m_type == DOS && m_data->m_segments.size() == 1)
		path += traits[m_type].separators[0];

	return path;
}