summaryrefslogtreecommitdiffstats
path: root/src/cmd/9term/9term.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/9term/9term.c')
-rw-r--r--src/cmd/9term/9term.c22
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();