1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-18 21:25:07 +00:00

Add some simple write buffering to LibC's stdio.

Plumb it all the way to the VirtualConsole. Also fix /bin/cat to write()
the whole chunks we get from read() directly to stdout.
This commit is contained in:
Andreas Kling 2018-11-08 01:23:23 +01:00
parent e287f8ef3a
commit da3857b0c2
10 changed files with 42 additions and 22 deletions

View file

@ -320,7 +320,6 @@ void VirtualConsole::put_character_at(unsigned row, unsigned column, byte ch)
void VirtualConsole::on_char(byte ch, bool shouldEmit)
{
InterruptDisabler disabler;
if (shouldEmit)
emit(ch);
@ -397,15 +396,18 @@ void VirtualConsole::onKeyPress(Keyboard::Key key)
void VirtualConsole::onConsoleReceive(byte ch)
{
InterruptDisabler disabler;
auto old_attribute = m_current_attribute;
m_current_attribute = 0x03;
on_char(ch, false);
m_current_attribute = old_attribute;
}
void VirtualConsole::onTTYWrite(byte ch)
void VirtualConsole::onTTYWrite(const byte* data, size_t size)
{
on_char(ch, false);
InterruptDisabler disabler;
for (size_t i = 0; i < size; ++i)
on_char(data[i], false);
}
String VirtualConsole::ttyName() const