| 367 | } |
| 368 | |
| 369 | void LocateApplicationAndSpecialEntries(const std::string &path, std::vector<ul::menu::Entry> &out_app_entries, u32 &rem_special_entry_mask) { |
| 370 | auto entries = ul::menu::LoadEntries(path); |
| 371 | for(const auto &entry: entries) { |
| 372 | if(entry.Is<ul::menu::EntryType::Application>()) { |
| 373 | out_app_entries.push_back(entry); |
| 374 | } |
| 375 | else if(entry.IsSpecial()) { |
| 376 | // This special entry exists, remove from remaining |
| 377 | rem_special_entry_mask &= ~BITL(static_cast<u32>(entry.type)); |
| 378 | } |
| 379 | else if(entry.Is<ul::menu::EntryType::Folder>()) { |
| 380 | LocateApplicationAndSpecialEntries(ul::fs::JoinPath(path, entry.folder_info.fs_name), out_app_entries, rem_special_entry_mask); |
| 381 | } |
| 382 | } |
| 383 | } |
| 384 | |
| 385 | void CheckApplicationRecordChanges() { |
| 386 | ul::ScopedLock lock(g_CurrentRecordsLock); |
no test coverage detected