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:
nicm
2018-05-24 09:42:49 +00:00
parent 8f5903d7c3
commit b9a6162d2f
9 changed files with 19 additions and 36 deletions

View File

@@ -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);