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