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

LibC: Implement fflush(nullptr)

This caused all open file streams to be flushed.

This commit also changes `FILE::create` to handle buffer allocation
failure gracefully.
This commit is contained in:
Daniel Bertalan 2022-01-15 14:40:57 +01:00 committed by Brian Gianforcaro
parent b4e864d02d
commit 6a6dbf5b0b
3 changed files with 72 additions and 5 deletions

View file

@ -0,0 +1,35 @@
/*
* Copyright (c) 2021, Daniel Bertalan <dani@danielbertalan.dev>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <pthread.h>
// We don't want to bring LibThreading headers into LibC, so we use plain
// pthread mutexes and this RAII guard.
namespace LibC {
class [[nodiscard]] MutexLocker {
public:
explicit MutexLocker(pthread_mutex_t& mutex)
: m_mutex(mutex)
{
lock();
}
~MutexLocker()
{
unlock();
}
void lock() { pthread_mutex_lock(&m_mutex); }
void unlock() { pthread_mutex_unlock(&m_mutex); }
private:
pthread_mutex_t& m_mutex;
};
}