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
10 using namespace NWindows;
11
CreateArchiveName2(const UString & srcName,bool fromPrev,bool keepName)12 static 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
CreateArchiveName(const UString & srcName,bool fromPrev,bool keepName)51 UString CreateArchiveName(const UString &srcName, bool fromPrev, bool keepName)
52 {
53 return GetCorrectFsPath(CreateArchiveName2(srcName, fromPrev, keepName));
54 }
55