From edaf59a759f26f2caf6ba70de47f52b667743e5c Mon Sep 17 00:00:00 2001
From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Date: Fri, 12 Sep 2014 00:16:54 +0200
Subject: Common: Return the number of items read/written in IOFile’s methods
 instead of a boolean.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/common/file_util.h | 28 ++++++++++++++++++++--------
 1 file changed, 20 insertions(+), 8 deletions(-)

(limited to 'src/common/file_util.h')

diff --git a/src/common/file_util.h b/src/common/file_util.h
index fdae5c9c89..8efff49581 100644
--- a/src/common/file_util.h
+++ b/src/common/file_util.h
@@ -151,29 +151,41 @@ public:
 	bool Close();
 
 	template <typename T>
-	bool ReadArray(T* data, size_t length)
+	size_t ReadArray(T* data, size_t length)
 	{
-		if (!IsOpen() || length != std::fread(data, sizeof(T), length, m_file))
+		if (!IsOpen()) {
 			m_good = false;
+			return -1;
+		}
 
-		return m_good;
+		size_t items_read = std::fread(data, sizeof(T), length, m_file);
+		if (items_read != length)
+			m_good = false;
+
+		return items_read;
 	}
 
 	template <typename T>
-	bool WriteArray(const T* data, size_t length)
+	size_t WriteArray(const T* data, size_t length)
 	{
-		if (!IsOpen() || length != std::fwrite(data, sizeof(T), length, m_file))
+		if (!IsOpen()) {
+			m_good = false;
+			return -1;
+		}
+
+		size_t items_written = std::fwrite(data, sizeof(T), length, m_file);
+		if (items_written != length)
 			m_good = false;
 
-		return m_good;
+		return items_written;
 	}
 
-	bool ReadBytes(void* data, size_t length)
+	size_t ReadBytes(void* data, size_t length)
 	{
 		return ReadArray(reinterpret_cast<char*>(data), length);
 	}
 
-	bool WriteBytes(const void* data, size_t length)
+	size_t WriteBytes(const void* data, size_t length)
 	{
 		return WriteArray(reinterpret_cast<const char*>(data), length);
 	}
-- 
cgit v1.2.3-70-g09d2