diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-11-10 00:01:19 +0000 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-11-10 00:01:19 +0000 |
commit | 515da63d2b23fb38269fba8fb36c6f493e44cce0 (patch) | |
tree | e852520e6a20687987f1b27bccd956c544616763 | |
parent | 6f3b6c8d92df9a40a095a2f64b7da4f37ad7cb1c (diff) | |
parent | 384736e9550be328e0209c1f217b164d2fbc8fa1 (diff) | |
download | rtmux-515da63d2b23fb38269fba8fb36c6f493e44cce0.tar.gz rtmux-515da63d2b23fb38269fba8fb36c6f493e44cce0.tar.bz2 rtmux-515da63d2b23fb38269fba8fb36c6f493e44cce0.zip |
Merge branch 'obsd-master'
-rw-r--r-- | window.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -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); |