summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd-capture-pane.c4
-rw-r--r--cmd-choose-buffer.c4
-rw-r--r--cmd-delete-buffer.c4
-rw-r--r--cmd-list-buffers.c2
-rw-r--r--cmd-load-buffer.c8
-rw-r--r--cmd-paste-buffer.c8
-rw-r--r--cmd-save-buffer.c4
-rw-r--r--cmd-set-buffer.c8
-rw-r--r--input-keys.c2
-rw-r--r--paste.c50
-rw-r--r--server.c3
-rw-r--r--status.c2
-rw-r--r--tmux.h16
-rw-r--r--window-copy.c14
14 files changed, 63 insertions, 66 deletions
diff --git a/cmd-capture-pane.c b/cmd-capture-pane.c
index cf9a2f49..759063d1 100644
--- a/cmd-capture-pane.c
+++ b/cmd-capture-pane.c
@@ -194,7 +194,7 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_q *cmdq)
} else {
limit = options_get_number(&global_options, "buffer-limit");
if (!args_has(args, 'b')) {
- paste_add(&global_buffers, buf, len, limit);
+ paste_add(buf, len, limit);
return (CMD_RETURN_NORMAL);
}
@@ -206,7 +206,7 @@ cmd_capture_pane_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
}
- if (paste_replace(&global_buffers, buffer, buf, len) != 0) {
+ if (paste_replace(buffer, buf, len) != 0) {
cmdq_error(cmdq, "no buffer %d", buffer);
free(buf);
return (CMD_RETURN_ERROR);
diff --git a/cmd-choose-buffer.c b/cmd-choose-buffer.c
index 1e0edaa6..c6c70a0d 100644
--- a/cmd-choose-buffer.c
+++ b/cmd-choose-buffer.c
@@ -63,7 +63,7 @@ cmd_choose_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
utf8flag = options_get_number(&wl->window->options, "utf8");
- if (paste_get_top(&global_buffers) == NULL)
+ if (paste_get_top() == NULL)
return (CMD_RETURN_NORMAL);
if (window_pane_set_mode(wl->window->active, &window_choose_mode) != 0)
@@ -75,7 +75,7 @@ cmd_choose_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
action = xstrdup("paste-buffer -b '%%'");
idx = 0;
- while ((pb = paste_walk_stack(&global_buffers, &idx)) != NULL) {
+ while ((pb = paste_walk_stack(&idx)) != NULL) {
cdata = window_choose_data_create(TREE_OTHER, c, c->session);
cdata->idx = idx - 1;
diff --git a/cmd-delete-buffer.c b/cmd-delete-buffer.c
index 32fb243b..464d2b78 100644
--- a/cmd-delete-buffer.c
+++ b/cmd-delete-buffer.c
@@ -45,7 +45,7 @@ cmd_delete_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
int buffer;
if (!args_has(args, 'b')) {
- paste_free_top(&global_buffers);
+ paste_free_top();
return (CMD_RETURN_NORMAL);
}
@@ -56,7 +56,7 @@ cmd_delete_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
}
- if (paste_free_index(&global_buffers, buffer) != 0) {
+ if (paste_free_index(buffer) != 0) {
cmdq_error(cmdq, "no buffer %d", buffer);
return (CMD_RETURN_ERROR);
}
diff --git a/cmd-list-buffers.c b/cmd-list-buffers.c
index 7051eae8..2363c806 100644
--- a/cmd-list-buffers.c
+++ b/cmd-list-buffers.c
@@ -52,7 +52,7 @@ cmd_list_buffers_exec(unused struct cmd *self, struct cmd_q *cmdq)
template = LIST_BUFFERS_TEMPLATE;
idx = 0;
- while ((pb = paste_walk_stack(&global_buffers, &idx)) != NULL) {
+ while ((pb = paste_walk_stack(&idx)) != NULL) {
ft = format_create();
format_add(ft, "line", "%u", idx - 1);
format_paste_buffer(ft, pb, 0);
diff --git a/cmd-load-buffer.c b/cmd-load-buffer.c
index 636f0fcd..5e9b6748 100644
--- a/cmd-load-buffer.c
+++ b/cmd-load-buffer.c
@@ -119,10 +119,10 @@ cmd_load_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
limit = options_get_number(&global_options, "buffer-limit");
if (buffer == -1) {
- paste_add(&global_buffers, pdata, psize, limit);
+ paste_add(pdata, psize, limit);
return (CMD_RETURN_NORMAL);
}
- if (paste_replace(&global_buffers, buffer, pdata, psize) != 0) {
+ if (paste_replace(buffer, pdata, psize) != 0) {
cmdq_error(cmdq, "no buffer %d", buffer);
free(pdata);
return (CMD_RETURN_ERROR);
@@ -164,8 +164,8 @@ cmd_load_buffer_callback(struct client *c, int closed, void *data)
limit = options_get_number(&global_options, "buffer-limit");
if (*buffer == -1)
- paste_add(&global_buffers, pdata, psize, limit);
- else if (paste_replace(&global_buffers, *buffer, pdata, psize) != 0) {
+ paste_add(pdata, psize, limit);
+ else if (paste_replace(*buffer, pdata, psize) != 0) {
/* No context so can't use server_client_msg_error. */
evbuffer_add_printf(c->stderr_data, "no buffer %d\n", *buffer);
server_push_stderr(c);
diff --git a/cmd-paste-buffer.c b/cmd-paste-buffer.c
index 8f7530a2..c3837c6d 100644
--- a/cmd-paste-buffer.c
+++ b/cmd-paste-buffer.c
@@ -69,9 +69,9 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
}
if (buffer == -1)
- pb = paste_get_top(&global_buffers);
+ pb = paste_get_top();
else {
- pb = paste_get_index(&global_buffers, buffer);
+ pb = paste_get_index(buffer);
if (pb == NULL) {
cmdq_error(cmdq, "no buffer %d", buffer);
return (CMD_RETURN_ERROR);
@@ -93,9 +93,9 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
/* Delete the buffer if -d. */
if (args_has(args, 'd')) {
if (buffer == -1)
- paste_free_top(&global_buffers);
+ paste_free_top();
else
- paste_free_index(&global_buffers, buffer);
+ paste_free_index(buffer);
}
return (CMD_RETURN_NORMAL);
diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c
index b6ee2e49..0a1853d4 100644
--- a/cmd-save-buffer.c
+++ b/cmd-save-buffer.c
@@ -66,7 +66,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
FILE *f;
if (!args_has(args, 'b')) {
- if ((pb = paste_get_top(&global_buffers)) == NULL) {
+ if ((pb = paste_get_top()) == NULL) {
cmdq_error(cmdq, "no buffers");
return (CMD_RETURN_ERROR);
}
@@ -78,7 +78,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
return (CMD_RETURN_ERROR);
}
- pb = paste_get_index(&global_buffers, buffer);
+ pb = paste_get_index(buffer);
if (pb == NULL) {
cmdq_error(cmdq, "no buffer %d", buffer);
return (CMD_RETURN_ERROR);
diff --git a/cmd-set-buffer.c b/cmd-set-buffer.c
index a206760c..5dabc1ee 100644
--- a/cmd-set-buffer.c
+++ b/cmd-set-buffer.c
@@ -66,13 +66,13 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
free(cause);
return (CMD_RETURN_ERROR);
}
- pb = paste_get_index(&global_buffers, buffer);
+ pb = paste_get_index(buffer);
if (pb == NULL) {
cmdq_error(cmdq, "no buffer %d", buffer);
return (CMD_RETURN_ERROR);
}
} else if (args_has(args, 'a')) {
- pb = paste_get_top(&global_buffers);
+ pb = paste_get_top();
if (pb != NULL)
buffer = 0;
}
@@ -88,9 +88,9 @@ cmd_set_buffer_exec(struct cmd *self, struct cmd_q *cmdq)
psize += newsize;
if (buffer == -1)
- paste_add(&global_buffers, pdata, psize, limit);
+ paste_add(pdata, psize, limit);
else
- paste_replace(&global_buffers, buffer, pdata, psize);
+ paste_replace(buffer, pdata, psize);
return (CMD_RETURN_NORMAL);
}
diff --git a/input-keys.c b/input-keys.c
index 0370a684..6e21cc0c 100644
--- a/input-keys.c
+++ b/input-keys.c
@@ -240,7 +240,7 @@ input_mouse(struct window_pane *wp, struct session *s, struct mouse_event *m)
if (m->button == 1 && (m->event & MOUSE_EVENT_CLICK) &&
options_get_number(&wp->window->options, "mode-mouse") == 1) {
- pb = paste_get_top(&global_buffers);
+ pb = paste_get_top();
if (pb != NULL) {
paste_send_pane(pb, wp, "\r",
wp->screen->mode & MODE_BRACKETPASTE);
diff --git a/paste.c b/paste.c
index 98d71a07..9492fd91 100644
--- a/paste.c
+++ b/paste.c
@@ -30,46 +30,48 @@
* string!
*/
+ARRAY_DECL(, struct paste_buffer *) paste_buffers = ARRAY_INITIALIZER;
+
/* Return each item of the stack in turn. */
struct paste_buffer *
-paste_walk_stack(struct paste_stack *ps, u_int *idx)
+paste_walk_stack(u_int *idx)
{
struct paste_buffer *pb;
- pb = paste_get_index(ps, *idx);
+ pb = paste_get_index(*idx);
(*idx)++;
return (pb);
}
/* Get the top item on the stack. */
struct paste_buffer *
-paste_get_top(struct paste_stack *ps)
+paste_get_top(void)
{
- if (ARRAY_LENGTH(ps) == 0)
+ if (ARRAY_LENGTH(&paste_buffers) == 0)
return (NULL);
- return (ARRAY_FIRST(ps));
+ return (ARRAY_FIRST(&paste_buffers));
}
/* Get an item by its index. */
struct paste_buffer *
-paste_get_index(struct paste_stack *ps, u_int idx)
+paste_get_index(u_int idx)
{
- if (idx >= ARRAY_LENGTH(ps))
+ if (idx >= ARRAY_LENGTH(&paste_buffers))
return (NULL);
- return (ARRAY_ITEM(ps, idx));
+ return (ARRAY_ITEM(&paste_buffers, idx));
}
/* Free the top item on the stack. */
int
-paste_free_top(struct paste_stack *ps)
+paste_free_top(void)
{
struct paste_buffer *pb;
- if (ARRAY_LENGTH(ps) == 0)
+ if (ARRAY_LENGTH(&paste_buffers) == 0)
return (-1);
- pb = ARRAY_FIRST(ps);
- ARRAY_REMOVE(ps, 0);
+ pb = ARRAY_FIRST(&paste_buffers);
+ ARRAY_REMOVE(&paste_buffers, 0);
free(pb->data);
free(pb);
@@ -79,15 +81,15 @@ paste_free_top(struct paste_stack *ps)
/* Free an item by index. */
int
-paste_free_index(struct paste_stack *ps, u_int idx)
+paste_free_index(u_int idx)
{
struct paste_buffer *pb;
- if (idx >= ARRAY_LENGTH(ps))
+ if (idx >= ARRAY_LENGTH(&paste_buffers))
return (-1);
- pb = ARRAY_ITEM(ps, idx);
- ARRAY_REMOVE(ps, idx);
+ pb = ARRAY_ITEM(&paste_buffers, idx);
+ ARRAY_REMOVE(&paste_buffers, idx);
free(pb->data);
free(pb);
@@ -100,22 +102,22 @@ paste_free_index(struct paste_stack *ps, u_int idx)
* that the caller is responsible for allocating data.
*/
void
-paste_add(struct paste_stack *ps, char *data, size_t size, u_int limit)
+paste_add(char *data, size_t size, u_int limit)
{
struct paste_buffer *pb;
if (size == 0)
return;
- while (ARRAY_LENGTH(ps) >= limit) {
- pb = ARRAY_LAST(ps);
+ while (ARRAY_LENGTH(&paste_buffers) >= limit) {
+ pb = ARRAY_LAST(&paste_buffers);
free(pb->data);
free(pb);
- ARRAY_TRUNC(ps, 1);
+ ARRAY_TRUNC(&paste_buffers, 1);
}
pb = xmalloc(sizeof *pb);
- ARRAY_INSERT(ps, 0, pb);
+ ARRAY_INSERT(&paste_buffers, 0, pb);
pb->data = data;
pb->size = size;
@@ -127,7 +129,7 @@ paste_add(struct paste_stack *ps, char *data, size_t size, u_int limit)
* allocating data.
*/
int
-paste_replace(struct paste_stack *ps, u_int idx, char *data, size_t size)
+paste_replace(u_int idx, char *data, size_t size)
{
struct paste_buffer *pb;
@@ -136,10 +138,10 @@ paste_replace(struct paste_stack *ps, u_int idx, char *data, size_t size)
return (0);
}
- if (idx >= ARRAY_LENGTH(ps))
+ if (idx >= ARRAY_LENGTH(&paste_buffers))
return (-1);
- pb = ARRAY_ITEM(ps, idx);
+ pb = ARRAY_ITEM(&paste_buffers, idx);
free(pb->data);
pb->data = data;
diff --git a/server.c b/server.c
index ea8b77f1..0d6c4f15 100644
--- a/server.c
+++ b/server.c
@@ -51,8 +51,6 @@ int server_shutdown;
struct event server_ev_accept;
struct event server_ev_second;
-struct paste_stack global_buffers;
-
int server_create_socket(void);
void server_loop(void);
int server_should_shutdown(void);
@@ -147,7 +145,6 @@ server_start(int lockfd, char *lockfile)
RB_INIT(&sessions);
RB_INIT(&dead_sessions);
TAILQ_INIT(&session_groups);
- ARRAY_INIT(&global_buffers);
mode_key_init_trees();
key_bindings_init();
utf8_build();
diff --git a/status.c b/status.c
index acbf278e..4ea42f1c 100644
--- a/status.c
+++ b/status.c
@@ -1157,7 +1157,7 @@ status_prompt_key(struct client *c, int key)
c->flags |= CLIENT_STATUS;
break;
case MODEKEYEDIT_PASTE:
- if ((pb = paste_get_top(&global_buffers)) == NULL)
+ if ((pb = paste_get_top()) == NULL)
break;
for (n = 0; n < pb->size; n++) {
ch = (u_char) pb->data[n];
diff --git a/tmux.h b/tmux.h
index ed0f2e44..68a8517b 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1037,7 +1037,6 @@ struct paste_buffer {
char *data;
size_t size;
};
-ARRAY_DECL(paste_stack, struct paste_buffer *);
/* Environment variable. */
struct environ_entry {
@@ -1709,13 +1708,13 @@ void tty_keys_free(struct tty *);
int tty_keys_next(struct tty *);
/* paste.c */
-struct paste_buffer *paste_walk_stack(struct paste_stack *, u_int *);
-struct paste_buffer *paste_get_top(struct paste_stack *);
-struct paste_buffer *paste_get_index(struct paste_stack *, u_int);
-int paste_free_top(struct paste_stack *);
-int paste_free_index(struct paste_stack *, u_int);
-void paste_add(struct paste_stack *, char *, size_t, u_int);
-int paste_replace(struct paste_stack *, u_int, char *, size_t);
+struct paste_buffer *paste_walk_stack(u_int *);
+struct paste_buffer *paste_get_top(void);
+struct paste_buffer *paste_get_index(u_int);
+int paste_free_top(void);
+int paste_free_index(u_int);
+void paste_add(char *, size_t, u_int);
+int paste_replace(u_int, char *, size_t);
char *paste_make_sample(struct paste_buffer *, int);
void paste_send_pane(struct paste_buffer *, struct window_pane *,
const char *, int);
@@ -1886,7 +1885,6 @@ const char *key_string_lookup_key(int);
/* server.c */
extern struct clients clients;
extern struct clients dead_clients;
-extern struct paste_stack global_buffers;
int server_start(int, char *);
void server_update_socket(void);
void server_add_accept(int);
diff --git a/window-copy.c b/window-copy.c
index ef99ed9a..296443a2 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -776,7 +776,7 @@ window_copy_key_input(struct window_pane *wp, int key)
*data->inputstr = '\0';
break;
case MODEKEYEDIT_PASTE:
- if ((pb = paste_get_top(&global_buffers)) == NULL)
+ if ((pb = paste_get_top()) == NULL)
break;
for (n = 0; n < pb->size; n++) {
ch = (u_char) pb->data[n];
@@ -1465,8 +1465,8 @@ window_copy_copy_buffer(struct window_pane *wp, int idx, void *buf, size_t len)
if (idx == -1) {
limit = options_get_number(&global_options, "buffer-limit");
- paste_add(&global_buffers, buf, len, limit);
- } else if (paste_replace(&global_buffers, idx, buf, len) != 0)
+ paste_add(buf, len, limit);
+ } else if (paste_replace(idx, buf, len) != 0)
free(buf);
}
@@ -1524,13 +1524,13 @@ window_copy_append_selection(struct window_pane *wp, int idx)
if (idx == -1)
idx = 0;
- if (idx == 0 && paste_get_top(&global_buffers) == NULL) {
+ if (idx == 0 && paste_get_top() == NULL) {
limit = options_get_number(&global_options, "buffer-limit");
- paste_add(&global_buffers, buf, len, limit);
+ paste_add(buf, len, limit);
return;
}
- pb = paste_get_index(&global_buffers, idx);
+ pb = paste_get_index(idx);
if (pb != NULL) {
buf = xrealloc(buf, 1, len + pb->size);
memmove(buf + pb->size, buf, len);
@@ -1538,7 +1538,7 @@ window_copy_append_selection(struct window_pane *wp, int idx)
len += pb->size;
}
- if (paste_replace(&global_buffers, idx, buf, len) != 0)
+ if (paste_replace(idx, buf, len) != 0)
free(buf);
}