xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // ExtractingFilePath.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_EXTRACTING_FILE_PATH_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_EXTRACTING_FILE_PATH_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyString.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker // #ifdef _WIN32
9*f6dc9357SAndroid Build Coastguard Worker void Correct_AltStream_Name(UString &s);
10*f6dc9357SAndroid Build Coastguard Worker // #endif
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker // replaces unsuported characters, and replaces "." , ".." and "" to "[]"
13*f6dc9357SAndroid Build Coastguard Worker UString Get_Correct_FsFile_Name(const UString &name);
14*f6dc9357SAndroid Build Coastguard Worker 
15*f6dc9357SAndroid Build Coastguard Worker /*
16*f6dc9357SAndroid Build Coastguard Worker   Correct_FsPath() corrects path parts to prepare it for File System operations.
17*f6dc9357SAndroid Build Coastguard Worker   It also corrects empty path parts like "\\\\":
18*f6dc9357SAndroid Build Coastguard Worker     - frontal empty path parts : it removes them or changes them to "_"
19*f6dc9357SAndroid Build Coastguard Worker     - another empty path parts : it removes them
20*f6dc9357SAndroid Build Coastguard Worker   if (absIsAllowed && path is absolute)  : it removes empty path parts after start absolute path prefix marker
21*f6dc9357SAndroid Build Coastguard Worker   else
22*f6dc9357SAndroid Build Coastguard Worker   {
23*f6dc9357SAndroid Build Coastguard Worker     if (!keepAndReplaceEmptyPrefixes) : it removes empty path parts
24*f6dc9357SAndroid Build Coastguard Worker     if ( keepAndReplaceEmptyPrefixes) : it changes each empty frontal path part to "_"
25*f6dc9357SAndroid Build Coastguard Worker   }
26*f6dc9357SAndroid Build Coastguard Worker */
27*f6dc9357SAndroid Build Coastguard Worker void Correct_FsPath(bool absIsAllowed, bool keepAndReplaceEmptyPrefixes, UStringVector &parts, bool isDir);
28*f6dc9357SAndroid Build Coastguard Worker 
29*f6dc9357SAndroid Build Coastguard Worker UString MakePathFromParts(const UStringVector &parts);
30*f6dc9357SAndroid Build Coastguard Worker 
31*f6dc9357SAndroid Build Coastguard Worker #endif
32