diff --git a/plugins/builtin/source/content/data_inspector.cpp b/plugins/builtin/source/content/data_inspector.cpp index f85743af9..6a9c7d3ac 100644 --- a/plugins/builtin/source/content/data_inspector.cpp +++ b/plugins/builtin/source/content/data_inspector.cpp @@ -6,7 +6,6 @@ #include #include -#include #include #include #include @@ -157,28 +156,28 @@ namespace hex::plugin::builtin { #if defined(OS_WINDOWS) && defined(ARCH_64_BIT) - ContentRegistry::DataInspector::add("hex.builtin.inspector.time32", sizeof(__time32_t), [](auto buffer, auto endian, auto style) { - auto endianAdjustedTime = hex::changeEndianess(*reinterpret_cast<__time32_t*>(buffer.data()), endian); + ContentRegistry::DataInspector::add("hex.builtin.inspector.time32", sizeof(u32), [](auto buffer, auto endian, auto style) { + auto endianAdjustedTime = hex::changeEndianess(*reinterpret_cast(buffer.data()), endian); - struct tm ptm = { 0 }; std::string value; - if (_localtime32_s(&ptm, &endianAdjustedTime) == 0) - value = hex::format("{0:%a, %d.%m.%Y %H:%M:%S}", ptm); - else + try { + value = hex::format("{0:%a, %d.%m.%Y %H:%M:%S}", fmt::localtime(endianAdjustedTime)); + } catch (fmt::format_error &e) { value = "Invalid"; + } return [value] { ImGui::TextUnformatted(value.c_str()); return value; }; }); - ContentRegistry::DataInspector::add("hex.builtin.inspector.time64", sizeof(__time64_t), [](auto buffer, auto endian, auto style) { - auto endianAdjustedTime = hex::changeEndianess(*reinterpret_cast<__time64_t*>(buffer.data()), endian); + ContentRegistry::DataInspector::add("hex.builtin.inspector.time64", sizeof(u64), [](auto buffer, auto endian, auto style) { + auto endianAdjustedTime = hex::changeEndianess(*reinterpret_cast(buffer.data()), endian); - struct tm ptm = { 0 }; std::string value; - if (_localtime64_s(&ptm, &endianAdjustedTime) == 0) - value = hex::format("{0:%a, %d.%m.%Y %H:%M:%S}", ptm); - else + try { + value = hex::format("{0:%a, %d.%m.%Y %H:%M:%S}", fmt::localtime(endianAdjustedTime)); + } catch (fmt::format_error &e) { value = "Invalid"; + } return [value] { ImGui::TextUnformatted(value.c_str()); return value; }; }); @@ -187,12 +186,13 @@ namespace hex::plugin::builtin { ContentRegistry::DataInspector::add("hex.builtin.inspector.time", sizeof(time_t), [](auto buffer, auto endian, auto style) { auto endianAdjustedTime = hex::changeEndianess(*reinterpret_cast(buffer.data()), endian); - struct tm *ptm = localtime(&endianAdjustedTime); + std::string value; - if (ptm != nullptr) - value = hex::format("{0:%a, %d.%m.%Y %H:%M:%S}", *ptm); - else + try { + value = hex::format("{0:%a, %d.%m.%Y %H:%M:%S}", fmt::localtime(endianAdjustedTime)); + } catch (fmt::format_error &e) { value = "Invalid"; + } return [value] { ImGui::TextUnformatted(value.c_str()); return value; }; }); diff --git a/plugins/builtin/source/content/providers/file_provider.cpp b/plugins/builtin/source/content/providers/file_provider.cpp index 58305bbe1..61fb782a4 100644 --- a/plugins/builtin/source/content/providers/file_provider.cpp +++ b/plugins/builtin/source/content/providers/file_provider.cpp @@ -148,16 +148,9 @@ namespace hex::plugin::builtin::prv { result.emplace_back("hex.builtin.provider.file.size"_lang, hex::toByteString(this->getActualSize())); if (this->m_fileStatsValid) { - std::string buffer(0xFF, '\x00'); - - if (ctime_s(buffer.data(), buffer.size(), &this->m_fileStats.st_ctime) == 0) - result.emplace_back("hex.builtin.provider.file.creation"_lang, buffer); - - if (ctime_s(buffer.data(), buffer.size(), &this->m_fileStats.st_atime) == 0) - result.emplace_back("hex.builtin.provider.file.access"_lang, buffer); - - if (ctime_s(buffer.data(), buffer.size(), &this->m_fileStats.st_mtime) == 0) - result.emplace_back("hex.builtin.provider.file.modification"_lang, buffer); + result.emplace_back("hex.builtin.provider.file.creation"_lang, hex::format("{}", fmt::localtime(this->m_fileStats.st_ctime))); + result.emplace_back("hex.builtin.provider.file.access"_lang, hex::format("{}", fmt::localtime(this->m_fileStats.st_atime))); + result.emplace_back("hex.builtin.provider.file.modification"_lang, hex::format("{}", fmt::localtime(this->m_fileStats.st_mtime))); } return result; diff --git a/plugins/builtin/source/lang/de_DE.cpp b/plugins/builtin/source/lang/de_DE.cpp index 94db8ec99..5b6ec9e54 100644 --- a/plugins/builtin/source/lang/de_DE.cpp +++ b/plugins/builtin/source/lang/de_DE.cpp @@ -371,8 +371,8 @@ namespace hex::plugin::builtin { { "hex.builtin.inspector.wide", "Wide Zeichen" }, { "hex.builtin.inspector.utf8", "UTF-8 code point" }, { "hex.builtin.inspector.string", "String" }, - { "hex.builtin.inspector.time32", "__time32_t" }, - { "hex.builtin.inspector.time64", "__time64_t" }, + { "hex.builtin.inspector.time32", "time32_t" }, + { "hex.builtin.inspector.time64", "time64_t" }, { "hex.builtin.inspector.time", "time_t" }, { "hex.builtin.inspector.guid", "GUID" }, { "hex.builtin.inspector.rgba8", "RGBA8 Farbe" }, diff --git a/plugins/builtin/source/lang/en_US.cpp b/plugins/builtin/source/lang/en_US.cpp index 8890032c0..909b7c6fe 100644 --- a/plugins/builtin/source/lang/en_US.cpp +++ b/plugins/builtin/source/lang/en_US.cpp @@ -374,8 +374,8 @@ namespace hex::plugin::builtin { { "hex.builtin.inspector.wide", "Wide Character" }, { "hex.builtin.inspector.utf8", "UTF-8 code point" }, { "hex.builtin.inspector.string", "String" }, - { "hex.builtin.inspector.time32", "__time32_t" }, - { "hex.builtin.inspector.time64", "__time64_t" }, + { "hex.builtin.inspector.time32", "time32_t" }, + { "hex.builtin.inspector.time64", "time64_t" }, { "hex.builtin.inspector.time", "time_t" }, { "hex.builtin.inspector.guid", "GUID" }, { "hex.builtin.inspector.rgba8", "RGBA8 color" }, diff --git a/plugins/builtin/source/lang/it_IT.cpp b/plugins/builtin/source/lang/it_IT.cpp index cbbf3cb3a..15cce93de 100644 --- a/plugins/builtin/source/lang/it_IT.cpp +++ b/plugins/builtin/source/lang/it_IT.cpp @@ -368,8 +368,8 @@ namespace hex::plugin::builtin { { "hex.builtin.inspector.wide", "Wide Character" }, { "hex.builtin.inspector.utf8", "UTF-8 code point" }, { "hex.builtin.inspector.string", "String" }, - { "hex.builtin.inspector.time32", "__time32_t" }, - { "hex.builtin.inspector.time64", "__time64_t" }, + { "hex.builtin.inspector.time32", "time32_t" }, + { "hex.builtin.inspector.time64", "time64_t" }, { "hex.builtin.inspector.time", "time_t" }, { "hex.builtin.inspector.guid", "GUID" }, { "hex.builtin.inspector.rgba8", "Colori RGBA8" }, diff --git a/plugins/builtin/source/lang/zh_CN.cpp b/plugins/builtin/source/lang/zh_CN.cpp index 945605ef7..30f6cad57 100644 --- a/plugins/builtin/source/lang/zh_CN.cpp +++ b/plugins/builtin/source/lang/zh_CN.cpp @@ -369,8 +369,8 @@ namespace hex::plugin::builtin { { "hex.builtin.inspector.wide", "宽字符" }, { "hex.builtin.inspector.utf8", "UTF-8代码点" }, { "hex.builtin.inspector.string", "字符串" }, - { "hex.builtin.inspector.time32", "__time32_t" }, - { "hex.builtin.inspector.time64", "__time64_t" }, + { "hex.builtin.inspector.time32", "time32_t" }, + { "hex.builtin.inspector.time64", "time64_t" }, { "hex.builtin.inspector.time", "time_t" }, { "hex.builtin.inspector.guid", "GUID" }, { "hex.builtin.inspector.rgba8", "RGBA8颜色" },