diff options
author | Chris Wilson <chris+github@qwirx.com> | 2008-09-07 13:20:14 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2008-09-07 13:20:14 +0000 |
commit | e1c75e5922a4f031e9f8312d1f981f63bcbeb48d (patch) | |
tree | f7fba7bfecf6fb621a8c5f84c88296d411ffa928 /lib/common/FileStream.cpp | |
parent | f6e4a8c70c99f8af53125223cb5e2b447bf0fcd5 (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.cpp | 28 |
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) } } |