1// ArchiveName.cpp 2 3#include "StdAfx.h" 4 5#include "Windows/FileDir.h" 6#include "Windows/FileFind.h" 7 8#include "ExtractingFilePath.h" 9 10using namespace NWindows; 11 12static UString CreateArchiveName2(const UString &srcName, bool fromPrev, bool keepName) 13{ 14 UString resultName = L"Archive"; 15 if (fromPrev) 16 { 17 UString dirPrefix; 18 if (NFile::NDirectory::GetOnlyDirPrefix(srcName, dirPrefix)) 19 { 20 if (dirPrefix.Length() > 0) 21 if (dirPrefix[dirPrefix.Length() - 1] == WCHAR_PATH_SEPARATOR) 22 { 23 dirPrefix.Delete(dirPrefix.Length() - 1); 24 NFile::NFind::CFileInfoW fileInfo; 25 if (fileInfo.Find(dirPrefix)) 26 resultName = fileInfo.Name; 27 } 28 } 29 } 30 else 31 { 32 NFile::NFind::CFileInfoW fileInfo; 33 if (!fileInfo.Find(srcName)) 34 // return resultName; 35 return srcName; 36 resultName = fileInfo.Name; 37 if (!fileInfo.IsDir() && !keepName) 38 { 39 int dotPos = resultName.ReverseFind('.'); 40 if (dotPos > 0) 41 { 42 UString archiveName2 = resultName.Left(dotPos); 43 if (archiveName2.ReverseFind('.') < 0) 44 resultName = archiveName2; 45 } 46 } 47 } 48 return resultName; 49} 50 51UString CreateArchiveName(const UString &srcName, bool fromPrev, bool keepName) 52{ 53 return GetCorrectFsPath(CreateArchiveName2(srcName, fromPrev, keepName)); 54} 55