Diffstat (limited to 'core/apps/embeddedkonsole/konsole.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/apps/embeddedkonsole/konsole.cpp | 74 |
1 files changed, 57 insertions, 17 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 | |||
@@ -48,2 +48,5 @@ | |||
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> |
@@ -173,2 +176,38 @@ static const char *commonCmds[] = | |||
173 | 176 | ||
177 | static 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 | ||
@@ -177,12 +216,13 @@ Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) : | |||
177 | { | 216 | { |
178 | QStrList args; | 217 | QStrList tmp; const char* shell; |
179 | init("/bin/sh",args); | ||
180 | } | ||
181 | 218 | ||
182 | Konsole::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 | |||
188 | void Konsole::initCommandList() | 228 | void Konsole::initCommandList() |
@@ -301,3 +341,3 @@ void Konsole::init(const char* _pgm, QStrList & _args) | |||
301 | #endif | 341 | #endif |
302 | 342 | ||
303 | configMenu->insertItem( tr("Font"), fontList ); | 343 | configMenu->insertItem( tr("Font"), fontList ); |
@@ -370,3 +410,3 @@ void Konsole::init(const char* _pgm, QStrList & _args) | |||
370 | // scrollMenu->insertItem(tr( "Horizontal" )); | 410 | // scrollMenu->insertItem(tr( "Horizontal" )); |
371 | 411 | ||
372 | configMenu->insertItem(tr( "ScrollBar" ),scrollMenu); | 412 | configMenu->insertItem(tr( "ScrollBar" ),scrollMenu); |
@@ -382,3 +422,3 @@ void Konsole::init(const char* _pgm, QStrList & _args) | |||
382 | 422 | ||
383 | 423 | ||
384 | //scrollMenuSelected(-29); | 424 | //scrollMenuSelected(-29); |
@@ -420,3 +460,3 @@ void Konsole::show() | |||
420 | QMainWindow::show(); | 460 | QMainWindow::show(); |
421 | 461 | ||
422 | } | 462 | } |
@@ -543,3 +583,3 @@ void Konsole::setColLin(int columns, int lines) | |||
543 | qDebug("konsole::setColLin:: Columns %d", columns); | 583 | qDebug("konsole::setColLin:: Columns %d", columns); |
544 | 584 | ||
545 | if ((columns==0) || (lines==0)) | 585 | if ((columns==0) || (lines==0)) |
@@ -765,3 +805,3 @@ void Konsole::colorMenuSelected(int iD) | |||
765 | } | 805 | } |
766 | #ifdef QT_QWS_OPIE | 806 | #ifdef QT_QWS_OPIE |
767 | if(iD==-19) { | 807 | if(iD==-19) { |
@@ -892,3 +932,3 @@ i=-24;j=-25;k=-26; | |||
892 | } else if(index == j) { | 932 | } else if(index == j) { |
893 | 933 | ||
894 | te->setScrollbarLocation(1); | 934 | te->setScrollbarLocation(1); |
@@ -900,3 +940,3 @@ i=-24;j=-25;k=-26; | |||
900 | } | 940 | } |
901 | 941 | ||
902 | // case -29: { | 942 | // case -29: { |
@@ -1049,3 +1089,3 @@ i=-28; | |||
1049 | #endif | 1089 | #endif |
1050 | 1090 | ||
1051 | Config cfg("Konsole"); | 1091 | Config cfg("Konsole"); |
@@ -1060,3 +1100,3 @@ i=-28; | |||
1060 | configMenu->setItemChecked( i,FALSE); | 1100 | configMenu->setItemChecked( i,FALSE); |
1061 | } | 1101 | } |
1062 | } | 1102 | } |