diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-03-07 00:43:52 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-03-07 00:43:52 +0000 |
| commit | 08ee4eef0af570f64937fd7a20c5d71dfb89cabc (patch) | |
| tree | 40237fa15f2213ec4fac1bd25cdfd5d3adecde6b /lib/base/rawfile.cpp | |
| parent | b66054905ad03ecc77b93119424c0a1b4401f548 (diff) | |
| download | enigma2-08ee4eef0af570f64937fd7a20c5d71dfb89cabc.tar.gz enigma2-08ee4eef0af570f64937fd7a20c5d71dfb89cabc.zip | |
fix seek return values, valid() for cached files
Diffstat (limited to 'lib/base/rawfile.cpp')
| -rw-r--r-- | lib/base/rawfile.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/base/rawfile.cpp b/lib/base/rawfile.cpp index d55f925c..0d8a93b5 100644 --- a/lib/base/rawfile.cpp +++ b/lib/base/rawfile.cpp @@ -59,7 +59,10 @@ off_t eRawFile::lseek(off_t offset, int whence) if (!m_cached) return ::lseek(m_fd, offset, whence); else - return ::fseeko(m_file, offset, whence); + { + ::fseeko(m_file, offset, whence); + return ::ftello(m_file); + } } switch (whence) { @@ -123,7 +126,10 @@ ssize_t eRawFile::read(void *buf, size_t count) int eRawFile::valid() { - return m_fd != -1; + if (!m_cached) + return m_fd != -1; + else + return !!m_file; } void eRawFile::scan() @@ -146,9 +152,10 @@ void eRawFile::scan() FILE *f = (FILE*)openFile(m_nrfiles); if (!f) break; + ::fseeko(f, 0, SEEK_END); if (!m_nrfiles) - m_splitsize = ::fseeko(f, 0, SEEK_END); - m_totallength += ::fseeko(f, 0, SEEK_END); + m_splitsize = ::ftello(f); + m_totallength += ::ftello(f); ::fclose(f); } @@ -183,7 +190,10 @@ int eRawFile::switchOffset(off_t off) if (!m_cached) m_last_offset = ::lseek(m_fd, off - m_base_offset, SEEK_SET) + m_base_offset; else - m_last_offset = ::fseeko(m_file, off - m_base_offset, SEEK_SET) + m_base_offset; + { + ::fseeko(m_file, off - m_base_offset, SEEK_SET); + m_last_offset = ::ftello(m_file) + m_base_offset; + } return m_last_offset; } else { |
