From: nicm Date: Mon, 1 Jan 2018 11:19:08 +0000 (+0000) Subject: Prefer PWD for current directory if present in client, from Wei Zhao in X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=38672859a6336022ccabcd6162d4e7cc4e095c45;p=openbsd Prefer PWD for current directory if present in client, from Wei Zhao in GitHub issue 1183. --- diff --git a/usr.bin/tmux/client.c b/usr.bin/tmux/client.c index bba7cfdc4ec..f3b2ed31d1c 100644 --- a/usr.bin/tmux/client.c +++ b/usr.bin/tmux/client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: client.c,v 1.125 2017/12/19 15:00:39 nicm Exp $ */ +/* $OpenBSD: client.c,v 1.126 2018/01/01 11:19:08 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -279,10 +279,10 @@ client_main(struct event_base *base, int argc, char **argv, int flags) client_peer = proc_add_peer(client_proc, fd, client_dispatch, NULL); /* Save these before pledge(). */ - if ((cwd = getcwd(path, sizeof path)) == NULL) { - if ((cwd = find_home()) == NULL) - cwd = "/"; - } + if ((cwd = getenv("PWD")) == NULL && + (cwd = getcwd(path, sizeof path)) == NULL && + (cwd = find_home()) == NULL) + cwd = "/"; if ((ttynam = ttyname(STDIN_FILENO)) == NULL) ttynam = ""; diff --git a/usr.bin/tmux/tmux.c b/usr.bin/tmux/tmux.c index c3a01d0aa53..4f9718ec285 100644 --- a/usr.bin/tmux/tmux.c +++ b/usr.bin/tmux/tmux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.c,v 1.184 2017/07/12 09:21:25 nicm Exp $ */ +/* $OpenBSD: tmux.c,v 1.185 2018/01/01 11:19:08 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -193,7 +193,7 @@ main(int argc, char **argv) { char *path, *label, **var; char tmp[PATH_MAX]; - const char *s, *shell; + const char *s, *shell, *cwd; int opt, flags, keys; const struct options_table_entry *oe; @@ -294,8 +294,9 @@ main(int argc, char **argv) global_environ = environ_create(); for (var = environ; *var != NULL; var++) environ_put(global_environ, *var); - if (getcwd(tmp, sizeof tmp) != NULL) - environ_set(global_environ, "PWD", "%s", tmp); + if ((cwd = getenv("PWD")) == NULL && + (cwd = getcwd(tmp, sizeof tmp)) != NULL) + environ_set(global_environ, "PWD", "%s", cwd); global_options = options_create(NULL); global_s_options = options_create(NULL);