summaryrefslogtreecommitdiff
path: root/core
authorllornkcor <llornkcor>2002-10-10 19:56:29 (UTC)
committer llornkcor <llornkcor>2002-10-10 19:56:29 (UTC)
commit4aa326251d797d12e5228a7a1ea6d45518e64ba5 (patch) (side-by-side diff)
tree4cc63e5bb3e9aa520a90780de261979ffc3dfd21 /core
parent946708623722041624b0435acfb2fa678959adba (diff)
downloadopie-4aa326251d797d12e5228a7a1ea6d45518e64ba5.zip
opie-4aa326251d797d12e5228a7a1ea6d45518e64ba5.tar.gz
opie-4aa326251d797d12e5228a7a1ea6d45518e64ba5.tar.bz2
bastard standard login shell
Diffstat (limited to 'core') (more/less context) (show whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/MyPty.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/core/apps/embeddedkonsole/MyPty.cpp b/core/apps/embeddedkonsole/MyPty.cpp
index 6421ab0..9adc248 100644
--- a/core/apps/embeddedkonsole/MyPty.cpp
+++ b/core/apps/embeddedkonsole/MyPty.cpp
@@ -55,24 +55,25 @@
linked by a null-modem cable. Being based on devices the number of
simultanous instances of this class is (globally) limited by the number of
those device pairs, which is 256.
Another technic are UNIX 98 PTY's. These are supported also, and prefered
over the (obsolete) predecessor.
There's a sinister ioctl(2), signal(2) and job control stuff
nessesary to make everything work as it should.
*/
+#include <qfileinfo.h>
#include <qapplication.h>
#include <qsocketnotifier.h>
#include <qstring.h>
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/ioctl.h>
@@ -160,26 +161,28 @@ int MyPty::run(const char* cmd, QStrList &, const char*, int)
#endif
tcgetattr( STDIN_FILENO, &ttmode );
ttmode.c_cc[VINTR] = 3;
ttmode.c_cc[VERASE] = 8;
tcsetattr( STDIN_FILENO, TCSANOW, &ttmode );
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));
}
-; //creates a login shell
- execl(cmd, cmd, "--login", 0);
+
+ 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;