1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 03:37:43 +00:00

LibC: Partially implement __fpending

This commit is contained in:
Tim Schumacher 2021-05-27 12:47:01 +02:00 committed by Brian Gianforcaro
parent 304dbb0242
commit 4917a610ab
3 changed files with 18 additions and 0 deletions

View file

@ -31,6 +31,7 @@ public:
bool flush(); bool flush();
void purge(); void purge();
size_t pending();
bool close(); bool close();
void lock(); void lock();

View file

@ -102,6 +102,16 @@ void FILE::purge()
m_buffer.drop(); 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) ssize_t FILE::do_read(u8* data, size_t size)
{ {
int nread = ::read(m_fd, data, size); int nread = ::read(m_fd, data, size);
@ -1279,6 +1289,12 @@ FILE* tmpfile()
return fdopen(fd, "rw"); return fdopen(fd, "rw");
} }
size_t __fpending(FILE* stream)
{
ScopedFileLock lock(stream);
return stream->pending();
}
int __freading(FILE* stream) int __freading(FILE* stream)
{ {
ScopedFileLock lock(stream); ScopedFileLock lock(stream);

View file

@ -10,6 +10,7 @@
__BEGIN_DECLS __BEGIN_DECLS
size_t __fpending(FILE*);
int __freading(FILE*); int __freading(FILE*);
int __fwriting(FILE*); int __fwriting(FILE*);
void __fpurge(FILE*); void __fpurge(FILE*);