// ArchiveName.cpp #include "StdAfx.h" #include "../../../Windows/FileDir.h" #include "ExtractingFilePath.h" #include "ArchiveName.h" using namespace NWindows; UString CreateArchiveName(const NFile::NFind::CFileInfo fileInfo, bool keepName) { FString resultName = fileInfo.Name; if (!fileInfo.IsDir() && !keepName) { int dotPos = resultName.ReverseFind(FTEXT('.')); if (dotPos > 0) { FString archiveName2 = resultName.Left(dotPos); if (archiveName2.ReverseFind(FTEXT('.')) < 0) resultName = archiveName2; } } return GetCorrectFsPath(fs2us(resultName)); } static FString CreateArchiveName2(const FString &srcName, bool fromPrev, bool keepName) { FString resultName = FTEXT("Archive"); if (fromPrev) { FString dirPrefix; if (NFile::NDir::GetOnlyDirPrefix(srcName, dirPrefix)) { if (dirPrefix.Len() > 0) if (dirPrefix.Back() == FCHAR_PATH_SEPARATOR) { dirPrefix.DeleteBack(); NFile::NFind::CFileInfo fileInfo; if (fileInfo.Find(dirPrefix)) resultName = fileInfo.Name; } } } else { NFile::NFind::CFileInfo fileInfo; if (!fileInfo.Find(srcName)) // return resultName; return srcName; resultName = fileInfo.Name; if (!fileInfo.IsDir() && !keepName) { int dotPos = resultName.ReverseFind('.'); if (dotPos > 0) { FString archiveName2 = resultName.Left(dotPos); if (archiveName2.ReverseFind(FTEXT('.')) < 0) resultName = archiveName2; } } } return resultName; } UString CreateArchiveName(const UString &srcName, bool fromPrev, bool keepName) { return GetCorrectFsPath(fs2us(CreateArchiveName2(us2fs(srcName), fromPrev, keepName))); }