aboutsummaryrefslogtreecommitdiff
path: root/cmd-save-buffer.c
diff options
context:
space:
mode:
authornicm <nicm>2015-08-29 09:25:00 +0000
committernicm <nicm>2015-08-29 09:25:00 +0000
commitb56958500036970023c7a53264331cd10a5bbed2 (patch)
tree4e919788d8f30a08c048d573449a79e03fc06cc1 /cmd-save-buffer.c
parentb9f0571780e7058a70a8cc3b6805b6f1a73061e0 (diff)
downloadrtmux-b56958500036970023c7a53264331cd10a5bbed2.tar.gz
rtmux-b56958500036970023c7a53264331cd10a5bbed2.tar.bz2
rtmux-b56958500036970023c7a53264331cd10a5bbed2.zip
Move struct paste_buffer out of tmux.h.
Diffstat (limited to 'cmd-save-buffer.c')
-rw-r--r--cmd-save-buffer.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c
index 62c3989e..4644e689 100644
--- a/cmd-save-buffer.c
+++ b/cmd-save-buffer.c
@@ -57,14 +57,14 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
struct client *c = cmdq->client;
struct session *s;
struct paste_buffer *pb;
- const char *path, *bufname;
+ const char *path, *bufname, *bufdata;
char *start, *end, *msg;
- size_t size, used, msglen;
+ size_t size, used, msglen, bufsize;
int cwd, fd;
FILE *f;
if (!args_has(args, 'b')) {
- if ((pb = paste_get_top()) == NULL) {
+ if ((pb = paste_get_top(NULL)) == NULL) {
cmdq_error(cmdq, "no buffers");
return (CMD_RETURN_ERROR);
}
@@ -76,6 +76,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
}
}
+ bufdata = paste_buffer_data(pb, &bufsize);
if (self->entry == &cmd_show_buffer_entry)
path = "-";
@@ -114,7 +115,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
cmdq_error(cmdq, "%s: %s", path, strerror(errno));
return (CMD_RETURN_ERROR);
}
- if (fwrite(pb->data, 1, pb->size, f) != pb->size) {
+ if (fwrite(bufdata, 1, bufsize, f) != bufsize) {
cmdq_error(cmdq, "%s: fwrite error", path);
fclose(f);
return (CMD_RETURN_ERROR);
@@ -124,25 +125,25 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_NORMAL);
do_stdout:
- evbuffer_add(c->stdout_data, pb->data, pb->size);
+ evbuffer_add(c->stdout_data, bufdata, bufsize);
server_push_stdout(c);
return (CMD_RETURN_NORMAL);
do_print:
- if (pb->size > (INT_MAX / 4) - 1) {
+ if (bufsize > (INT_MAX / 4) - 1) {
cmdq_error(cmdq, "buffer too big");
return (CMD_RETURN_ERROR);
}
msg = NULL;
used = 0;
- while (used != pb->size) {
- start = pb->data + used;
- end = memchr(start, '\n', pb->size - used);
+ while (used != bufsize) {
+ start = bufdata + used;
+ end = memchr(start, '\n', bufsize - used);
if (end != NULL)
size = end - start;
else
- size = pb->size - used;
+ size = bufsize - used;
msglen = size * 4 + 1;
msg = xrealloc(msg, msglen);