MCPcopy Create free account
hub / github.com/deathkiller/jazz2-native / FileExists

Method FileExists

Sources/Shared/IO/FileSystem.cpp:1609–1636  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1607 }
1608
1609 bool FileSystem::FileExists(StringView path)
1610 {
1611 if (path.empty()) return false;
1612
1613#if defined(DEATH_TARGET_WINDOWS_RT)
1614 SmallVector<wchar_t, MAX_PATH + 1> pathW(DefaultInit, path.size() + 1);
1615 Utf8::ToUtf16(pathW.data(), std::int32_t(pathW.size()), path.data(), std::int32_t(path.size()));
1616 WIN32_FILE_ATTRIBUTE_DATA lpFileInfo;
1617 return (::GetFileAttributesExFromAppW(pathW.data(), GetFileExInfoStandard, &lpFileInfo) && (lpFileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY);
1618#elif defined(DEATH_TARGET_WINDOWS)
1619 SmallVector<wchar_t, MAX_PATH + 1> pathW(DefaultInit, path.size() + 1);
1620 Utf8::ToUtf16(pathW.data(), std::int32_t(pathW.size()), path.data(), std::int32_t(path.size()));
1621 const DWORD attrs = ::GetFileAttributesW(pathW.data());
1622 return (attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY);
1623#else
1624 auto nullTerminatedPath = String::nullTerminatedView(path);
1625# if defined(DEATH_TARGET_ANDROID)
1626 if (auto strippedPath = AndroidAssetStream::TryGetAssetPath(nullTerminatedPath)) {
1627 return AndroidAssetStream::TryOpenFile(strippedPath);
1628 }
1629# endif
1630 struct stat sb;
1631 if (::stat(nullTerminatedPath.data(), &sb) == 0) {
1632 return ((sb.st_mode & S_IFMT) == S_IFREG);
1633 }
1634 return false;
1635#endif
1636 }
1637
1638 bool FileSystem::Exists(StringView path)
1639 {

Callers

nothing calls this directly

Calls 5

statClass · 0.70
ToUtf16Function · 0.50
emptyMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected