mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 04:11:18 +00:00
erpt: fix multiple issues with automatic report cleanup (thanks @yellows8)
* Setting retrieval was performed before the call that used the setting. * Call to detect number of files passed incomplete path and was guaranteed to fail. * Call to delete reports passed incomplete path and was guaranteed to do nothing.
This commit is contained in:
parent
1f8798ace7
commit
04c9004e05
3 changed files with 9 additions and 8 deletions
|
@ -21,6 +21,7 @@
|
||||||
namespace ams::erpt::srv {
|
namespace ams::erpt::srv {
|
||||||
|
|
||||||
constexpr inline const char ReportOnSdStoragePath[] = "ersd";
|
constexpr inline const char ReportOnSdStoragePath[] = "ersd";
|
||||||
|
constexpr inline const char ReportOnSdStorageRootDirectoryPath[] = "ersd:/";
|
||||||
|
|
||||||
constexpr inline const char ReportStoragePath[] = "save";
|
constexpr inline const char ReportStoragePath[] = "save";
|
||||||
constexpr inline const char JournalFileName[] = "save:/journal";
|
constexpr inline const char JournalFileName[] = "save:/journal";
|
||||||
|
|
|
@ -88,7 +88,7 @@ namespace ams::erpt::srv {
|
||||||
s64 report_count = MinimumReportCountForCleanup;
|
s64 report_count = MinimumReportCountForCleanup;
|
||||||
|
|
||||||
fs::DirectoryHandle dir;
|
fs::DirectoryHandle dir;
|
||||||
if (R_SUCCEEDED(fs::OpenDirectory(std::addressof(dir), ReportOnSdStoragePath, fs::OpenDirectoryMode_All))) {
|
if (R_SUCCEEDED(fs::OpenDirectory(std::addressof(dir), ReportOnSdStorageRootDirectoryPath, fs::OpenDirectoryMode_All))) {
|
||||||
ON_SCOPE_EXIT { fs::CloseDirectory(dir); };
|
ON_SCOPE_EXIT { fs::CloseDirectory(dir); };
|
||||||
|
|
||||||
if (R_FAILED(fs::GetDirectoryEntryCount(std::addressof(report_count), dir))) {
|
if (R_FAILED(fs::GetDirectoryEntryCount(std::addressof(report_count), dir))) {
|
||||||
|
@ -97,7 +97,7 @@ namespace ams::erpt::srv {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (report_count >= MinimumReportCountForCleanup) {
|
if (report_count >= MinimumReportCountForCleanup) {
|
||||||
fs::CleanDirectoryRecursively(ReportOnSdStoragePath);
|
fs::CleanDirectoryRecursively(ReportOnSdStorageRootDirectoryPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,12 +78,6 @@ namespace ams {
|
||||||
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(erpt, Main));
|
os::SetThreadNamePointer(os::GetCurrentThread(), AMS_GET_SYSTEM_THREAD_NAME(erpt, Main));
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(erpt, Main));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(erpt, Main));
|
||||||
|
|
||||||
/* Set the memory heap for erpt::srv namespace. */
|
|
||||||
R_ABORT_UNLESS(erpt::srv::Initialize(erpt::g_memory_heap, erpt::MemoryHeapSize));
|
|
||||||
|
|
||||||
/* Atmosphere always wants to redirect new reports to the SD card, to prevent them from being logged. */
|
|
||||||
erpt::srv::SetRedirectNewReportsToSdCard(true);
|
|
||||||
|
|
||||||
/* Decide whether or not to clean up reports periodically. */
|
/* Decide whether or not to clean up reports periodically. */
|
||||||
{
|
{
|
||||||
u8 disable_report_cleanup = 0;
|
u8 disable_report_cleanup = 0;
|
||||||
|
@ -94,6 +88,12 @@ namespace ams {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set the memory heap for erpt::srv namespace, perform other service init/etc. */
|
||||||
|
R_ABORT_UNLESS(erpt::srv::Initialize(erpt::g_memory_heap, erpt::MemoryHeapSize));
|
||||||
|
|
||||||
|
/* Atmosphere always wants to redirect new reports to the SD card, to prevent them from being logged. */
|
||||||
|
erpt::srv::SetRedirectNewReportsToSdCard(true);
|
||||||
|
|
||||||
/* Configure the OS version. */
|
/* Configure the OS version. */
|
||||||
{
|
{
|
||||||
settings::system::FirmwareVersion firmware_version = {};
|
settings::system::FirmwareVersion firmware_version = {};
|
||||||
|
|
Loading…
Reference in a new issue