summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--file.c16
-rw-r--r--server-client.c16
-rw-r--r--tmux.h1
3 files changed, 14 insertions, 19 deletions
diff --git a/file.c b/file.c
index 9a3e79de..439d3464 100644
--- a/file.c
+++ b/file.c
@@ -33,6 +33,18 @@ static int file_next_stream = 3;
RB_GENERATE(client_files, client_file, entry, file_cmp);
+static char *
+file_get_path(struct client *c, const char *file)
+{
+ char *path;
+
+ if (*file == '/')
+ path = xstrdup(file);
+ else
+ xasprintf(&path, "%s/%s", server_client_get_cwd(c, NULL), file);
+ return (path);
+}
+
int
file_cmp(struct client_file *cf1, struct client_file *cf2)
{
@@ -237,7 +249,7 @@ file_write(struct client *c, const char *path, int flags, const void *bdata,
}
cf = file_create(c, file_next_stream++, cb, cbdata);
- cf->path = server_client_get_path(c, path);
+ cf->path = file_get_path(c, path);
if (c == NULL || c->flags & CLIENT_ATTACHED) {
if (flags & O_APPEND)
@@ -306,7 +318,7 @@ file_read(struct client *c, const char *path, client_file_cb cb, void *cbdata)
}
cf = file_create(c, file_next_stream++, cb, cbdata);
- cf->path = server_client_get_path(c, path);
+ cf->path = file_get_path(c, path);
if (c == NULL || c->flags & CLIENT_ATTACHED) {
f = fopen(cf->path, "rb");
diff --git a/server-client.c b/server-client.c
index fdedc35f..ee7b4c70 100644
--- a/server-client.c
+++ b/server-client.c
@@ -2111,19 +2111,3 @@ server_client_get_cwd(struct client *c, struct session *s)
return (home);
return ("/");
}
-
-/* Resolve an absolute path or relative to client working directory. */
-char *
-server_client_get_path(struct client *c, const char *file)
-{
- char *path, resolved[PATH_MAX];
-
- if (*file == '/')
- path = xstrdup(file);
- else
- xasprintf(&path, "%s/%s", server_client_get_cwd(c, NULL), file);
- if (realpath(path, resolved) == NULL)
- return (path);
- free(path);
- return (xstrdup(resolved));
-}
diff --git a/tmux.h b/tmux.h
index 84b2056c..8b23bfae 100644
--- a/tmux.h
+++ b/tmux.h
@@ -2228,7 +2228,6 @@ void server_client_push_stdout(struct client *);
void server_client_push_stderr(struct client *);
void printflike(2, 3) server_client_add_message(struct client *, const char *,
...);
-char *server_client_get_path(struct client *, const char *);
const char *server_client_get_cwd(struct client *, struct session *);
/* server-fn.c */