=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-copy.c,v retrieving revision 1.89 retrieving revision 1.90 diff -c -r1.89 -r1.90 *** src/usr.bin/tmux/window-copy.c 2013/03/22 15:52:42 1.89 --- src/usr.bin/tmux/window-copy.c 2013/03/25 11:43:01 1.90 *************** *** 1,4 **** ! /* $OpenBSD: window-copy.c,v 1.89 2013/03/22 15:52:42 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-copy.c,v 1.90 2013/03/25 11:43:01 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 54,60 **** int window_copy_update_selection(struct window_pane *); void *window_copy_get_selection(struct window_pane *, size_t *); void window_copy_copy_buffer(struct window_pane *, int, void *, size_t); ! void window_copy_copy_pipe(struct window_pane *, int, const char *); void window_copy_copy_selection(struct window_pane *, int); void window_copy_clear_selection(struct window_pane *); void window_copy_copy_line( --- 54,61 ---- int window_copy_update_selection(struct window_pane *); void *window_copy_get_selection(struct window_pane *, size_t *); void window_copy_copy_buffer(struct window_pane *, int, void *, size_t); ! void window_copy_copy_pipe( ! struct window_pane *, struct session *, int, const char *); void window_copy_copy_selection(struct window_pane *, int); void window_copy_clear_selection(struct window_pane *); void window_copy_copy_line( *************** *** 539,545 **** break; case MODEKEYCOPY_COPYPIPE: if (sess != NULL) { ! window_copy_copy_pipe(wp, data->numprefix, arg); window_pane_reset_mode(wp); return; } --- 540,546 ---- break; case MODEKEYCOPY_COPYPIPE: if (sess != NULL) { ! window_copy_copy_pipe(wp, sess, data->numprefix, arg); window_pane_reset_mode(wp); return; } *************** *** 1397,1417 **** } void ! window_copy_copy_pipe(struct window_pane *wp, int idx, const char *arg) { ! void* buf; ! size_t len; ! FILE* f; buf = window_copy_get_selection(wp, &len); if (buf == NULL) return; ! f = popen(arg, "w"); ! if (f != NULL) { ! fwrite(buf, 1, len, f); ! pclose(f); ! } window_copy_copy_buffer(wp, idx, buf, len); } --- 1398,1417 ---- } void ! window_copy_copy_pipe( ! struct window_pane *wp, struct session *sess, int idx, const char *arg) { ! void *buf; ! size_t len; ! struct job *job; + buf = window_copy_get_selection(wp, &len); if (buf == NULL) return; ! job = job_run(arg, sess, NULL, NULL, NULL); ! bufferevent_write(job->event, buf, len); window_copy_copy_buffer(wp, idx, buf, len); }