Merge pull request #13709 from JosJuice/hide-header-bin

Hide DirectoryBlob header.bin files from game list
This commit is contained in:
Admiral H. Curtiss
2025-05-26 19:41:07 +02:00
committed by GitHub

View File

@ -240,13 +240,13 @@ static bool PathCharactersEqual(char a, char b)
return a == b || (IsDirectorySeparator(a) && IsDirectorySeparator(b));
}
static bool PathEndsWith(const std::string& path, const std::string& suffix)
static bool PathEndsWith(const std::string& path, const std::string_view suffix)
{
if (suffix.size() > path.size())
return false;
std::string::const_iterator path_iterator = path.cend() - suffix.size();
std::string::const_iterator suffix_iterator = suffix.cbegin();
std::string_view::const_iterator suffix_iterator = suffix.cbegin();
while (path_iterator != path.cend())
{
if (!PathCharactersEqual(*path_iterator, *suffix_iterator))
@ -341,19 +341,28 @@ static bool IsMainDolForNonGamePartition(const std::string& path)
static bool IsBootBin(const std::string& path)
{
if (!PathEndsWith(path, "/sys/boot.bin"))
static constexpr std::string_view boot_bin = "/sys/boot.bin";
if (!PathEndsWith(path, boot_bin))
return false;
static constexpr size_t chars_to_remove = std::string_view("sys/boot.bin").size();
const std::string partition_root = path.substr(0, path.size() - chars_to_remove);
const std::string partition_root = path.substr(0, path.size() - boot_bin.size());
return File::Exists(partition_root + "/sys/main.dol");
}
return File::Exists(partition_root + "sys/main.dol");
static bool IsHeaderBin(const std::string& path)
{
static constexpr std::string_view header_bin = "/disc/header.bin";
if (!PathEndsWith(path, header_bin))
return false;
const std::string partition_root = path.substr(0, path.size() - header_bin.size());
return File::Exists(partition_root + "/sys/main.dol");
}
bool ShouldHideFromGameList(const std::string& volume_path)
{
return IsInFilesDirectory(volume_path) || IsMainDolForNonGamePartition(volume_path) ||
IsBootBin(volume_path);
IsBootBin(volume_path) || IsHeaderBin(volume_path);
}
std::unique_ptr<DirectoryBlobReader> DirectoryBlobReader::Create(const std::string& dol_path)