summaryrefslogtreecommitdiffstats
path: root/cmd-save-buffer.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2020-07-21 08:01:19 +0100
committerThomas Adam <thomas@xteddy.org>2020-07-21 08:01:19 +0100
commit90de0c1a9b044d1c180f3a10399f5372e7a434ab (patch)
tree1cd183948da7a6b68eb972037979d7b9d9a46711 /cmd-save-buffer.c
parent70a674dde1346ec9317a71afb8751aead355e40e (diff)
parent743ab5728da1ce950a3782d5bc08831f61c5d744 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'cmd-save-buffer.c')
-rw-r--r--cmd-save-buffer.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c
index 656a89e1..ef02c202 100644
--- a/cmd-save-buffer.c
+++ b/cmd-save-buffer.c
@@ -73,11 +73,12 @@ static enum cmd_retval
cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
{
struct args *args = cmd_get_args(self);
+ struct client *c = cmdq_get_client(item);
struct paste_buffer *pb;
int flags;
const char *bufname = args_get(args, 'b'), *bufdata;
size_t bufsize;
- char *path;
+ char *path, *tmp;
if (bufname == NULL) {
if ((pb = paste_get_top(NULL)) == NULL) {
@@ -93,9 +94,16 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
}
bufdata = paste_buffer_data(pb, &bufsize);
- if (cmd_get_entry(self) == &cmd_show_buffer_entry)
+ if (cmd_get_entry(self) == &cmd_show_buffer_entry) {
+ if (c->session != NULL || (c->flags & CLIENT_CONTROL)) {
+ utf8_stravisx(&tmp, bufdata, bufsize,
+ VIS_OCTAL|VIS_CSTYLE|VIS_TAB);
+ cmdq_print(item, "%s", tmp);
+ free(tmp);
+ return (CMD_RETURN_NORMAL);
+ }
path = xstrdup("-");
- else
+ } else
path = format_single_from_target(item, args->argv[0]);
if (args_has(args, 'a'))
flags = O_APPEND;