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

Method GetFileSize

Sources/Shared/IO/FileSystem.cpp:2440–2472  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2438 }
2439
2440 std::int64_t FileSystem::GetFileSize(StringView path)
2441 {
2442 if (path.empty()) return false;
2443
2444#if defined(DEATH_TARGET_WINDOWS)
2445# if defined(DEATH_TARGET_WINDOWS_RT)
2446 SmallVector<wchar_t, MAX_PATH + 1> pathW(path.size() + 1);
2447 Utf8::ToUtf16(pathW.data(), std::int32_t(pathW.size()), path.data(), std::int32_t(path.size()));
2448 HANDLE hFile = ::CreateFileFromAppW(pathW.data(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
2449# else
2450 SmallVector<wchar_t, MAX_PATH + 1> pathW(path.size() + 1);
2451 Utf8::ToUtf16(pathW.data(), std::int32_t(pathW.size()), path.data(), std::int32_t(path.size()));
2452 HANDLE hFile = ::CreateFileW(pathW.data(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
2453# endif
2454 LARGE_INTEGER fileSize;
2455 fileSize.QuadPart = 0;
2456 const BOOL status = ::GetFileSizeEx(hFile, &fileSize);
2457 ::CloseHandle(hFile);
2458 return (status != 0 ? static_cast<std::int64_t>(fileSize.QuadPart) : -1);
2459#else
2460 auto nullTerminatedPath = String::nullTerminatedView(path);
2461# if defined(DEATH_TARGET_ANDROID)
2462 if (auto strippedPath = AndroidAssetStream::TryGetAssetPath(nullTerminatedPath)) {
2463 return AndroidAssetStream::GetFileSize(strippedPath);
2464 }
2465# endif
2466 struct stat sb;
2467 if (::stat(nullTerminatedPath.data(), &sb) != 0) {
2468 return -1;
2469 }
2470 return static_cast<std::int64_t>(sb.st_size);
2471#endif
2472 }
2473
2474 DateTime FileSystem::GetCreationTime(StringView path)
2475 {

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