summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2004-04-07 07:48:07 (UTC)
committer llornkcor <llornkcor>2004-04-07 07:48:07 (UTC)
commita1221f718bb1e9bcb6318dbf3314b9a35891caac (patch) (unidiff)
tree5f230f06f55029ee06954447bcd628002bb6bcec
parentb3447b43b48cb6d720b76a1e9fc46acac6961dc8 (diff)
downloadopie-a1221f718bb1e9bcb6318dbf3314b9a35891caac.zip
opie-a1221f718bb1e9bcb6318dbf3314b9a35891caac.tar.gz
opie-a1221f718bb1e9bcb6318dbf3314b9a35891caac.tar.bz2
respect TERM variable
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/MyPty.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/core/apps/embeddedkonsole/MyPty.cpp b/core/apps/embeddedkonsole/MyPty.cpp
index d05e31e..4b1ae59 100644
--- a/core/apps/embeddedkonsole/MyPty.cpp
+++ b/core/apps/embeddedkonsole/MyPty.cpp
@@ -155,33 +155,35 @@ int MyPty::run(const char* cmd, QStrList &, const char*, int)
155 dup2(ttyfd, STDIN_FILENO); 155 dup2(ttyfd, STDIN_FILENO);
156 dup2(ttyfd, STDOUT_FILENO); 156 dup2(ttyfd, STDOUT_FILENO);
157 dup2(ttyfd, STDERR_FILENO); 157 dup2(ttyfd, STDERR_FILENO);
158 // should be done with tty, so close it 158 // should be done with tty, so close it
159 close(ttyfd); 159 close(ttyfd);
160 static struct termios ttmode; 160 static struct termios ttmode;
161 if ( setsid() < 0 ) 161 if ( setsid() < 0 )
162 perror( "failed to set process group" ); 162 perror( "failed to set process group" );
163#if defined (TIOCSCTTY) 163#if defined (TIOCSCTTY)
164 // grabbed from APUE by Stevens 164 // grabbed from APUE by Stevens
165 ioctl(STDIN_FILENO, TIOCSCTTY, 0); 165 ioctl(STDIN_FILENO, TIOCSCTTY, 0);
166#endif 166#endif
167 tcgetattr( STDIN_FILENO, &ttmode ); 167 tcgetattr( STDIN_FILENO, &ttmode );
168 ttmode.c_cc[VINTR] = 3; 168 ttmode.c_cc[VINTR] = 3;
169 ttmode.c_cc[VERASE] = 8; 169 ttmode.c_cc[VERASE] = 8;
170 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode ); 170 tcsetattr( STDIN_FILENO, TCSANOW, &ttmode );
171 setenv("TERM","vt100",1); 171
172 if(strlen(getenv("TERM"))<=0)
173 setenv("TERM","vt100",1);
172 setenv("COLORTERM","0",1); 174 setenv("COLORTERM","0",1);
173 175
174 if (getuid() == 0) { 176 if (getuid() == 0) {
175 char msg[] = "WARNING: You are running this shell as root!\n"; 177 char msg[] = "WARNING: You are running this shell as root!\n";
176 write(ttyfd, msg, sizeof(msg)); 178 write(ttyfd, msg, sizeof(msg));
177 } 179 }
178 180
179 QString ccmd = "-"+QFileInfo(cmd).fileName(); //creates a login shell 181 QString ccmd = "-"+QFileInfo(cmd).fileName(); //creates a login shell
180 182
181 execl(cmd, ccmd.latin1(), 0); 183 execl(cmd, ccmd.latin1(), 0);
182 184
183 donePty(); 185 donePty();
184 exit(-1); 186 exit(-1);
185 } 187 }
186 188
187 // parent - continue as a widget 189 // parent - continue as a widget