Index: src/OFSeekableStream.m ================================================================== --- src/OFSeekableStream.m +++ src/OFSeekableStream.m @@ -31,11 +31,10 @@ selector: _cmd]; } - (void)seekToOffset: (off_t)offset { - [self flushWriteBuffer]; [self _seekToOffset: offset]; [self freeMemory: cache]; cache = NULL; cacheLen = 0; @@ -43,11 +42,10 @@ - (off_t)seekForwardWithOffset: (off_t)offset { off_t ret; - [self flushWriteBuffer]; ret = [self _seekForwardWithOffset: offset - cacheLen]; [self freeMemory: cache]; cache = NULL; cacheLen = 0; @@ -57,15 +55,14 @@ - (off_t)seekToOffsetRelativeToEnd: (off_t)offset { off_t ret; - [self flushWriteBuffer]; ret = [self _seekToOffsetRelativeToEnd: offset]; [self freeMemory: cache]; cache = NULL; cacheLen = 0; return ret; } @end Index: src/OFStream.h ================================================================== --- src/OFStream.h +++ src/OFStream.h @@ -30,11 +30,11 @@ @public char *cache; @protected char *wBuffer; size_t cacheLen, wBufferLen; - BOOL useWBuffer; + BOOL bufferWrites;; } /** * Returns a boolean whether the end of the stream has been reached. * @@ -196,16 +196,23 @@ */ - (OFString*)readTillDelimiter: (OFString*)delimiter withEncoding: (enum of_string_encoding)encoding; /** - * Buffer all writes until flushWriteBuffer is called. + * \return A boolean whether writes are buffered + */ +- (BOOL)bufferWrites; + +/** + * Enables or disables the write buffer. + * + * \param enable Whether the write buffer should be enabled or disabled */ -- (void)bufferWrites; +- (void)setBufferWrites: (BOOL)enable; /** - * Writes everything in the write cache to the stream. + * Writes everythig in the write buffer to the stream. */ - (void)flushWriteBuffer; /** * Writes from a buffer into the stream. Index: src/OFStream.m ================================================================== --- src/OFStream.m +++ src/OFStream.m @@ -513,13 +513,18 @@ /* Get rid of a warning, never reached anyway */ assert(0); } -- (void)bufferWrites +- (BOOL)bufferWrites +{ + return bufferWrites; +} + +- (void)setBufferWrites: (BOOL)enable { - useWBuffer = YES; + bufferWrites = enable; } - (void)flushWriteBuffer { if (wBuffer == NULL) @@ -529,17 +534,16 @@ fromBuffer: wBuffer]; [self freeMemory: wBuffer]; wBuffer = NULL; wBufferLen = 0; - useWBuffer = NO; } - (size_t)writeNBytes: (size_t)size fromBuffer: (const char*)buf { - if (!useWBuffer) + if (!bufferWrites) return [self _writeNBytes: size fromBuffer: buf]; else { wBuffer = [self resizeMemory: wBuffer toSize: wBufferLen + size];