Index: src/OFFile.m ================================================================== --- src/OFFile.m +++ src/OFFile.m @@ -593,20 +593,24 @@ - (void)_seekToOffset: (off_t)offset { if (lseek(fd, offset, SEEK_SET) == -1) @throw [OFSeekFailedException newWithClass: isa - stream: self]; + stream: self + offset: offset + whence: SEEK_SET]; } - (off_t)_seekForwardWithOffset: (off_t)offset { off_t ret; if ((ret = lseek(fd, offset, SEEK_CUR)) == -1) @throw [OFSeekFailedException newWithClass: isa - stream: self]; + stream: self + offset: offset + whence: SEEK_CUR]; return ret; } - (off_t)_seekToOffsetRelativeToEnd: (off_t)offset @@ -613,11 +617,13 @@ { off_t ret; if ((ret = lseek(fd, offset, SEEK_END)) == -1) @throw [OFSeekFailedException newWithClass: isa - stream: self]; + stream: self + offset: offset + whence: SEEK_END]; return ret; } - (int)fileDescriptor Index: src/exceptions/OFSeekFailedException.h ================================================================== --- src/exceptions/OFSeekFailedException.h +++ src/exceptions/OFSeekFailedException.h @@ -11,10 +11,12 @@ * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ + +#include #import "OFException.h" @class OFSeekableStream; @@ -22,39 +24,61 @@ * \brief An exception indicating that seeking in a stream failed. */ @interface OFSeekFailedException: OFException { OFSeekableStream *stream; + off_t offset; + int whence; int errNo; } #ifdef OF_HAVE_PROPERTIES @property (readonly, nonatomic) OFSeekableStream *stream; +@property (readonly) off_t offset; +@property (readonly) int whence; @property (readonly) int errNo; #endif /** * \param stream The stream for which seeking failed + * \param offset The offset to which seeking failed + * \param whence To what the offset is relative * \return A new seek failed exception */ + newWithClass: (Class)class_ - stream: (OFSeekableStream*)stream; + stream: (OFSeekableStream*)stream + offset: (off_t)offset + whence: (int)whence; /** * Initializes an already allocated seek failed exception. * * \param stream The stream for which seeking failed + * \param offset The offset to which seeking failed + * \param whence To what the offset is relative * \return An initialized seek failed exception */ - initWithClass: (Class)class_ - stream: (OFSeekableStream*)stream; + stream: (OFSeekableStream*)stream + offset: (off_t)offset + whence: (int)whence; /** * \return The stream for which seeking failed */ - (OFSeekableStream*)stream; +/** + * \return The offset to which seeking failed + */ +- (off_t)offset; + +/** + * \return To what the offset is relative + */ +- (int)whence; + /** * \return The errno from when the exception was created */ - (int)errNo; @end Index: src/exceptions/OFSeekFailedException.m ================================================================== --- src/exceptions/OFSeekFailedException.m +++ src/exceptions/OFSeekFailedException.m @@ -24,13 +24,17 @@ #import "common.h" @implementation OFSeekFailedException + newWithClass: (Class)class_ stream: (OFSeekableStream*)stream + offset: (off_t)offset + whence: (int)whence { return [[self alloc] initWithClass: class_ - stream: stream]; + stream: stream + offset: offset + whence: whence]; } - initWithClass: (Class)class_ { Class c = isa; @@ -39,15 +43,19 @@ selector: _cmd]; } - initWithClass: (Class)class_ stream: (OFSeekableStream*)stream_ + offset: (off_t)offset_ + whence: (int)whence_ { self = [super initWithClass: class_]; @try { stream = [stream_ retain]; + offset = offset_; + whence = whence_; errNo = GET_ERRNO; } @catch (id e) { [self release]; @throw e; } @@ -75,11 +83,21 @@ - (OFSeekableStream*)stream { return stream; } + +- (off_t)offset +{ + return offset; +} + +- (int)whence +{ + return whence; +} - (int)errNo { return errNo; } @end