Browse Source
Merge pull request #12895 from german77/files
service: fs: Skip non user id folders
pull/15/merge
liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
12 additions and
0 deletions
-
src/common/hex_util.h
-
src/core/hle/service/filesystem/fsp/fsp_srv.cpp
|
|
|
@ -9,6 +9,7 @@ |
|
|
|
#include <string> |
|
|
|
#include <vector> |
|
|
|
#include <fmt/format.h> |
|
|
|
#include "common/assert.h" |
|
|
|
#include "common/common_types.h" |
|
|
|
|
|
|
|
namespace Common { |
|
|
|
@ -29,6 +30,8 @@ namespace Common { |
|
|
|
|
|
|
|
template <std::size_t Size, bool le = false> |
|
|
|
[[nodiscard]] constexpr std::array<u8, Size> HexStringToArray(std::string_view str) { |
|
|
|
ASSERT_MSG(Size * 2 <= str.size(), "Invalid string size"); |
|
|
|
|
|
|
|
std::array<u8, Size> out{}; |
|
|
|
if constexpr (le) { |
|
|
|
for (std::size_t i = 2 * Size - 2; i <= 2 * Size; i -= 2) { |
|
|
|
|
|
|
|
@ -115,6 +115,11 @@ private: |
|
|
|
if (type->GetName() == "save") { |
|
|
|
for (const auto& save_id : type->GetSubdirectories()) { |
|
|
|
for (const auto& user_id : save_id->GetSubdirectories()) { |
|
|
|
// Skip non user id subdirectories
|
|
|
|
if (user_id->GetName().size() != 0x20) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
const auto save_id_numeric = stoull_be(save_id->GetName()); |
|
|
|
auto user_id_numeric = Common::HexStringToArray<0x10>(user_id->GetName()); |
|
|
|
std::reverse(user_id_numeric.begin(), user_id_numeric.end()); |
|
|
|
@ -160,6 +165,10 @@ private: |
|
|
|
} else if (space == FileSys::SaveDataSpaceId::TemporaryStorage) { |
|
|
|
// Temporary Storage
|
|
|
|
for (const auto& user_id : type->GetSubdirectories()) { |
|
|
|
// Skip non user id subdirectories
|
|
|
|
if (user_id->GetName().size() != 0x20) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
for (const auto& title_id : user_id->GetSubdirectories()) { |
|
|
|
if (!title_id->GetFiles().empty() || |
|
|
|
!title_id->GetSubdirectories().empty()) { |
|
|
|
|