mirror of
https://github.com/tmux/tmux.git
synced 2025-11-04 09:26:05 +00:00
Make server_client_get_cwd used (almost) everywhere we need to work out
the cwd, and do not fall back to "." as it is pretty useless. GitHub issue 1331.
This commit is contained in:
@@ -1847,15 +1847,19 @@ server_client_add_message(struct client *c, const char *fmt, ...)
|
||||
|
||||
/* Get client working directory. */
|
||||
const char *
|
||||
server_client_get_cwd(struct client *c)
|
||||
server_client_get_cwd(struct client *c, struct session *s)
|
||||
{
|
||||
struct session *s;
|
||||
const char *home;
|
||||
|
||||
if (c != NULL && c->session == NULL && c->cwd != NULL)
|
||||
return (c->cwd);
|
||||
if (s != NULL && s->cwd != NULL)
|
||||
return (s->cwd);
|
||||
if (c != NULL && (s = c->session) != NULL && s->cwd != NULL)
|
||||
return (s->cwd);
|
||||
return (".");
|
||||
if ((home = find_home()) != NULL)
|
||||
return (home);
|
||||
return ("/");
|
||||
}
|
||||
|
||||
/* Resolve an absolute path or relative to client working directory. */
|
||||
@@ -1867,7 +1871,7 @@ server_client_get_path(struct client *c, const char *file)
|
||||
if (*file == '/')
|
||||
path = xstrdup(file);
|
||||
else
|
||||
xasprintf(&path, "%s/%s", server_client_get_cwd(c), file);
|
||||
xasprintf(&path, "%s/%s", server_client_get_cwd(c, NULL), file);
|
||||
if (realpath(path, resolved) == NULL)
|
||||
return (path);
|
||||
free(path);
|
||||
|
||||
Reference in New Issue
Block a user