mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 08:08:12 +00:00
LibC: Implement __freadptr
This commit is contained in:
parent
8da0cf7912
commit
9b543ddb16
3 changed files with 26 additions and 0 deletions
|
@ -61,6 +61,8 @@ public:
|
||||||
|
|
||||||
void reopen(int fd, int mode);
|
void reopen(int fd, int mode);
|
||||||
|
|
||||||
|
u8 const* readptr(size_t& available_size);
|
||||||
|
|
||||||
enum Flags : u8 {
|
enum Flags : u8 {
|
||||||
None = 0,
|
None = 0,
|
||||||
LastRead = 1,
|
LastRead = 1,
|
||||||
|
|
|
@ -369,6 +369,11 @@ void FILE::reopen(int fd, int mode)
|
||||||
m_eof = false;
|
m_eof = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u8 const* FILE::readptr(size_t& available_size)
|
||||||
|
{
|
||||||
|
return m_buffer.begin_dequeue(available_size);
|
||||||
|
}
|
||||||
|
|
||||||
FILE::Buffer::~Buffer()
|
FILE::Buffer::~Buffer()
|
||||||
{
|
{
|
||||||
if (m_data_is_malloced)
|
if (m_data_is_malloced)
|
||||||
|
@ -1322,6 +1327,23 @@ void __fpurge(FILE* stream)
|
||||||
ScopedFileLock lock(stream);
|
ScopedFileLock lock(stream);
|
||||||
stream->purge();
|
stream->purge();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char const* __freadptr(FILE* stream, size_t* sizep)
|
||||||
|
{
|
||||||
|
VERIFY(stream);
|
||||||
|
VERIFY(sizep);
|
||||||
|
|
||||||
|
ScopedFileLock lock(stream);
|
||||||
|
|
||||||
|
size_t available_size;
|
||||||
|
u8 const* ptr = stream->readptr(available_size);
|
||||||
|
|
||||||
|
if (available_size == 0)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
*sizep = available_size;
|
||||||
|
return reinterpret_cast<char const*>(ptr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template bool FILE::gets<u8>(u8*, size_t);
|
template bool FILE::gets<u8>(u8*, size_t);
|
||||||
|
|
|
@ -15,4 +15,6 @@ int __freading(FILE*);
|
||||||
int __fwriting(FILE*);
|
int __fwriting(FILE*);
|
||||||
void __fpurge(FILE*);
|
void __fpurge(FILE*);
|
||||||
|
|
||||||
|
char const* __freadptr(FILE*, size_t*);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue