Skip to content

Commit

Permalink
epee: use std::filesystem::file_size to implement `epee::file_io_ut…
Browse files Browse the repository at this point in the history
…ils::get_file_size`

Fixes monero-project#9513
  • Loading branch information
jeffro256 committed Oct 10, 2024
1 parent 9866a0e commit 5fe1670
Showing 1 changed file with 4 additions and 29 deletions.
33 changes: 4 additions & 29 deletions contrib/epee/src/file_io_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include "file_io_utils.h"

#include <filesystem>
#include <fstream>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
Expand Down Expand Up @@ -153,35 +154,9 @@ namespace file_io_utils

bool get_file_size(const std::string& path_to_file, uint64_t &size)
{
#ifdef _WIN32
std::wstring wide_path;
try { wide_path = string_tools::utf8_to_utf16(path_to_file); } catch (...) { return false; }
HANDLE file_handle = CreateFileW(wide_path.c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (file_handle == INVALID_HANDLE_VALUE)
return false;
LARGE_INTEGER file_size;
BOOL result = GetFileSizeEx(file_handle, &file_size);
CloseHandle(file_handle);
if (result) {
size = file_size.QuadPart;
}
return size;
#else
try
{
std::ifstream fstream;
fstream.exceptions(std::ifstream::failbit | std::ifstream::badbit);
fstream.open(path_to_file, std::ios_base::binary | std::ios_base::in | std::ios::ate);
size = fstream.tellg();
fstream.close();
return true;
}

catch(...)
{
return false;
}
#endif
std::error_code ec;
size = static_cast<uint64_t>(std::filesystem::file_size(path_to_file, ec));
return !ec;
}

}
Expand Down

0 comments on commit 5fe1670

Please sign in to comment.