mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-28 01:49:33 -06:00
Hide DirectoryBlob header.bin files from game list
This is a continuation of 552b6da
. That commit hid sys/boot.bin, but not
disc/header.bin, which is only present for Wii games.
Fixes https://bugs.dolphin-emu.org/issues/13810.
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user