// ArchiveName.cpp | |
#include "StdAfx.h" | |
#include "Windows/FileDir.h" | |
#include "Windows/FileFind.h" | |
#include "ExtractingFilePath.h" | |
using namespace NWindows; | |
static UString CreateArchiveName2(const UString &srcName, bool fromPrev, bool keepName) | |
{ | |
UString resultName = L"Archive"; | |
if (fromPrev) | |
{ | |
UString dirPrefix; | |
if (NFile::NDirectory::GetOnlyDirPrefix(srcName, dirPrefix)) | |
{ | |
if (dirPrefix.Length() > 0) | |
if (dirPrefix[dirPrefix.Length() - 1] == WCHAR_PATH_SEPARATOR) | |
{ | |
dirPrefix.Delete(dirPrefix.Length() - 1); | |
NFile::NFind::CFileInfoW fileInfo; | |
if (fileInfo.Find(dirPrefix)) | |
resultName = fileInfo.Name; | |
} | |
} | |
} | |
else | |
{ | |
NFile::NFind::CFileInfoW fileInfo; | |
if (!fileInfo.Find(srcName)) | |
// return resultName; | |
return srcName; | |
resultName = fileInfo.Name; | |
if (!fileInfo.IsDir() && !keepName) | |
{ | |
int dotPos = resultName.ReverseFind('.'); | |
if (dotPos > 0) | |
{ | |
UString archiveName2 = resultName.Left(dotPos); | |
if (archiveName2.ReverseFind('.') < 0) | |
resultName = archiveName2; | |
} | |
} | |
} | |
return resultName; | |
} | |
UString CreateArchiveName(const UString &srcName, bool fromPrev, bool keepName) | |
{ | |
return GetCorrectFsPath(CreateArchiveName2(srcName, fromPrev, keepName)); | |
} |