summaryrefslogtreecommitdiff
authorerik <erik>2007-04-20 21:21:14 (UTC)
committer erik <erik>2007-04-20 21:21:14 (UTC)
commitd07beba6b9351c6b575235522781e3ce8495e578 (patch) (side-by-side diff)
tree8c5d9cca84d79d7d3016ceb187a1a67a8adba662
parentfb862bdc6c9a6f5b6e7529823eb4b56cc7085a59 (diff)
downloadopie-d07beba6b9351c6b575235522781e3ce8495e578.zip
opie-d07beba6b9351c6b575235522781e3ce8495e578.tar.gz
opie-d07beba6b9351c6b575235522781e3ce8495e578.tar.bz2
additional info to a comment about pty mangling
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/MyPty.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/apps/embeddedkonsole/MyPty.cpp b/core/apps/embeddedkonsole/MyPty.cpp
index 4b1ae59..c11889e 100644
--- a/core/apps/embeddedkonsole/MyPty.cpp
+++ b/core/apps/embeddedkonsole/MyPty.cpp
@@ -132,65 +132,65 @@ void MyPty::error()
// This is code from the Qt DumbTerminal example
donePty();
}
/*!
start the client program.
*/
int MyPty::run(const char* cmd, QStrList &, const char*, int)
{
// This is code from the Qt DumbTerminal example
cpid = fork();
if ( !cpid ) {
// child - exec shell on tty
for (int sig = 1; sig < NSIG; sig++) signal(sig,SIG_DFL);
// attempt to keep apm driver from killing us on power on/off
signal(SIGSTOP, SIG_IGN);
signal(SIGCONT, SIG_IGN);
signal(SIGTSTP, SIG_IGN);
int ttyfd = open(ttynam, O_RDWR);
dup2(ttyfd, STDIN_FILENO);
dup2(ttyfd, STDOUT_FILENO);
dup2(ttyfd, STDERR_FILENO);
// should be done with tty, so close it
close(ttyfd);
static struct termios ttmode;
if ( setsid() < 0 )
perror( "failed to set process group" );
#if defined (TIOCSCTTY)
- // grabbed from APUE by Stevens
+ // grabbed from APUE by Stevens (see section 9.6, should be page 246)
ioctl(STDIN_FILENO, TIOCSCTTY, 0);
#endif
tcgetattr( STDIN_FILENO, &ttmode );
ttmode.c_cc[VINTR] = 3;
ttmode.c_cc[VERASE] = 8;
tcsetattr( STDIN_FILENO, TCSANOW, &ttmode );
if(strlen(getenv("TERM"))<=0)
setenv("TERM","vt100",1);
setenv("COLORTERM","0",1);
if (getuid() == 0) {
char msg[] = "WARNING: You are running this shell as root!\n";
write(ttyfd, msg, sizeof(msg));
}
QString ccmd = "-"+QFileInfo(cmd).fileName(); //creates a login shell
execl(cmd, ccmd.latin1(), 0);
donePty();
exit(-1);
}
// parent - continue as a widget
QSocketNotifier* sn_r = new QSocketNotifier(fd,QSocketNotifier::Read,this);
QSocketNotifier* sn_e = new QSocketNotifier(fd,QSocketNotifier::Exception,this);
connect(sn_r,SIGNAL(activated(int)),this,SLOT(readPty()));
connect(sn_e,SIGNAL(activated(int)),this,SLOT(error()));
return 0;
}