LibCore: Make it possible to create a CFile for an existing file descriptor.

This commit is contained in:
Andreas Kling 2019-04-26 02:22:21 +02:00
parent c392c0d799
commit 0a68e0046f
Notes: sideshowbarker 2024-07-19 14:35:01 +09:00
2 changed files with 13 additions and 1 deletions

View file

@ -10,10 +10,18 @@ CFile::CFile(const String& filename)
CFile::~CFile()
{
if (mode() != NotOpen)
if (m_should_close_file_descriptor == ShouldCloseFileDescriptor::Yes && mode() != NotOpen)
close();
}
bool CFile::open(int fd, CIODevice::OpenMode mode, ShouldCloseFileDescriptor should_close)
{
set_fd(fd);
set_mode(mode);
m_should_close_file_descriptor = should_close;
return true;
}
bool CFile::open(CIODevice::OpenMode mode)
{
int flags = 0;

View file

@ -14,8 +14,12 @@ public:
virtual bool open(CIODevice::OpenMode) override;
enum class ShouldCloseFileDescriptor { No = 0, Yes };
bool open(int fd, CIODevice::OpenMode, ShouldCloseFileDescriptor);
virtual const char* class_name() const override { return "CFile"; }
private:
String m_filename;
ShouldCloseFileDescriptor m_should_close_file_descriptor { ShouldCloseFileDescriptor::Yes };
};