git.cweiske.de
/
enigma2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix satconfig
[enigma2.git]
/
lib
/
base
/
rawfile.cpp
diff --git
a/lib/base/rawfile.cpp
b/lib/base/rawfile.cpp
index d55f925c0ca7fd94a2026e9d6bc052f9da17a8b2..0d8a93b525683d9a2077f370ebccf22c20da191e 100644
(file)
--- 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
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)
{
}
switch (whence)
{
@@
-123,7
+126,10
@@
ssize_t eRawFile::read(void *buf, size_t count)
int eRawFile::valid()
{
int eRawFile::valid()
{
- return m_fd != -1;
+ if (!m_cached)
+ return m_fd != -1;
+ else
+ return !!m_file;
}
void eRawFile::scan()
}
void eRawFile::scan()
@@
-146,9
+152,10
@@
void eRawFile::scan()
FILE *f = (FILE*)openFile(m_nrfiles);
if (!f)
break;
FILE *f = (FILE*)openFile(m_nrfiles);
if (!f)
break;
+ ::fseeko(f, 0, SEEK_END);
if (!m_nrfiles)
if (!m_nrfiles)
- m_splitsize = ::f
seeko(f, 0, SEEK_END
);
- m_totallength += ::f
seeko(f, 0, SEEK_END
);
+ m_splitsize = ::f
tello(f
);
+ m_totallength += ::f
tello(f
);
::fclose(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
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
{
return m_last_offset;
} else
{