xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Common/DefaultName.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // DefaultName.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #include "DefaultName.h"
6*f6dc9357SAndroid Build Coastguard Worker 
GetDefaultName3(const UString & fileName,const UString & extension,const UString & addSubExtension)7*f6dc9357SAndroid Build Coastguard Worker static UString GetDefaultName3(const UString &fileName,
8*f6dc9357SAndroid Build Coastguard Worker     const UString &extension, const UString &addSubExtension)
9*f6dc9357SAndroid Build Coastguard Worker {
10*f6dc9357SAndroid Build Coastguard Worker   const unsigned extLen = extension.Len();
11*f6dc9357SAndroid Build Coastguard Worker   const unsigned fileNameLen = fileName.Len();
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker   if (fileNameLen > extLen + 1)
14*f6dc9357SAndroid Build Coastguard Worker   {
15*f6dc9357SAndroid Build Coastguard Worker     const unsigned dotPos = fileNameLen - (extLen + 1);
16*f6dc9357SAndroid Build Coastguard Worker     if (fileName[dotPos] == '.')
17*f6dc9357SAndroid Build Coastguard Worker       if (extension.IsEqualTo_NoCase(fileName.Ptr(dotPos + 1)))
18*f6dc9357SAndroid Build Coastguard Worker         return fileName.Left(dotPos) + addSubExtension;
19*f6dc9357SAndroid Build Coastguard Worker   }
20*f6dc9357SAndroid Build Coastguard Worker 
21*f6dc9357SAndroid Build Coastguard Worker   int dotPos = fileName.ReverseFind_Dot();
22*f6dc9357SAndroid Build Coastguard Worker   if (dotPos > 0)
23*f6dc9357SAndroid Build Coastguard Worker     return fileName.Left((unsigned)dotPos) + addSubExtension;
24*f6dc9357SAndroid Build Coastguard Worker 
25*f6dc9357SAndroid Build Coastguard Worker   if (addSubExtension.IsEmpty())
26*f6dc9357SAndroid Build Coastguard Worker     return fileName + L'~';
27*f6dc9357SAndroid Build Coastguard Worker   else
28*f6dc9357SAndroid Build Coastguard Worker     return fileName + addSubExtension;
29*f6dc9357SAndroid Build Coastguard Worker }
30*f6dc9357SAndroid Build Coastguard Worker 
GetDefaultName2(const UString & fileName,const UString & extension,const UString & addSubExtension)31*f6dc9357SAndroid Build Coastguard Worker UString GetDefaultName2(const UString &fileName,
32*f6dc9357SAndroid Build Coastguard Worker     const UString &extension, const UString &addSubExtension)
33*f6dc9357SAndroid Build Coastguard Worker {
34*f6dc9357SAndroid Build Coastguard Worker   UString name = GetDefaultName3(fileName, extension, addSubExtension);
35*f6dc9357SAndroid Build Coastguard Worker   name.TrimRight();
36*f6dc9357SAndroid Build Coastguard Worker   return name;
37*f6dc9357SAndroid Build Coastguard Worker }
38