From bb8965d31b06ec122a0916d8c5bc4c4b68873a14 Mon Sep 17 00:00:00 2001 From: kergoth Date: Tue, 22 Apr 2003 21:18:03 +0000 Subject: Alter embeddedkonsole to obey SHELL env var if set, otherwise use the user's default shell, falling back to /bin/sh. --- (limited to 'core') diff --git a/core/apps/embeddedkonsole/main.cpp b/core/apps/embeddedkonsole/main.cpp index 167b009..91199eb 100644 --- a/core/apps/embeddedkonsole/main.cpp +++ b/core/apps/embeddedkonsole/main.cpp @@ -29,6 +29,9 @@ #include #include +#include +#include + /* --| main |------------------------------------------------------ */ int main(int argc, char* argv[]) @@ -48,13 +51,22 @@ int main(int argc, char* argv[]) QStrList tmp; const char* shell = getenv("SHELL"); - if (shell == NULL || *shell == '\0') + + if (shell == NULL || *shell == '\0') { + struct passwd *ent = 0; + uid_t me = getuid(); shell = "/bin/sh"; + + while ( (ent = getpwent()) != 0 ) { + if (ent->pw_uid == me) { + if (ent->pw_shell != "") + shell = ent->pw_shell; + break; + } + } + endpwent(); + } - // sh is completely broken on familiar. Let's try to get something better - if ( qstrcmp( shell, "/bin/shell" ) == 0 && QFile::exists( "/bin/bash" ) ) - shell = "/bin/bash"; - if( putenv((char*)"COLORTERM=") !=0) qDebug("putenv failed"); // to trigger mc's color detection -- cgit v0.9.0.2