aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2017-11-10 00:01:19 +0000
committerThomas Adam <thomas@xteddy.org>2017-11-10 00:01:19 +0000
commit515da63d2b23fb38269fba8fb36c6f493e44cce0 (patch)
treee852520e6a20687987f1b27bccd956c544616763
parent6f3b6c8d92df9a40a095a2f64b7da4f37ad7cb1c (diff)
parent384736e9550be328e0209c1f217b164d2fbc8fa1 (diff)
downloadrtmux-515da63d2b23fb38269fba8fb36c6f493e44cce0.tar.gz
rtmux-515da63d2b23fb38269fba8fb36c6f493e44cce0.tar.bz2
rtmux-515da63d2b23fb38269fba8fb36c6f493e44cce0.zip
Merge branch 'obsd-master'
-rw-r--r--window.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/window.c b/window.c
index e6098a75..cacacb0c 100644
--- a/window.c
+++ b/window.c
@@ -939,10 +939,13 @@ window_pane_spawn(struct window_pane *wp, int argc, char **argv,
proc_clear_signals(server_proc, 1);
sigprocmask(SIG_SETMASK, &oldset, NULL);
- if (chdir(wp->cwd) != 0) {
- if ((home = find_home()) == NULL || chdir(home) != 0)
- chdir("/");
- }
+ cwd = NULL;
+ if (chdir(wp->cwd) == 0)
+ cwd = wp->cwd;
+ else if ((home = find_home()) != NULL && chdir(home) == 0)
+ cwd = home;
+ else
+ chdir("/");
if (tcgetattr(STDIN_FILENO, &tio2) != 0)
fatal("tcgetattr failed");
@@ -960,6 +963,8 @@ window_pane_spawn(struct window_pane *wp, int argc, char **argv,
if (path != NULL)
environ_set(env, "PATH", "%s", path);
+ if (cwd != NULL)
+ environ_set(env, "PWD", "%s", cwd);
environ_set(env, "TMUX_PANE", "%%%u", wp->id);
environ_push(env);