Daniele Bartolini 10 سال پیش
والد
کامیت
6498abfaa8
1فایلهای تغییر یافته به همراه36 افزوده شده و 25 حذف شده
  1. 36 25
      src/core/filesystem/os_file.h

+ 36 - 25
src/core/filesystem/os_file.h

@@ -22,6 +22,8 @@
 namespace crown
 {
 /// Standard C file wrapper
+///
+/// @ingroup Filesystem
 class OsFile
 {
 #if CROWN_PLATFORM_POSIX
@@ -74,19 +76,16 @@ public:
 	/// Closes the file.
 	void close()
 	{
-#if CROWN_PLATFORM_POSIX
-		if (_file != NULL)
+		if (is_open())
 		{
+#if CROWN_PLATFORM_POSIX
 			fclose(_file);
 			_file = NULL;
-		}
 #elif CROWN_PLATFORM_WINDOWS
-		if (is_open())
-		{
 			CloseHandle(_file);
 			_file = INVALID_HANDLE_VALUE;
-		}
 #endif
+		}
 	}
 
 	bool is_open() const
@@ -102,17 +101,15 @@ public:
 	u32 size() const
 	{
 #if CROWN_PLATFORM_POSIX
-		size_t pos = position();
-
+		long pos = ftell(_file);
+		CE_ASSERT(pos != -1, "ftell: errno = %d", errno);
 		int err = fseek(_file, 0, SEEK_END);
 		CE_ASSERT(err == 0, "fseek: errno = %d", errno);
-
-		size_t size = position();
-
+		long size = ftell(_file);
+		CE_ASSERT(size != -1, "ftell: errno = %d", errno);
 		err = fseek(_file, (long)pos, SEEK_SET);
 		CE_ASSERT(err == 0, "fseek: errno = %d", errno);
 		CE_UNUSED(err);
-
 		return (u32)size;
 #elif CROWN_PLATFORM_WINDOWS
 		return GetFileSize(_file, NULL);
@@ -130,12 +127,9 @@ public:
 		return (u32)bytes_read;
 #elif CROWN_PLATFORM_WINDOWS
 		DWORD bytes_read;
-		BOOL result = ReadFile(_file, data, size, &bytes_read, NULL);
-		CE_ASSERT(result == TRUE, "ReadFile: GetLastError = %d", GetLastError());
-
-		if (result && bytes_read == 0)
-			_eof = true;
-
+		BOOL err = ReadFile(_file, data, size, &bytes_read, NULL);
+		CE_ASSERT(err == TRUE, "ReadFile: GetLastError = %d", GetLastError());
+		_eof = err && bytes_read == 0;
 		return bytes_read;
 #endif
 	}
@@ -152,7 +146,10 @@ public:
 #elif CROWN_PLATFORM_WINDOWS
 		DWORD bytes_written;
 		WriteFile(_file, data, size, &bytes_written, NULL);
-		CE_ASSERT(size == bytes_written, "WriteFile: GetLastError = %d", GetLastError());
+		CE_ASSERT(size == bytes_written
+			, "WriteFile: GetLastError = %d"
+			, GetLastError()
+			);
 		return bytes_written;
 #endif
 	}
@@ -164,7 +161,10 @@ public:
 		CE_ASSERT(err == 0, "fflush: errno = %d", errno);
 #elif CROWN_PLATFORM_WINDOWS
 		BOOL err = FlushFileBuffers(_file);
-		CE_ASSERT(err != 0, "FlushFileBuffers: GetLastError = %d", GetLastError());
+		CE_ASSERT(err != 0
+			, "FlushFileBuffers: GetLastError = %d"
+			, GetLastError()
+			);
 #endif
 		CE_UNUSED(err);
 	}
@@ -177,7 +177,10 @@ public:
 		CE_ASSERT(err == 0, "fseek: errno = %d", errno);
 #elif CROWN_PLATFORM_WINDOWS
 		DWORD err = SetFilePointer(_file, position, NULL, FILE_BEGIN);
-		CE_ASSERT(err != INVALID_SET_FILE_POINTER, "SetFilePointer: GetLastError = %d", GetLastError());
+		CE_ASSERT(err != INVALID_SET_FILE_POINTER
+			, "SetFilePointer: GetLastError = %d"
+			, GetLastError()
+			);
 #endif
 		CE_UNUSED(err);
 	}
@@ -190,7 +193,10 @@ public:
 		CE_ASSERT(err == 0, "fseek: errno = %d", errno);
 #elif CROWN_PLATFORM_WINDOWS
 		DWORD err = SetFilePointer(_file, 0, NULL, FILE_END);
-		CE_ASSERT(err != INVALID_SET_FILE_POINTER, "SetFilePointer: GetLastError = %d", GetLastError());
+		CE_ASSERT(err != INVALID_SET_FILE_POINTER
+			, "SetFilePointer: GetLastError = %d"
+			, GetLastError()
+			);
 #endif
 		CE_UNUSED(err);
 	}
@@ -204,7 +210,10 @@ public:
 		CE_ASSERT(err == 0, "fseek: errno = %d", errno);
 #elif CROWN_PLATFORM_WINDOWS
 		DWORD err = SetFilePointer(_file, bytes, NULL, FILE_CURRENT);
-		CE_ASSERT(err != INVALID_SET_FILE_POINTER, "SetFilePointer: GetLastError = %d", GetLastError());
+		CE_ASSERT(err != INVALID_SET_FILE_POINTER
+			, "SetFilePointer: GetLastError = %d"
+			, GetLastError()
+			);
 #endif
 		CE_UNUSED(err);
 	}
@@ -219,10 +228,12 @@ public:
 		return (u32)pos;
 #elif CROWN_PLATFORM_WINDOWS
 		DWORD pos = SetFilePointer(_file, 0, NULL, FILE_CURRENT);
-		CE_ASSERT(pos != INVALID_SET_FILE_POINTER, "SetFilePointer: GetLastError = %d", GetLastError());
+		CE_ASSERT(pos != INVALID_SET_FILE_POINTER
+			, "SetFilePointer: GetLastError = %d"
+			, GetLastError()
+			);
 		return (u32)pos;
 #endif
-		CE_UNUSED(pos);
 	}
 
 	/// Returns whether the file pointer is at the end of the file.