[Box Backup-dev] COMMIT r272 - box/chris/win32/vc2005-compile-fixes/lib/common

boxbackup-dev@fluffy.co.uk boxbackup-dev@fluffy.co.uk
Thu, 22 Dec 2005 02:33:25 +0000 (GMT)


Author: chris
Date: 2005-12-22 02:33:24 +0000 (Thu, 22 Dec 2005)
New Revision: 272

Modified:
   box/chris/win32/vc2005-compile-fixes/lib/common/Guards.h
Log:
Ported Guards.h for Win32


Modified: box/chris/win32/vc2005-compile-fixes/lib/common/Guards.h
===================================================================
--- box/chris/win32/vc2005-compile-fixes/lib/common/Guards.h	2005-12-22 02:15:24 UTC (rev 271)
+++ box/chris/win32/vc2005-compile-fixes/lib/common/Guards.h	2005-12-22 02:33:24 UTC (rev 272)
@@ -26,12 +26,24 @@
 
 #include "MemLeakFindOn.h"
 
+#ifdef WIN32
+	#define INVALID_FILE NULL
+	typedef HANDLE tOSFileHandle;
+#else
+	#define INVALID_FILE -1
+	typedef int tOSFileHandle;
+#endif
+
 template <int flags = O_RDONLY, int mode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)>
 class FileHandleGuard
 {
 public:
 	FileHandleGuard(const char *filename)
+#ifdef WIN32
+		: mOSFileHandle(::openfile(filename, flags, mode))
+#else
 		: mOSFileHandle(::open(filename, flags, mode))
+#endif
 	{
 		if(mOSFileHandle < 0)
 		{
@@ -41,7 +53,7 @@
 	
 	~FileHandleGuard()
 	{
-		if(mOSFileHandle >= 0)
+		if(mOSFileHandle == INVALID_FILE)
 		{
 			Close();
 		}
@@ -49,24 +61,28 @@
 	
 	void Close()
 	{
-		if(mOSFileHandle < 0)
+		if(mOSFileHandle == INVALID_FILE)
 		{
 			THROW_EXCEPTION(CommonException, FileAlreadyClosed)
 		}
+#ifdef WIN32
+		if(::CloseHandle(mOSFileHandle) == 0)
+#else
 		if(::close(mOSFileHandle) != 0)
+#endif
 		{
 			THROW_EXCEPTION(CommonException, OSFileCloseError)
 		}
-		mOSFileHandle = -1;
+		mOSFileHandle = INVALID_FILE;
 	}
 	
 	operator int() const
 	{
-		return mOSFileHandle;
+		return (int)mOSFileHandle;
 	}
 
 private:
-	int mOSFileHandle;
+	tOSFileHandle mOSFileHandle;
 };
 
 template<typename type>