30 #include "gtest/internal/gtest-filepath.h"
33 #include "gtest/internal/gtest-port.h"
34 #include "gtest/gtest-message.h"
36 #if GTEST_OS_WINDOWS_MOBILE
38 #elif GTEST_OS_WINDOWS
44 #endif // GTEST_OS_WINDOWS_MOBILE
46 #include "gtest/internal/gtest-string.h"
49 # define GTEST_PATH_MAX_ _MAX_PATH
50 #elif defined(PATH_MAX)
51 # define GTEST_PATH_MAX_ PATH_MAX
52 #elif defined(_XOPEN_PATH_MAX)
53 # define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
55 # define GTEST_PATH_MAX_ _POSIX_PATH_MAX
56 #endif // GTEST_OS_WINDOWS
67 const char kAlternatePathSeparator =
'/';
68 const char kAlternatePathSeparatorString[] =
"/";
69 # if GTEST_OS_WINDOWS_MOBILE
75 const DWORD kInvalidFileAttributes = 0xffffffff;
78 # endif // GTEST_OS_WINDOWS_MOBILE
82 #endif // GTEST_OS_WINDOWS
86 #if GTEST_HAS_ALT_PATH_SEP_
95 #if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || \
96 GTEST_OS_WINDOWS_RT || GTEST_OS_ESP8266 || GTEST_OS_ESP32 || \
101 #elif GTEST_OS_WINDOWS
112 # endif // GTEST_OS_NACL
114 #endif // GTEST_OS_WINDOWS_MOBILE
125 0,
pathname_.length() - dot_extension.length()));
135 #if GTEST_HAS_ALT_PATH_SEP_
136 const char*
const last_alt_sep = strrchr(
c_str(), kAlternatePathSeparator);
138 if (last_alt_sep !=
nullptr &&
139 (last_sep ==
nullptr || last_alt_sep > last_sep)) {
154 return last_sep ?
FilePath(last_sep + 1) : *this;
199 return relative_path;
207 #if GTEST_OS_WINDOWS_MOBILE
209 const DWORD attributes = GetFileAttributes(
unicode);
211 return attributes != kInvalidFileAttributes;
215 #endif // GTEST_OS_WINDOWS_MOBILE
231 #if GTEST_OS_WINDOWS_MOBILE
232 LPCWSTR
unicode = String::AnsiToUtf16(
path.c_str());
233 const DWORD attributes = GetFileAttributes(
unicode);
235 if ((attributes != kInvalidFileAttributes) &&
236 (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
243 #endif // GTEST_OS_WINDOWS_MOBILE
263 ((
name[0] >=
'a' &&
name[0] <=
'z') ||
264 (
name[0] >=
'A' &&
name[0] <=
'Z')) &&
287 }
while (full_pathname.FileOrDirectoryExists());
288 return full_pathname;
307 if (
pathname_.length() == 0 || this->DirectoryExists()) {
312 return parent.CreateDirectoriesRecursively() && this->
CreateFolder();
320 #if GTEST_OS_WINDOWS_MOBILE
322 LPCWSTR
unicode = String::AnsiToUtf16(removed_sep.c_str());
325 #elif GTEST_OS_WINDOWS
327 #elif GTEST_OS_ESP8266 || GTEST_OS_XTENSA
332 #endif // GTEST_OS_WINDOWS_MOBILE
357 *(
out++) = character;