diff options
Diffstat (limited to 'src/cmd/9term/9term.c')
| -rw-r--r-- | src/cmd/9term/9term.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/cmd/9term/9term.c b/src/cmd/9term/9term.c index d7391cf5..2fd42c54 100644 --- a/src/cmd/9term/9term.c +++ b/src/cmd/9term/9term.c @@ -1,4 +1,5 @@ #include <u.h> +#include <pwd.h> #include <signal.h> #include <libc.h> #include <ctype.h> @@ -56,7 +57,7 @@ threadmaybackground(void) void threadmain(int argc, char *argv[]) { - char *p; + char *p, *env; rfork(RFNOTEG); font = nil; @@ -64,6 +65,25 @@ threadmain(int argc, char *argv[]) mainpid = getpid(); messagesize = 8192; + threadmaybackground(); + + env = getenv("__CFBundleIdentifier"); + if(env != nil && strcmp(env, "com.swtch.9term") == 0) { + // Being invoked as $PLAN9/mac/9term.app. + // Set $SHELL and daemonize to let parent exit. + // This makes sure that each click on 9term + // brings up a new window. + extern void _threaddaemonize(void); + struct passwd *pw; + + unsetenv("__CFBundleIdentifier"); + pw = getpwuid(getuid()); + if(pw != nil && pw->pw_shell != nil) + setenv("SHELL", pw->pw_shell, 1); + loginshell = TRUE; + //_threaddaemonize(); + } + ARGBEGIN{ default: usage(); |
