InputStream: make Seek() always absolute

Remove the "whence" parameter that is not actually necessary, and only
complicates the InputStream implementations.
This commit is contained in:
Max Kellermann
2014-05-22 10:10:16 +02:00
parent 374c6a27db
commit 07b93dcf80
28 changed files with 184 additions and 127 deletions

View File

@@ -62,12 +62,31 @@ FlacIORead(void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle)
}
static int
FlacIOSeek(FLAC__IOHandle handle, FLAC__int64 offset, int whence)
FlacIOSeek(FLAC__IOHandle handle, FLAC__int64 _offset, int whence)
{
InputStream *is = (InputStream *)handle;
Error error;
return is->LockSeek(offset, whence, error) ? 0 : -1;
InputStream::offset_type offset = _offset;
switch (whence) {
case SEEK_SET:
break;
case SEEK_CUR:
offset += is->GetOffset();
break;
case SEEK_END:
if (!is->KnownSize())
return -1;
offset += is->GetSize();
break;
default:
return -1;
}
return is->LockSeek(offset, IgnoreError()) ? 0 : -1;
}
static FLAC__int64