Expand formats in load-buffer and save-buffer.
authornicm <nicm@openbsd.org>
Wed, 11 Jul 2018 08:29:21 +0000 (08:29 +0000)
committernicm <nicm@openbsd.org>
Wed, 11 Jul 2018 08:29:21 +0000 (08:29 +0000)
usr.bin/tmux/cmd-load-buffer.c
usr.bin/tmux/cmd-save-buffer.c

index 9e83de8..f89d469 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-load-buffer.c,v 1.51 2018/01/15 15:27:03 nicm Exp $ */
+/* $OpenBSD: cmd-load-buffer.c,v 1.52 2018/07/11 08:29:21 nicm Exp $ */
 
 /*
  * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org>
@@ -56,11 +56,14 @@ cmd_load_buffer_exec(struct cmd *self, struct cmdq_item *item)
 {
        struct args                     *args = self->args;
        struct cmd_load_buffer_data     *cdata;
-       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;
        FILE                            *f;
-       const char                      *path, *bufname;
+       const char                      *bufname;
        char                            *pdata = NULL, *new_pdata, *cause;
-       char                            *file;
+       char                            *path, *file;
        size_t                           psize;
        int                              ch, error;
 
@@ -68,8 +71,11 @@ cmd_load_buffer_exec(struct cmd *self, struct cmdq_item *item)
        if (args_has(args, 'b'))
                bufname = args_get(args, 'b');
 
-       path = args->argv[0];
+       path = format_single(item, args->argv[0], c, s, wl, wp);
        if (strcmp(path, "-") == 0) {
+               free(path);
+               c = item->client;
+
                cdata = xcalloc(1, sizeof *cdata);
                cdata->item = item;
 
index 7072d46..1f433c7 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-save-buffer.c,v 1.43 2017/04/22 06:13:30 nicm Exp $ */
+/* $OpenBSD: cmd-save-buffer.c,v 1.44 2018/07/11 08:29:21 nicm Exp $ */
 
 /*
  * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org>
@@ -60,11 +60,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;
 
@@ -84,10 +86,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);
@@ -118,6 +122,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
 
        fclose(f);
        free(file);
+       free(path);
 
        return (CMD_RETURN_NORMAL);