=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-copy.c,v retrieving revision 1.202 retrieving revision 1.203 diff -u -r1.202 -r1.203 --- src/usr.bin/tmux/window-copy.c 2018/10/03 15:27:55 1.202 +++ src/usr.bin/tmux/window-copy.c 2018/11/08 18:49:19 1.203 @@ -1,4 +1,4 @@ -/* $OpenBSD: window-copy.c,v 1.202 2018/10/03 15:27:55 nicm Exp $ */ +/* $OpenBSD: window-copy.c,v 1.203 2018/11/08 18:49:19 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -69,13 +69,11 @@ static int window_copy_update_selection(struct window_pane *, int); static void window_copy_synchronize_cursor(struct window_pane *); static void *window_copy_get_selection(struct window_pane *, size_t *); -static void window_copy_copy_buffer(struct window_pane *, const char *, - void *, size_t); +static void window_copy_copy_buffer(struct window_pane *, void *, size_t); static void window_copy_copy_pipe(struct window_pane *, struct session *, - const char *, const char *); -static void window_copy_copy_selection(struct window_pane *, const char *); -static void window_copy_append_selection(struct window_pane *, const char *); +static void window_copy_copy_selection(struct window_pane *); +static void window_copy_append_selection(struct window_pane *); static void window_copy_clear_selection(struct window_pane *); static void window_copy_copy_line(struct window_pane *, char **, size_t *, u_int, u_int, u_int); @@ -535,13 +533,13 @@ if (args->argc == 1) { if (strcmp(command, "append-selection") == 0) { if (s != NULL) - window_copy_append_selection(wp, NULL); + window_copy_append_selection(wp); window_copy_clear_selection(wp); redraw = 1; } if (strcmp(command, "append-selection-and-cancel") == 0) { if (s != NULL) - window_copy_append_selection(wp, NULL); + window_copy_append_selection(wp); window_copy_clear_selection(wp); redraw = 1; cancel = 1; @@ -579,7 +577,7 @@ redraw = 1; if (s != NULL) { - window_copy_copy_selection(wp, NULL); + window_copy_copy_selection(wp); cancel = 1; } } @@ -592,19 +590,19 @@ redraw = 1; if (s != NULL) { - window_copy_copy_selection(wp, NULL); + window_copy_copy_selection(wp); cancel = 1; } } if (strcmp(command, "copy-selection") == 0) { if (s != NULL) - window_copy_copy_selection(wp, NULL); + window_copy_copy_selection(wp); window_copy_clear_selection(wp); redraw = 1; } if (strcmp(command, "copy-selection-and-cancel") == 0) { if (s != NULL) - window_copy_copy_selection(wp, NULL); + window_copy_copy_selection(wp); window_copy_clear_selection(wp); redraw = 1; cancel = 1; @@ -828,11 +826,11 @@ argument = args->argv[1]; if (strcmp(command, "copy-pipe") == 0) { if (s != NULL) - window_copy_copy_pipe(wp, s, NULL, argument); + window_copy_copy_pipe(wp, s, argument); } if (strcmp(command, "copy-pipe-and-cancel") == 0) { if (s != NULL) { - window_copy_copy_pipe(wp, s, NULL, argument); + window_copy_copy_pipe(wp, s, argument); cancel = 1; } } @@ -1657,8 +1655,7 @@ } static void -window_copy_copy_buffer(struct window_pane *wp, const char *bufname, void *buf, - size_t len) +window_copy_copy_buffer(struct window_pane *wp, void *buf, size_t len) { struct screen_write_ctx ctx; @@ -1669,13 +1666,13 @@ notify_pane("pane-set-clipboard", wp); } - if (paste_set(buf, len, bufname, NULL) != 0) + if (paste_set(buf, len, NULL, NULL) != 0) free(buf); } static void window_copy_copy_pipe(struct window_pane *wp, struct session *s, - const char *bufname, const char *arg) + const char *fmt) { void *buf; size_t len; @@ -1685,34 +1682,32 @@ buf = window_copy_get_selection(wp, &len); if (buf == NULL) return; - expanded = format_single(NULL, arg, NULL, s, NULL, wp); + expanded = format_single(NULL, fmt, NULL, s, NULL, wp); job = job_run(expanded, s, NULL, NULL, NULL, NULL, NULL, JOB_NOWAIT); bufferevent_write(job_get_event(job), buf, len); free(expanded); - window_copy_copy_buffer(wp, bufname, buf, len); + window_copy_copy_buffer(wp, buf, len); } static void -window_copy_copy_selection(struct window_pane *wp, const char *bufname) +window_copy_copy_selection(struct window_pane *wp) { - void *buf; + char *buf; size_t len; buf = window_copy_get_selection(wp, &len); - if (buf == NULL) - return; - - window_copy_copy_buffer(wp, bufname, buf, len); + if (buf != NULL) + window_copy_copy_buffer(wp, buf, len); } static void -window_copy_append_selection(struct window_pane *wp, const char *bufname) +window_copy_append_selection(struct window_pane *wp) { char *buf; struct paste_buffer *pb; - const char *bufdata; + const char *bufdata, *bufname; size_t len, bufsize; struct screen_write_ctx ctx; @@ -1727,10 +1722,7 @@ notify_pane("pane-set-clipboard", wp); } - if (bufname == NULL || *bufname == '\0') - pb = paste_get_top(&bufname); - else - pb = paste_get_name(bufname); + pb = paste_get_top(&bufname); if (pb != NULL) { bufdata = paste_buffer_data(pb, &bufsize); buf = xrealloc(buf, len + bufsize);