use-case: save-buffer "|xclip"
Signed-off-by: Pierre Habouzit <[email protected]>
---
cmd-save-buffer.c | 15 ++++++++++++---
tmux.1 | 6 ++++++
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c
index d7b7738..a45fe43 100644
--- a/cmd-save-buffer.c
+++ b/cmd-save-buffer.c
@@ -51,6 +51,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
int buffer;
mode_t mask;
FILE *f;
+ int is_cmd = 0;
if (!args_has(args, 'b')) {
if ((pb = paste_get_top(&global_buffers)) == NULL) {
@@ -81,7 +82,10 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
bufferevent_write(c->stdout_event, pb->data, pb->size);
} else {
mask = umask(S_IRWXG | S_IRWXO);
- if (args_has(self->args, 'a'))
+ if (*path == '|') {
+ is_cmd = 1;
+ f = popen(++path, "w");
+ } else if (args_has(self->args, 'a'))
f = fopen(path, "ab");
else
f = fopen(path, "wb");
@@ -92,10 +96,15 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_ctx *ctx)
}
if (fwrite(pb->data, 1, pb->size, f) != pb->size) {
ctx->error(ctx, "%s: fwrite error", path);
- fclose(f);
+ if (is_cmd)
+ pclose(f);
+ else
+ fclose(f);
return (-1);
}
- fclose(f);
+ if (is_cmd ? pclose(f) : fclose(f)) {
+ ctx->error(ctx, "%s: fclose error", path);
+ }
}
return (0);
diff --git a/tmux.1 b/tmux.1
index d0a92a5..665dc51 100644
--- a/tmux.1
+++ b/tmux.1
@@ -2750,6 +2750,12 @@ flag means to do no replacement (equivalent to a
separator of LF).
.D1 (alias: Ic saveb )
Save the contents of the specified paste buffer to
.Ar path .
+If
+.Ar path
+starts with a pipe | then
+.Ar path
+is understood as a command run with
+.Xr popen 3 .
The
.Fl a
option appends to rather than overwriting the file.
--
1.7.5.1.290.g2095dc
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users