Indeed we don't need this signal hack for BeOS, we just need to tell it the pgid. That reduces the number of things to remove later ;)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25411 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
572ff7ee4a
commit
901e5756cb
@ -194,26 +194,12 @@ Shell::UpdateWindowSize(int rows, int columns)
|
||||
struct winsize winSize;
|
||||
winSize.ws_row = rows;
|
||||
winSize.ws_col = columns;
|
||||
#ifdef __HAIKU__
|
||||
if (ioctl(fFd, TIOCSWINSZ, &winSize) != 0)
|
||||
return errno;
|
||||
return B_OK;
|
||||
#else
|
||||
ioctl(fFd, TIOCSWINSZ, &winSize);
|
||||
return Signal(SIGWINCH);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifndef __HAIKU__
|
||||
status_t
|
||||
Shell::Signal(int signal)
|
||||
{
|
||||
return send_signal(-fProcessID, signal);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
status_t
|
||||
Shell::GetAttr(struct termios &attr)
|
||||
{
|
||||
@ -496,6 +482,9 @@ Shell::_Spawn(int row, int col, const char *encoding, int argc, const char **arg
|
||||
|
||||
tcsetpgrp(0, getpgrp());
|
||||
// set this process group ID as the controlling terminal
|
||||
#ifndef __HAIKU__
|
||||
ioctl(0, 'pgid', getpid());
|
||||
#endif
|
||||
|
||||
/* pty open and set termios successful. */
|
||||
handshake.status = PTY_OK;
|
||||
|
@ -32,9 +32,6 @@ public:
|
||||
ssize_t Write(const void *buffer, size_t numBytes);
|
||||
|
||||
status_t UpdateWindowSize(int row, int columns);
|
||||
#ifndef __HAIKU__
|
||||
status_t Signal(int signal);
|
||||
#endif
|
||||
|
||||
status_t GetAttr(struct termios &attr);
|
||||
status_t SetAttr(struct termios &attr);
|
||||
|
@ -1471,17 +1471,6 @@ TermView::KeyDown(const char *bytes, int32 numBytes)
|
||||
currentMessage->FindInt32("key", &key);
|
||||
currentMessage->FindInt32("raw_char", &rawChar);
|
||||
|
||||
#ifndef __HAIKU__
|
||||
// If bytes[0] equal intr character,
|
||||
// send signal to shell process group.
|
||||
struct termios tio;
|
||||
fShell->GetAttr(tio);
|
||||
if (*bytes == tio.c_cc[VINTR]) {
|
||||
if (tio.c_lflag & ISIG)
|
||||
fShell->Signal(SIGINT);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Terminal filters RET, ENTER, F1...F12, and ARROW key code.
|
||||
// TODO: Cleanup
|
||||
if (numBytes == 1) {
|
||||
|
Loading…
Reference in New Issue
Block a user