summaryrefslogtreecommitdiff
path: root/core/apps/embeddedkonsole/konsole.cpp
Unidiff
Diffstat (limited to 'core/apps/embeddedkonsole/konsole.cpp') (more/less context) (show whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/konsole.cpp54
1 files changed, 47 insertions, 7 deletions
diff --git a/core/apps/embeddedkonsole/konsole.cpp b/core/apps/embeddedkonsole/konsole.cpp
index c324c35..ec438c3 100644
--- a/core/apps/embeddedkonsole/konsole.cpp
+++ b/core/apps/embeddedkonsole/konsole.cpp
@@ -37,24 +37,27 @@
37#include <qmessagebox.h> 37#include <qmessagebox.h>
38#include <qaction.h> 38#include <qaction.h>
39#include <qapplication.h> 39#include <qapplication.h>
40#include <qfontmetrics.h> 40#include <qfontmetrics.h>
41#include <qcombobox.h> 41#include <qcombobox.h>
42#include <qevent.h> 42#include <qevent.h>
43#include <qtabwidget.h> 43#include <qtabwidget.h>
44#include <qtabbar.h> 44#include <qtabbar.h>
45#include <qpe/config.h> 45#include <qpe/config.h>
46#include <qstringlist.h> 46#include <qstringlist.h>
47#include <qpalette.h> 47#include <qpalette.h>
48 48
49#include <unistd.h>
50#include <pwd.h>
51#include <sys/types.h>
49#include <sys/wait.h> 52#include <sys/wait.h>
50#include <stdio.h> 53#include <stdio.h>
51#include <stdlib.h> 54#include <stdlib.h>
52#include <assert.h> 55#include <assert.h>
53 56
54#include "konsole.h" 57#include "konsole.h"
55#include "keytrans.h" 58#include "keytrans.h"
56#include "commandeditdialog.h" 59#include "commandeditdialog.h"
57 60
58#ifdef QT_QWS_OPIE 61#ifdef QT_QWS_OPIE
59#include <opie/colorpopupmenu.h> 62#include <opie/colorpopupmenu.h>
60#endif 63#endif
@@ -162,38 +165,75 @@ static const char *commonCmds[] =
162 "more", 165 "more",
163 "sort", 166 "sort",
164 "touch", 167 "touch",
165 "umount", 168 "umount",
166 "mknod", 169 "mknod",
167 "netstat", 170 "netstat",
168*/ 171*/
169 172
170 "exit", 173 "exit",
171 NULL 174 NULL
172}; 175};
173 176
177static void konsoleInit(const char** shell) {
178 if(setuid(getuid()) !=0) qDebug("setuid failed");
179 if(setgid(getgid()) != 0) qDebug("setgid failed"); // drop privileges
180
181
182// QPEApplication::grabKeyboard(); // for CTRL and ALT
183
184 qDebug("keyboard grabbed");
185#ifdef FAKE_CTRL_AND_ALT
186 qDebug("Fake Ctrl and Alt defined");
187 QPEApplication::grabKeyboard(); // for CTRL and ALT
188#endif
189
190 *shell = getenv("SHELL");
191 qWarning("SHell initially is %s", *shell );
192
193 if (shell == NULL || *shell == '\0') {
194 struct passwd *ent = 0;
195 uid_t me = getuid();
196 *shell = "/bin/sh";
197
198 while ( (ent = getpwent()) != 0 ) {
199 if (ent->pw_uid == me) {
200 if (ent->pw_shell != "")
201 *shell = ent->pw_shell;
202 break;
203 }
204 }
205 endpwent();
206 }
207
208 qWarning("SHELL now is %s", *shell );
209
210 if( putenv((char*)"COLORTERM=") !=0)
211 qDebug("putenv failed"); // to trigger mc's color detection
212}
174 213
175Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) : 214Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) :
176 QMainWindow(parent, name, fl) 215 QMainWindow(parent, name, fl)
177{ 216{
178 QStrList args; 217 QStrList tmp; const char* shell;
179 init("/bin/sh",args);
180}
181 218
182Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int) 219 setCaption( tr("Terminal") );
183 : QMainWindow(0, name) 220
184{ 221 konsoleInit( &shell);
185 init(_pgm,_args); 222 qWarning("Using shell %s", shell);
223 init(shell,tmp);
186} 224}
187 225
226
227
188void Konsole::initCommandList() 228void Konsole::initCommandList()
189{ 229{
190// qDebug("Konsole::initCommandList"); 230// qDebug("Konsole::initCommandList");
191 Config cfg("Konsole"); 231 Config cfg("Konsole");
192 cfg.setGroup("Commands"); 232 cfg.setGroup("Commands");
193 commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 233 commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
194 commonCombo->clear(); 234 commonCombo->clear();
195 if (cfg.readEntry("Commands Set","FALSE") == "FALSE") { 235 if (cfg.readEntry("Commands Set","FALSE") == "FALSE") {
196 for (int i = 0; commonCmds[i] != NULL; i++) { 236 for (int i = 0; commonCmds[i] != NULL; i++) {
197 commonCombo->insertItem(commonCmds[i],i); 237 commonCombo->insertItem(commonCmds[i],i);
198 } 238 }
199 } else { 239 } else {