@@ -60,11 +60,13 @@ static enum cmd_retval
60
60
cmd_save_buffer_exec (struct cmd * self , struct cmdq_item * item )
61
61
{
62
62
struct args * args = self -> args ;
63
- struct client * c = item -> client ;
63
+ struct client * c = cmd_find_client (item , NULL , 1 );
64
+ struct session * s = item -> target .s ;
65
+ struct winlink * wl = item -> target .wl ;
66
+ struct window_pane * wp = item -> target .wp ;
64
67
struct paste_buffer * pb ;
65
- const char * path , * bufname , * bufdata , * start , * end ;
66
- const char * flags ;
67
- char * msg , * file ;
68
+ const char * bufname , * bufdata , * start , * end , * flags ;
69
+ char * msg , * path , * file ;
68
70
size_t size , used , msglen , bufsize ;
69
71
FILE * f ;
70
72
@@ -84,10 +86,12 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
84
86
bufdata = paste_buffer_data (pb , & bufsize );
85
87
86
88
if (self -> entry == & cmd_show_buffer_entry )
87
- path = "-" ;
89
+ path = xstrdup ( "-" ) ;
88
90
else
89
- path = args -> argv [0 ];
91
+ path = format_single ( item , args -> argv [0 ], c , s , wl , wp ) ;
90
92
if (strcmp (path , "-" ) == 0 ) {
93
+ free (path );
94
+ c = item -> client ;
91
95
if (c == NULL ) {
92
96
cmdq_error (item , "can't write to stdout" );
93
97
return (CMD_RETURN_ERROR );
@@ -118,6 +122,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
118
122
119
123
fclose (f );
120
124
free (file );
125
+ free (path );
121
126
122
127
return (CMD_RETURN_NORMAL );
123
128
0 commit comments