| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // ArchiveName.cpp
- #include "StdAfx.h"
- #include "Windows/FileFind.h"
- #include "Windows/FileDir.h"
- using namespace NWindows;
- UString CreateArchiveName(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] == '\\')
- {
- dirPrefix.Delete(dirPrefix.Length() - 1);
- NFile::NFind::CFileInfoW fileInfo;
- if (NFile::NFind::FindFile(dirPrefix, fileInfo))
- resultName = fileInfo.Name;
- }
- }
- }
- else
- {
- NFile::NFind::CFileInfoW fileInfo;
- if (!NFile::NFind::FindFile(srcName, fileInfo))
- return resultName;
- resultName = fileInfo.Name;
- if (!fileInfo.IsDirectory() && !keepName)
- {
- int dotPos = resultName.ReverseFind('.');
- if (dotPos > 0)
- {
- UString archiveName2 = resultName.Left(dotPos);
- if (archiveName2.ReverseFind('.') < 0)
- resultName = archiveName2;
- }
- }
- }
- return resultName;
- }
|