diff options
| author | hrydgard <hrydgard@gmail.com> | 2010-01-11 23:27:02 +0000 |
|---|---|---|
| committer | hrydgard <hrydgard@gmail.com> | 2010-01-11 23:27:02 +0000 |
| commit | ddcb39d8e376ee1fdb5bee9a3ddd025d3d26f219 (patch) | |
| tree | 74b5acb2cdb5b1d00daffa17514d8f64b9ee0228 /Source/Core | |
| parent | c840297615c8e291be5516502156a6755d6a58fa (diff) | |
ISO compression: Report filename in corruption warnings.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4807 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DiscIO/Src/Blob.h | 1 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/CompressedBlob.cpp | 7 | ||||
| -rw-r--r-- | Source/Core/DiscIO/Src/CompressedBlob.h | 24 |
3 files changed, 19 insertions, 13 deletions
diff --git a/Source/Core/DiscIO/Src/Blob.h b/Source/Core/DiscIO/Src/Blob.h index 6e8c80b1f7..556ba23402 100644 --- a/Source/Core/DiscIO/Src/Blob.h +++ b/Source/Core/DiscIO/Src/Blob.h @@ -40,6 +40,7 @@ public: virtual u64 GetRawSize() const = 0; virtual u64 GetDataSize() const = 0; + // NOT thread-safe - can't call this from multiple threads. virtual bool Read(u64 offset, u64 size, u8* out_ptr) = 0; protected: diff --git a/Source/Core/DiscIO/Src/CompressedBlob.cpp b/Source/Core/DiscIO/Src/CompressedBlob.cpp index 05973e8ab3..dcaa9da2b6 100644 --- a/Source/Core/DiscIO/Src/CompressedBlob.cpp +++ b/Source/Core/DiscIO/Src/CompressedBlob.cpp @@ -37,6 +37,7 @@ namespace DiscIO CompressedBlobReader::CompressedBlobReader(const char *filename) { + file_name = filename; file = fopen(filename, "rb"); fseek(file, 0, SEEK_END); file_size = ftell(file); @@ -118,8 +119,10 @@ void CompressedBlobReader::GetBlock(u64 block_num, u8 *out_ptr) // First, check hash. u32 block_hash = HashAdler32(source, comp_block_size); if (block_hash != hashes[block_num]) - PanicAlert("Hash of block %i is %08x instead of %08x. Your ISO is corrupt.", - block_num, block_hash, hashes[block_num]); + PanicAlert("Hash of block %i is %08x instead of %08x.\n" + "Your ISO, %s, is corrupt.", + block_num, block_hash, hashes[block_num], + file_name.c_str()); if (uncompressed) { diff --git a/Source/Core/DiscIO/Src/CompressedBlob.h b/Source/Core/DiscIO/Src/CompressedBlob.h index 1a63551043..cd96393039 100644 --- a/Source/Core/DiscIO/Src/CompressedBlob.h +++ b/Source/Core/DiscIO/Src/CompressedBlob.h @@ -29,6 +29,8 @@ #define COMPRESSED_BLOB_H_ #include <stdio.h> +#include <string> + #include "Blob.h" namespace DiscIO @@ -56,7 +58,17 @@ struct CompressedBlobHeader // 32 bytes class CompressedBlobReader : public SectorReader { +public: + static CompressedBlobReader* Create(const char *filename); + ~CompressedBlobReader(); + const CompressedBlobHeader &GetHeader() const { return header; } + u64 GetDataSize() const { return header.data_size; } + u64 GetRawSize() const { return file_size; } + u64 GetBlockCompressedSize(u64 block_num) const; + void GetBlock(u64 block_num, u8 *out_ptr); private: + CompressedBlobReader(const char *filename); + CompressedBlobHeader header; u64 *block_pointers; u32 *hashes; @@ -65,17 +77,7 @@ private: u64 file_size; u8 *zlib_buffer; int zlib_buffer_size; - - CompressedBlobReader(const char *filename); - -public: - static CompressedBlobReader* Create(const char *filename); - ~CompressedBlobReader(); - const CompressedBlobHeader &GetHeader() const { return header; } - u64 GetDataSize() const { return header.data_size; } - u64 GetRawSize() const { return file_size; } - u64 GetBlockCompressedSize(u64 block_num) const; - void GetBlock(u64 block_num, u8 *out_ptr); + std::string file_name; }; } // namespace |
