summaryrefslogtreecommitdiff
path: root/lib/common/FileStream.cpp
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2008-09-07 13:20:14 +0000
committerChris Wilson <chris+github@qwirx.com>2008-09-07 13:20:14 +0000
commite1c75e5922a4f031e9f8312d1f981f63bcbeb48d (patch)
treef7fba7bfecf6fb621a8c5f84c88296d411ffa928 /lib/common/FileStream.cpp
parentf6e4a8c70c99f8af53125223cb5e2b447bf0fcd5 (diff)
Fix test regression on Windows where a const char pointer was treated
as a file handle instead of as a string.
Diffstat (limited to 'lib/common/FileStream.cpp')
-rw-r--r--lib/common/FileStream.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/common/FileStream.cpp b/lib/common/FileStream.cpp
index 2e76460a..c4a979b5 100644
--- a/lib/common/FileStream.cpp
+++ b/lib/common/FileStream.cpp
@@ -33,6 +33,32 @@ FileStream::FileStream(const std::string& rFilename, int flags, int mode)
mIsEOF(false),
mFileName(rFilename)
{
+ AfterOpen();
+}
+
+// --------------------------------------------------------------------------
+//
+// Function
+// Name: FileStream::FileStream(const char *, int, int)
+// Purpose: Alternative constructor, takes a const char *,
+// avoids const strings being interpreted as handles!
+// Created: 2003/07/31
+//
+// --------------------------------------------------------------------------
+FileStream::FileStream(const char *pFilename, int flags, int mode)
+#ifdef WIN32
+ : mOSFileHandle(::openfile(pFilename, flags, mode)),
+#else
+ : mOSFileHandle(::open(pFilename, flags, mode)),
+#endif
+ mIsEOF(false),
+ mFileName(pFilename)
+{
+ AfterOpen();
+}
+
+void FileStream::AfterOpen()
+{
#ifdef WIN32
if(mOSFileHandle == INVALID_HANDLE_VALUE)
#else
@@ -48,7 +74,7 @@ FileStream::FileStream(const std::string& rFilename, int flags, int mode)
else
{
BOX_LOG_SYS_WARNING("Failed to open file: " <<
- rFilename);
+ mFileName);
THROW_EXCEPTION(CommonException, OSFileOpenError)
}
}