version 1.89, 2013/03/22 15:52:42 |
version 1.90, 2013/03/25 11:43:01 |
|
|
int window_copy_update_selection(struct window_pane *); |
int window_copy_update_selection(struct window_pane *); |
void *window_copy_get_selection(struct window_pane *, size_t *); |
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_buffer(struct window_pane *, int, void *, size_t); |
void window_copy_copy_pipe(struct window_pane *, int, const char *); |
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_copy_selection(struct window_pane *, int); |
void window_copy_clear_selection(struct window_pane *); |
void window_copy_clear_selection(struct window_pane *); |
void window_copy_copy_line( |
void window_copy_copy_line( |
|
|
break; |
break; |
case MODEKEYCOPY_COPYPIPE: |
case MODEKEYCOPY_COPYPIPE: |
if (sess != NULL) { |
if (sess != NULL) { |
window_copy_copy_pipe(wp, data->numprefix, arg); |
window_copy_copy_pipe(wp, sess, data->numprefix, arg); |
window_pane_reset_mode(wp); |
window_pane_reset_mode(wp); |
return; |
return; |
} |
} |
|
|
} |
} |
|
|
void |
void |
window_copy_copy_pipe(struct window_pane *wp, int idx, const char *arg) |
window_copy_copy_pipe( |
|
struct window_pane *wp, struct session *sess, int idx, const char *arg) |
{ |
{ |
void* buf; |
void *buf; |
size_t len; |
size_t len; |
FILE* f; |
struct job *job; |
|
|
|
|
buf = window_copy_get_selection(wp, &len); |
buf = window_copy_get_selection(wp, &len); |
if (buf == NULL) |
if (buf == NULL) |
return; |
return; |
|
|
f = popen(arg, "w"); |
job = job_run(arg, sess, NULL, NULL, NULL); |
if (f != NULL) { |
bufferevent_write(job->event, buf, len); |
fwrite(buf, 1, len, f); |
|
pclose(f); |
|
} |
|
|
|
window_copy_copy_buffer(wp, idx, buf, len); |
window_copy_copy_buffer(wp, idx, buf, len); |
} |
} |