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
100 #elif GTEST_OS_WINDOWS
111 # endif // GTEST_OS_NACL
113 #endif // GTEST_OS_WINDOWS_MOBILE
124 0,
pathname_.length() - dot_extension.length()));
134 #if GTEST_HAS_ALT_PATH_SEP_
135 const char*
const last_alt_sep = strrchr(
c_str(), kAlternatePathSeparator);
137 if (last_alt_sep !=
nullptr &&
138 (last_sep ==
nullptr || last_alt_sep > last_sep)) {
153 return last_sep ?
FilePath(last_sep + 1) : *this;
198 return relative_path;
206 #if GTEST_OS_WINDOWS_MOBILE
208 const DWORD attributes = GetFileAttributes(
unicode);
210 return attributes != kInvalidFileAttributes;
214 #endif // GTEST_OS_WINDOWS_MOBILE
230 #if GTEST_OS_WINDOWS_MOBILE
231 LPCWSTR
unicode = String::AnsiToUtf16(
path.c_str());
232 const DWORD attributes = GetFileAttributes(
unicode);
234 if ((attributes != kInvalidFileAttributes) &&
235 (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
242 #endif // GTEST_OS_WINDOWS_MOBILE
262 ((
name[0] >=
'a' &&
name[0] <=
'z') ||
263 (
name[0] >=
'A' &&
name[0] <=
'Z')) &&
286 }
while (full_pathname.FileOrDirectoryExists());
287 return full_pathname;
306 if (
pathname_.length() == 0 || this->DirectoryExists()) {
311 return parent.CreateDirectoriesRecursively() && this->
CreateFolder();
319 #if GTEST_OS_WINDOWS_MOBILE
321 LPCWSTR
unicode = String::AnsiToUtf16(removed_sep.c_str());
324 #elif GTEST_OS_WINDOWS
326 #elif GTEST_OS_ESP8266
331 #endif // GTEST_OS_WINDOWS_MOBILE
356 *(
out++) = character;