diff options
author | Thomas Adam <thomas@xteddy.org> | 2015-08-30 21:44:01 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2015-08-30 21:44:01 +0100 |
commit | cb89f2f2a197db5bf7e1acc8248f381c6f0410cd (patch) | |
tree | 9074f8aa373b1bcb857fee46a47d305152cacf06 /paste.c | |
parent | 486421ceff1b4d618d84ac3cb8c4dd9135b7960d (diff) | |
parent | b87dc608d9b5b470926aaf77c5956befdfb7bc7b (diff) | |
download | rtmux-cb89f2f2a197db5bf7e1acc8248f381c6f0410cd.tar.gz rtmux-cb89f2f2a197db5bf7e1acc8248f381c6f0410cd.tar.bz2 rtmux-cb89f2f2a197db5bf7e1acc8248f381c6f0410cd.zip |
Merge branch 'obsd-master'
Conflicts:
Makefile
format.c
Diffstat (limited to 'paste.c')
-rw-r--r-- | paste.c | 63 |
1 files changed, 32 insertions, 31 deletions
@@ -29,6 +29,18 @@ * string! */ +struct paste_buffer { + char *data; + size_t size; + + char *name; + int automatic; + u_int order; + + RB_ENTRY(paste_buffer) name_entry; + RB_ENTRY(paste_buffer) time_entry; +}; + u_int paste_next_index; u_int paste_next_order; u_int paste_num_automatic; @@ -59,6 +71,22 @@ paste_cmp_times(const struct paste_buffer *a, const struct paste_buffer *b) return (0); } +/* Get paste buffer name. */ +const char * +paste_buffer_name(struct paste_buffer *pb) +{ + return (pb->name); +} + +/* Get paste buffer data. */ +const char * +paste_buffer_data(struct paste_buffer *pb, size_t *size) +{ + if (size != NULL) + *size = pb->size; + return (pb->data); +} + /* Walk paste buffers by name. */ struct paste_buffer * paste_walk(struct paste_buffer *pb) @@ -70,13 +98,15 @@ paste_walk(struct paste_buffer *pb) /* Get the most recent automatic buffer. */ struct paste_buffer * -paste_get_top(void) +paste_get_top(const char **name) { struct paste_buffer *pb; pb = RB_MIN(paste_time_tree, &paste_by_time); if (pb == NULL) return (NULL); + if (name != NULL) + *name = pb->name; return (pb); } @@ -86,7 +116,7 @@ paste_free_top(void) { struct paste_buffer *pb; - pb = paste_get_top(); + pb = paste_get_top(NULL); if (pb == NULL) return (-1); return (paste_free_name(pb->name)); @@ -288,32 +318,3 @@ paste_make_sample(struct paste_buffer *pb, int utf8flag) strlcpy(buf + width, "...", 4); return (buf); } - -/* Paste into a window pane, filtering '\n' according to separator. */ -void -paste_send_pane(struct paste_buffer *pb, struct window_pane *wp, - const char *sep, int bracket) -{ - const char *data = pb->data, *end = data + pb->size, *lf; - size_t seplen; - - if (wp->flags & PANE_INPUTOFF) - return; - - if (bracket && (wp->screen->mode & MODE_BRACKETPASTE)) - bufferevent_write(wp->event, "\033[200~", 6); - - seplen = strlen(sep); - while ((lf = memchr(data, '\n', end - data)) != NULL) { - if (lf != data) - bufferevent_write(wp->event, data, lf - data); - bufferevent_write(wp->event, sep, seplen); - data = lf + 1; - } - - if (end != data) - bufferevent_write(wp->event, data, end - data); - - if (bracket && (wp->screen->mode & MODE_BRACKETPASTE)) - bufferevent_write(wp->event, "\033[201~", 6); -} |