summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2010-01-11 23:27:02 +0000
committerhrydgard <hrydgard@gmail.com>2010-01-11 23:27:02 +0000
commitddcb39d8e376ee1fdb5bee9a3ddd025d3d26f219 (patch)
tree74b5acb2cdb5b1d00daffa17514d8f64b9ee0228 /Source/Core
parentc840297615c8e291be5516502156a6755d6a58fa (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.h1
-rw-r--r--Source/Core/DiscIO/Src/CompressedBlob.cpp7
-rw-r--r--Source/Core/DiscIO/Src/CompressedBlob.h24
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