diff options
author | Chris Wilson <chris+github@qwirx.com> | 2006-10-16 23:24:18 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2006-10-16 23:24:18 +0000 |
commit | 20c177ab912261d24d24e8bef3726a13100c956d (patch) | |
tree | 2644b434296a491fe8852e820e39dac34754724a /lib/common/FileStream.cpp | |
parent | aa04aefdbd2fcd1fd288b78719f474e6b6fa77fb (diff) |
Set the filename to "HANDLE" under Win32 when initialising from an
existing handle.
Handle ERROR_BROKEN_PIPE as EOF when using FileStream to read from a
pipe in LocalProcessStream. (refs #3)
Diffstat (limited to 'lib/common/FileStream.cpp')
-rw-r--r-- | lib/common/FileStream.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/common/FileStream.cpp b/lib/common/FileStream.cpp index 02b558bd..89ae7a1f 100644 --- a/lib/common/FileStream.cpp +++ b/lib/common/FileStream.cpp @@ -47,7 +47,7 @@ FileStream::FileStream(const char *Filename, int flags, int mode) // -------------------------------------------------------------------------- // // Function -// Name: FileStream::FileStream(int) +// Name: FileStream::FileStream(tOSFileHandle) // Purpose: Constructor, using existing file descriptor // Created: 2003/08/28 // @@ -65,6 +65,9 @@ FileStream::FileStream(tOSFileHandle FileDescriptor) MEMLEAKFINDER_NOT_A_LEAK(this); THROW_EXCEPTION(CommonException, OSFileOpenError) } +#ifdef WIN32 + this->fileName = "HANDLE"; +#endif } #if 0 @@ -138,8 +141,14 @@ int FileStream::Read(void *pBuffer, int NBytes, int Timeout) { r = numBytesRead; } + else if (GetLastError() == ERROR_BROKEN_PIPE) + { + r = 0; + } else { + ::syslog(LOG_ERR, "Failed to read from file: error %d", + GetLastError()); r = -1; } #else @@ -307,15 +316,12 @@ void FileStream::Close() #ifdef WIN32 if(::CloseHandle(mOSFileHandle) == 0) - { - THROW_EXCEPTION(CommonException, OSFileCloseError) - } #else if(::close(mOSFileHandle) != 0) +#endif { THROW_EXCEPTION(CommonException, OSFileCloseError) } -#endif mOSFileHandle = INVALID_FILE; mIsEOF = true; |