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)
|
||||
{
|
||||
auto slave = m_slave.lock();
|
||||
if (!slave)
|
||||
return BAN::Error::from_errno(ENODEV);
|
||||
return slave->ioctl(request, argument);
|
||||
switch (request)
|
||||
{
|
||||
case FIONREAD:
|
||||
*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)
|
||||
|
|
|
|||
|
|
@ -202,6 +202,11 @@ namespace Kernel
|
|||
TRY(set_font(BAN::move(new_font)));
|
||||
return 0;
|
||||
}
|
||||
case FIONREAD:
|
||||
{
|
||||
*static_cast<int*>(argument) = m_output.flush ? m_output.bytes : 0;
|
||||
return 0;
|
||||
}
|
||||
case TIOCGWINSZ:
|
||||
{
|
||||
auto* winsize = static_cast<struct winsize*>(argument);
|
||||
|
|
|
|||
Loading…
Reference in New Issue