Diffstat (limited to 'core/apps/embeddedkonsole/main.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | core/apps/embeddedkonsole/main.cpp | 20 |
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 @@ +#include <pwd.h> +#include <sys/types.h> + @@ -50,8 +53,17 @@ int main(int argc, char* argv[]) 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"; - // 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"; + while ( (ent = getpwent()) != 0 ) { + if (ent->pw_uid == me) { + if (ent->pw_shell != "") + shell = ent->pw_shell; + break; + } + } + endpwent(); + } |