diff --git a/Core/FileLoaders/HTTPFileLoader.cpp b/Core/FileLoaders/HTTPFileLoader.cpp index 24e5387447f4..2f75ba294a71 100644 --- a/Core/FileLoaders/HTTPFileLoader.cpp +++ b/Core/FileLoaders/HTTPFileLoader.cpp @@ -117,7 +117,7 @@ void HTTPFileLoader::Prepare() { int HTTPFileLoader::SendHEAD(const Url &url, std::vector &responseHeaders) { if (!url.Valid()) { - ERROR_LOG(LOADER, "HTTP request failed, invalid URL"); + ERROR_LOG(LOADER, "HTTP request failed, invalid URL: '%s'", url.ToString().c_str()); latestError_ = "Invalid URL"; return -400; } @@ -131,7 +131,7 @@ int HTTPFileLoader::SendHEAD(const Url &url, std::vector &responseH client_.SetDataTimeout(20.0); Connect(); if (!connected_) { - ERROR_LOG(LOADER, "HTTP request failed, failed to connect: %s port %d", url.Host().c_str(), url.Port()); + ERROR_LOG(LOADER, "HTTP request failed, failed to connect: %s port %d (resource: '%s')", url.Host().c_str(), url.Port(), url.Resource().c_str()); latestError_ = "Could not connect (refused to connect)"; return -400; } diff --git a/Core/FileSystems/BlockDevices.cpp b/Core/FileSystems/BlockDevices.cpp index 3ada5b861cdd..01086a3f6488 100644 --- a/Core/FileSystems/BlockDevices.cpp +++ b/Core/FileSystems/BlockDevices.cpp @@ -40,8 +40,14 @@ extern "C" std::mutex NPDRMDemoBlockDevice::mutex_; BlockDevice *constructBlockDevice(FileLoader *fileLoader) { - if (!fileLoader->Exists()) + if (!fileLoader->Exists()) { return nullptr; + } + if (fileLoader->IsDirectory()) { + ERROR_LOG(LOADER, "Can't open directory directly as block device: %s", fileLoader->GetPath().c_str()); + return nullptr; + } + char buffer[8]{}; size_t size = fileLoader->ReadAt(0, 1, 8, buffer); if (size != 8) { @@ -61,7 +67,7 @@ BlockDevice *constructBlockDevice(FileLoader *fileLoader) { return new CHDFileBlockDevice(fileLoader); } - // Should be just a regular ISO. Let's open it as a plain block device and let the other systems take over. + // Should be just a regular ISO file. Let's open it as a plain block device and let the other systems take over. return new FileBlockDevice(fileLoader); } diff --git a/UI/GameInfoCache.cpp b/UI/GameInfoCache.cpp index dc0cde0a4a6c..3e9ed1d496e8 100644 --- a/UI/GameInfoCache.cpp +++ b/UI/GameInfoCache.cpp @@ -127,7 +127,8 @@ u64 GameInfo::GetGameSizeOnDiskInBytes() { case IdentifiedFileType::PSP_PBP_DIRECTORY: case IdentifiedFileType::PSP_SAVEDATA_DIRECTORY: return File::ComputeRecursiveDirectorySize(ResolvePBPDirectory(filePath_)); - + case IdentifiedFileType::PSP_DISC_DIRECTORY: + return File::ComputeRecursiveDirectorySize(GetFileLoader()->GetPath()); default: return GetFileLoader()->FileSize(); } @@ -138,7 +139,8 @@ u64 GameInfo::GetGameSizeUncompressedInBytes() { case IdentifiedFileType::PSP_PBP_DIRECTORY: case IdentifiedFileType::PSP_SAVEDATA_DIRECTORY: return File::ComputeRecursiveDirectorySize(ResolvePBPDirectory(filePath_)); - + case IdentifiedFileType::PSP_DISC_DIRECTORY: + return File::ComputeRecursiveDirectorySize(GetFileLoader()->GetPath()); default: { BlockDevice *blockDevice = constructBlockDevice(GetFileLoader().get()); @@ -576,7 +578,6 @@ class GameInfoWorkItem : public Task { case IdentifiedFileType::PSP_DISC_DIRECTORY: { - info_->fileType = IdentifiedFileType::PSP_ISO; SequentialHandleAllocator handles; VirtualDiscFileSystem umd(&handles, gamePath_); @@ -606,7 +607,6 @@ class GameInfoWorkItem : public Task { case IdentifiedFileType::PSP_ISO: case IdentifiedFileType::PSP_ISO_NP: { - info_->fileType = IdentifiedFileType::PSP_ISO; SequentialHandleAllocator handles; // Let's assume it's an ISO. // TODO: This will currently read in the whole directory tree. Not really necessary for just a