|
@@ -102,6 +102,16 @@ void FILE::purge()
|
|
|
m_buffer.drop();
|
|
|
}
|
|
|
|
|
|
+size_t FILE::pending()
|
|
|
+{
|
|
|
+ if (m_mode & O_RDONLY) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // FIXME: Check if our buffer is a write buffer, and only count those bytes.
|
|
|
+ return m_buffer.buffered_size();
|
|
|
+}
|
|
|
+
|
|
|
ssize_t FILE::do_read(u8* data, size_t size)
|
|
|
{
|
|
|
int nread = ::read(m_fd, data, size);
|
|
@@ -1279,6 +1289,12 @@ FILE* tmpfile()
|
|
|
return fdopen(fd, "rw");
|
|
|
}
|
|
|
|
|
|
+size_t __fpending(FILE* stream)
|
|
|
+{
|
|
|
+ ScopedFileLock lock(stream);
|
|
|
+ return stream->pending();
|
|
|
+}
|
|
|
+
|
|
|
int __freading(FILE* stream)
|
|
|
{
|
|
|
ScopedFileLock lock(stream);
|