aboutsummaryrefslogtreecommitdiff
path: root/CPP/7zip/UI/Common/ArchiveName.cpp
diff options
context:
space:
mode:
authorrepo sync <gcondra@google.com>2013-07-26 17:53:31 -0700
committerrepo sync <gcondra@google.com>2013-07-29 11:00:59 -0700
commitbaa3858d3f5d128a5c8466b700098109edcad5f2 (patch)
tree2860fc3eaf476caa6296788b828f296a5ee37486 /CPP/7zip/UI/Common/ArchiveName.cpp
parentdd8f4f771627dacc36cd45f18c2b54f939471065 (diff)
downloadlzma-baa3858d3f5d128a5c8466b700098109edcad5f2.tar.gz
The only change from stock lzma sdk is the removal of two .exe files, which we don't need. Change-Id: I46287cbc416161e93b449761ebe531acd758cf95
Diffstat (limited to 'CPP/7zip/UI/Common/ArchiveName.cpp')
-rwxr-xr-xCPP/7zip/UI/Common/ArchiveName.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/CPP/7zip/UI/Common/ArchiveName.cpp b/CPP/7zip/UI/Common/ArchiveName.cpp
new file mode 100755
index 0000000..c62c7f1
--- /dev/null
+++ b/CPP/7zip/UI/Common/ArchiveName.cpp
@@ -0,0 +1,54 @@
+// 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));
+}