Kernel: Implement FIONREAD for tty and pty
This commit is contained in:
parent
9d0990e5e8
commit
6a924db68c
|
|
@ -157,10 +157,19 @@ namespace Kernel
|
||||||
|
|
||||||
BAN::ErrorOr<long> PseudoTerminalMaster::ioctl_impl(int request, void* argument)
|
BAN::ErrorOr<long> PseudoTerminalMaster::ioctl_impl(int request, void* argument)
|
||||||
{
|
{
|
||||||
auto slave = m_slave.lock();
|
switch (request)
|
||||||
if (!slave)
|
{
|
||||||
return BAN::Error::from_errno(ENODEV);
|
case FIONREAD:
|
||||||
return slave->ioctl(request, argument);
|
*static_cast<int*>(argument) = m_buffer_size;
|
||||||
|
return 0;
|
||||||
|
case TIOCGWINSZ:
|
||||||
|
case TIOCSWINSZ:
|
||||||
|
if (auto slave = m_slave.lock())
|
||||||
|
return slave->ioctl(request, argument);
|
||||||
|
return BAN::Error::from_errno(ENODEV);
|
||||||
|
}
|
||||||
|
|
||||||
|
return BAN::Error::from_errno(ENOTSUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
PseudoTerminalSlave::PseudoTerminalSlave(BAN::String&& name, uint32_t number, mode_t mode, uid_t uid, gid_t gid)
|
PseudoTerminalSlave::PseudoTerminalSlave(BAN::String&& name, uint32_t number, mode_t mode, uid_t uid, gid_t gid)
|
||||||
|
|
|
||||||
|
|
@ -202,6 +202,11 @@ namespace Kernel
|
||||||
TRY(set_font(BAN::move(new_font)));
|
TRY(set_font(BAN::move(new_font)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
case FIONREAD:
|
||||||
|
{
|
||||||
|
*static_cast<int*>(argument) = m_output.flush ? m_output.bytes : 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
case TIOCGWINSZ:
|
case TIOCGWINSZ:
|
||||||
{
|
{
|
||||||
auto* winsize = static_cast<struct winsize*>(argument);
|
auto* winsize = static_cast<struct winsize*>(argument);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue