1
0
mirror of synced 2025-02-20 04:01:01 +01:00

fix: Providers not compiling on Unix

This commit is contained in:
WerWolv 2022-01-16 02:29:19 +01:00
parent a70ece7b9c
commit a5a1ae6725
3 changed files with 24 additions and 18 deletions

View File

@ -47,6 +47,7 @@ namespace hex::plugin::builtin::prv {
#if defined(OS_WINDOWS)
HANDLE m_diskHandle = INVALID_HANDLE_VALUE;
#else
std::string m_pathBuffer;
int m_diskHandle = -1;
#endif

View File

@ -103,15 +103,17 @@ namespace hex::plugin::builtin::prv {
#else
const auto &path = this->m_path.native();
struct stat driveStat;
::stat(this->m_path.data(), &driveStat) == 0;
::stat(path.c_str(), &driveStat) == 0;
this->m_diskSize = driveStat.st_size;
this->m_sectorSize = 0;
this->m_diskHandle = ::open(this->m_path.data(), O_RDWR);
this->m_diskHandle = ::open(path.c_str(), O_RDWR);
if (this->m_diskHandle == -1) {
this->m_diskHandle = ::open(this->m_path.data(), O_RDONLY);
this->m_diskHandle = ::open(path.c_str(), O_RDONLY);
this->m_writable = false;
}
@ -306,7 +308,8 @@ namespace hex::plugin::builtin::prv {
#else
ImGui::InputText("hex.builtin.provider.disk.selected_disk"_lang, this->m_path.data(), this->m_path.capacity(), ImGuiInputTextFlags_CallbackResize, ImGui::UpdateStringSizeCallback, &this->m_path);
if (ImGui::InputText("hex.builtin.provider.disk.selected_disk"_lang, this->m_pathBuffer.data(), this->m_pathBuffer.capacity(), ImGuiInputTextFlags_CallbackResize, ImGui::UpdateStringSizeCallback, &this->m_pathBuffer))
this->m_path = this->m_pathBuffer;
#endif
}

View File

@ -139,7 +139,7 @@ namespace hex::plugin::builtin::prv {
}
bool FileProvider::open() {
this->m_fileStatsValid = stat(this->m_path.string().data(), &this->m_fileStats) == 0;
this->m_fileStatsValid = stat(this->m_path.string().c_str(), &this->m_fileStats) == 0;
this->m_readable = true;
this->m_writable = true;
@ -212,9 +212,11 @@ namespace hex::plugin::builtin::prv {
fileCleanup.release();
#else
this->m_file = ::open(this->m_path.data(), O_RDWR);
const auto &path = this->m_path.native();
this->m_file = ::open(path.c_str(), O_RDWR);
if (this->m_file == -1) {
this->m_file = ::open(this->m_path.data(), O_RDONLY);
this->m_file = ::open(path.c_str(), O_RDONLY);
this->m_writable = false;
}
@ -238,17 +240,17 @@ namespace hex::plugin::builtin::prv {
}
void FileProvider::close() {
#if defined(OS_WINDOWS)
if (this->m_mappedFile != nullptr)
::UnmapViewOfFile(this->m_mappedFile);
if (this->m_mapping != nullptr)
::CloseHandle(this->m_mapping);
if (this->m_file != nullptr)
::CloseHandle(this->m_file);
#else
::munmap(this->m_mappedFile, this->m_fileSize);
::close(this->m_file);
#endif
#if defined(OS_WINDOWS)
if (this->m_mappedFile != nullptr)
::UnmapViewOfFile(this->m_mappedFile);
if (this->m_mapping != nullptr)
::CloseHandle(this->m_mapping);
if (this->m_file != nullptr)
::CloseHandle(this->m_file);
#else
::munmap(this->m_mappedFile, this->m_fileSize);
::close(this->m_file);
#endif
}
}