[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>