aboutsummaryrefslogtreecommitdiff
path: root/lib/base/rawfile.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-03-07 00:43:52 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-03-07 00:43:52 +0000
commit08ee4eef0af570f64937fd7a20c5d71dfb89cabc (patch)
tree40237fa15f2213ec4fac1bd25cdfd5d3adecde6b /lib/base/rawfile.cpp
parentb66054905ad03ecc77b93119424c0a1b4401f548 (diff)
downloadenigma2-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.cpp20
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
{