@@ -33,10 +33,11 @@ #import "OFApplication.h" #ifdef OF_WINDOWS # include "OFStdIOStream_Win32Console.h" #endif +#import "OFNotOpenException.h" #import "OFOutOfRangeException.h" #import "OFReadFailedException.h" #import "OFWriteFailedException.h" #ifdef OF_MORPHOS @@ -165,15 +166,14 @@ - (bool)lowlevelIsAtEndOfStream { #ifndef OF_MORPHOS if (_fd == -1) - return true; #else if (_handle == 0) - return true; #endif + @throw [OFNotOpenException exceptionWithObject: self]; return _atEndOfStream; } - (size_t)lowlevelReadIntoBuffer: (void *)buffer @@ -180,13 +180,12 @@ length: (size_t)length { ssize_t ret; #ifndef OF_MORPHOS - if (_fd == -1 || _atEndOfStream) - @throw [OFReadFailedException exceptionWithObject: self - requestedLength: length]; + if (_fd == -1) + @throw [OFNotOpenException exceptionWithObject: self]; # ifndef OF_WINDOWS if ((ret = read(_fd, buffer, length)) < 0) @throw [OFReadFailedException exceptionWithObject: self requestedLength: length @@ -199,13 +198,12 @@ @throw [OFReadFailedException exceptionWithObject: self requestedLength: length errNo: errno]; # endif #else - if (_handle == 0 || _atEndOfStream) - @throw [OFReadFailedException exceptionWithObject: self - requestedLength: length]; + if (_handle == 0) + @throw [OFNotOpenException exceptionWithObject: self]; if (length > LONG_MAX) @throw [OFOutOfRangeException exception]; if ((ret = Read(_handle, buffer, length)) < 0) @@ -221,13 +219,12 @@ - (void)lowlevelWriteBuffer: (const void *)buffer length: (size_t)length { #ifndef OF_MORPHOS - if (_fd == -1 || _atEndOfStream) - @throw [OFWriteFailedException exceptionWithObject: self - requestedLength: length]; + if (_fd == -1) + @throw [OFNotOpenException exceptionWithObject: self]; # ifndef OF_WINDOWS if (length > SSIZE_MAX) @throw [OFOutOfRangeException exception]; @@ -243,13 +240,12 @@ @throw [OFWriteFailedException exceptionWithObject: self requestedLength: length errNo: errno]; # endif #else - if (_handle == 0 || _atEndOfStream) - @throw [OFWriteFailedException exceptionWithObject: self - requestedLength: length]; + if (_handle == 0) + @throw [OFNotOpenException exceptionWithObject: self]; if (length > SSIZE_MAX) @throw [OFOutOfRangeException exception]; if (Write(_handle, (void *)buffer, length) != (LONG)length)