mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-07 13:15:04 -06:00
70 lines
1.2 KiB
C++
Executable File
70 lines
1.2 KiB
C++
Executable File
// ExtractingFilePath.cpp
|
|
|
|
#include "StdAfx.h"
|
|
#include "ExtractingFilePath.h"
|
|
|
|
static void ReplaceDisk(UString &s)
|
|
{
|
|
int i;
|
|
for (i = 0; i < s.Length(); i++)
|
|
if (s[i] != ' ')
|
|
break;
|
|
if (s.Length() > i + 1)
|
|
{
|
|
if (s[i + 1] == L':')
|
|
{
|
|
s.Delete(i + 1);
|
|
// s.Insert(i + 1, L'_');
|
|
}
|
|
}
|
|
}
|
|
|
|
UString GetCorrectFileName(const UString &path)
|
|
{
|
|
UString result = path;
|
|
{
|
|
UString test = path;
|
|
test.Trim();
|
|
if (test == L"..")
|
|
result.Replace(L"..", L"");
|
|
}
|
|
ReplaceDisk(result);
|
|
return result;
|
|
}
|
|
|
|
UString GetCorrectPath(const UString &path)
|
|
{
|
|
UString result = path;
|
|
int first;
|
|
for (first = 0; first < result.Length(); first++)
|
|
if (result[first] != ' ')
|
|
break;
|
|
while(result.Length() > first)
|
|
{
|
|
if (result[first] == L'\\' || result[first] == L'/')
|
|
{
|
|
result.Delete(first);
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
result.Replace(L"..\\", L"");
|
|
result.Replace(L"../", L"");
|
|
|
|
ReplaceDisk(result);
|
|
return result;
|
|
}
|
|
|
|
void MakeCorrectPath(UStringVector &pathParts)
|
|
{
|
|
for (int i = 0; i < pathParts.Size();)
|
|
{
|
|
UString &s = pathParts[i];
|
|
s = GetCorrectFileName(s);
|
|
if (s.IsEmpty())
|
|
pathParts.Delete(i);
|
|
else
|
|
i++;
|
|
}
|
|
}
|