summaryrefslogtreecommitdiffstats
path: root/cmd-save-buffer.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2018-07-11 11:02:26 +0100
committerThomas Adam <thomas@xteddy.org>2018-07-11 11:02:26 +0100
commit711b8164bb9dc795a6785796fb5ec95106457985 (patch)
tree5863eab566d5d5dbfe7c6cde9b3011f09a360362 /cmd-save-buffer.c
parent35985c0add4760300a339c82a9ceb4609044d84e (diff)
parentcfc81692e64fee9b64ae72dbd978096bed435ab1 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'cmd-save-buffer.c')
-rw-r--r--cmd-save-buffer.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c
index 0a0dd52e..1ede0f35 100644
--- a/cmd-save-buffer.c
+++ b/cmd-save-buffer.c
@@ -59,11 +59,13 @@ static enum cmd_retval
cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = self->args;
- struct client *c = item->client;
+ struct client *c = cmd_find_client(item, NULL, 1);
+ struct session *s = item->target.s;
+ struct winlink *wl = item->target.wl;
+ struct window_pane *wp = item->target.wp;
struct paste_buffer *pb;
- const char *path, *bufname, *bufdata, *start, *end;
- const char *flags;
- char *msg, *file;
+ const char *bufname, *bufdata, *start, *end, *flags;
+ char *msg, *path, *file;
size_t size, used, msglen, bufsize;
FILE *f;
@@ -83,10 +85,12 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
bufdata = paste_buffer_data(pb, &bufsize);
if (self->entry == &cmd_show_buffer_entry)
- path = "-";
+ path = xstrdup("-");
else
- path = args->argv[0];
+ path = format_single(item, args->argv[0], c, s, wl, wp);
if (strcmp(path, "-") == 0) {
+ free(path);
+ c = item->client;
if (c == NULL) {
cmdq_error(item, "can't write to stdout");
return (CMD_RETURN_ERROR);
@@ -117,6 +121,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
fclose(f);
free(file);
+ free(path);
return (CMD_RETURN_NORMAL);