Source code
Revision control
Copy as Markdown
Other Tools
// Windows/FileName.h↩
↩
#ifndef __WINDOWS_FILE_NAME_H↩
#define __WINDOWS_FILE_NAME_H↩
↩
#include "../Common/MyString.h"↩
↩
namespace NWindows {↩
namespace NFile {↩
namespace NName {↩
↩
int FindSepar(const wchar_t *s) throw();↩
#ifndef USE_UNICODE_FSTRING↩
int FindSepar(const FChar *s) throw();↩
#endif↩
↩
void NormalizeDirPathPrefix(FString &dirPath); // ensures that it ended with '\\', if dirPath is not epmty↩
void NormalizeDirPathPrefix(UString &dirPath);↩
↩
bool IsDrivePath(const wchar_t *s) throw(); // first 3 chars are drive chars like "a:\\"↩
↩
bool IsAltPathPrefix(CFSTR s) throw(); /* name: */↩
↩
#if defined(_WIN32) && !defined(UNDER_CE)↩
↩
extern const char * const kSuperPathPrefix; /* \\?\ */↩
const unsigned kDevicePathPrefixSize = 4;↩
const unsigned kSuperPathPrefixSize = 4;↩
const unsigned kSuperUncPathPrefixSize = kSuperPathPrefixSize + 4;↩
↩
bool IsDevicePath(CFSTR s) throw(); /* \\.\ */↩
bool IsSuperUncPath(CFSTR s) throw(); /* \\?\UNC\ */↩
bool IsNetworkPath(CFSTR s) throw(); /* \\?\UNC\ or \\SERVER */↩
↩
/* GetNetworkServerPrefixSize() returns size of server prefix:↩
\\?\UNC\SERVER\↩
\\SERVER\↩
in another cases it returns 0↩
*/↩
↩
unsigned GetNetworkServerPrefixSize(CFSTR s) throw();↩
↩
bool IsNetworkShareRootPath(CFSTR s) throw(); /* \\?\UNC\SERVER\share or \\SERVER\share or with slash */↩
↩
bool IsDrivePath_SuperAllowed(CFSTR s) throw(); // first chars are drive chars like "a:\" or "\\?\a:\"↩
bool IsDriveRootPath_SuperAllowed(CFSTR s) throw(); // exact drive root path "a:\" or "\\?\a:\"↩
↩
bool IsDrivePath2(const wchar_t *s) throw(); // first 2 chars are drive chars like "a:"↩
// bool IsDriveName2(const wchar_t *s) throw(); // is drive name like "a:"↩
bool IsSuperPath(const wchar_t *s) throw();↩
bool IsSuperOrDevicePath(const wchar_t *s) throw();↩
↩
#ifndef USE_UNICODE_FSTRING↩
bool IsDrivePath2(CFSTR s) throw(); // first 2 chars are drive chars like "a:"↩
// bool IsDriveName2(CFSTR s) throw(); // is drive name like "a:"↩
bool IsDrivePath(CFSTR s) throw();↩
bool IsSuperPath(CFSTR s) throw();↩
bool IsSuperOrDevicePath(CFSTR s) throw();↩
↩
/* GetRootPrefixSize() returns size of ROOT PREFIX for cases:↩
\↩
\\.\↩
C:\↩
\\?\C:\↩
\\?\UNC\SERVER\Shared\↩
\\SERVER\Shared\↩
in another cases it returns 0↩
*/↩
↩
unsigned GetRootPrefixSize(CFSTR s) throw();↩
↩
#endif↩
↩
int FindAltStreamColon(CFSTR path) throw();↩
↩
#endif // _WIN32↩
↩
bool IsAbsolutePath(const wchar_t *s) throw();↩
unsigned GetRootPrefixSize(const wchar_t *s) throw();↩
↩
#ifdef WIN_LONG_PATH↩
↩
const int kSuperPathType_UseOnlyMain = 0;↩
const int kSuperPathType_UseOnlySuper = 1;↩
const int kSuperPathType_UseMainAndSuper = 2;↩
↩
int GetUseSuperPathType(CFSTR s) throw();↩
bool GetSuperPath(CFSTR path, UString &superPath, bool onlyIfNew);↩
bool GetSuperPaths(CFSTR s1, CFSTR s2, UString &d1, UString &d2, bool onlyIfNew);↩
↩
#define USE_MAIN_PATH (__useSuperPathType != kSuperPathType_UseOnlySuper)↩
#define USE_MAIN_PATH_2 (__useSuperPathType1 != kSuperPathType_UseOnlySuper && __useSuperPathType2 != kSuperPathType_UseOnlySuper)↩
↩
#define USE_SUPER_PATH (__useSuperPathType != kSuperPathType_UseOnlyMain)↩
#define USE_SUPER_PATH_2 (__useSuperPathType1 != kSuperPathType_UseOnlyMain || __useSuperPathType2 != kSuperPathType_UseOnlyMain)↩
↩
#define IF_USE_MAIN_PATH int __useSuperPathType = GetUseSuperPathType(path); if (USE_MAIN_PATH)↩
#define IF_USE_MAIN_PATH_2(x1, x2) \↩
int __useSuperPathType1 = GetUseSuperPathType(x1); \↩
int __useSuperPathType2 = GetUseSuperPathType(x2); \↩
if (USE_MAIN_PATH_2)↩
↩
#else↩
↩
#define IF_USE_MAIN_PATH↩
#define IF_USE_MAIN_PATH_2(x1, x2)↩
↩
#endif // WIN_LONG_PATH↩
↩
bool GetFullPath(CFSTR dirPrefix, CFSTR path, FString &fullPath);↩
bool GetFullPath(CFSTR path, FString &fullPath);↩
↩
}}}↩
↩
#endif↩