summaryrefslogtreecommitdiff
path: root/core
Unidiff
Diffstat (limited to 'core') (more/less context) (show whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/main.cpp20
1 files changed, 16 insertions, 4 deletions
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
@@ -31,2 +31,5 @@
31 31
32#include <pwd.h>
33#include <sys/types.h>
34
32 35
@@ -50,8 +53,17 @@ int main(int argc, char* argv[])
50 const char* shell = getenv("SHELL"); 53 const char* shell = getenv("SHELL");
51 if (shell == NULL || *shell == '\0') 54
55 if (shell == NULL || *shell == '\0') {
56 struct passwd *ent = 0;
57 uid_t me = getuid();
52 shell = "/bin/sh"; 58 shell = "/bin/sh";
53 59
54 // sh is completely broken on familiar. Let's try to get something better 60 while ( (ent = getpwent()) != 0 ) {
55 if ( qstrcmp( shell, "/bin/shell" ) == 0 && QFile::exists( "/bin/bash" ) ) 61 if (ent->pw_uid == me) {
56 shell = "/bin/bash"; 62 if (ent->pw_shell != "")
63 shell = ent->pw_shell;
64 break;
65 }
66 }
67 endpwent();
68 }
57 69