enum cmd_retval cmd_delete_buffer_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; char *cause; int buffer; if (!args_has(args, 'b')) { paste_free_top(&global_buffers); return (CMD_RETURN_NORMAL); } buffer = args_strtonum(args, 'b', 0, INT_MAX, &cause); if (cause != NULL) { cmdq_error(cmdq, "buffer %s", cause); free(cause); return (CMD_RETURN_ERROR); } if (paste_free_index(&global_buffers, buffer) != 0) { cmdq_error(cmdq, "no buffer %d", buffer); return (CMD_RETURN_ERROR); } return (CMD_RETURN_NORMAL); }
int cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) { struct cmd_paste_buffer_data *data = self->data; struct window_pane *wp; struct session *s; struct paste_buffer *pb; if (cmd_find_pane(ctx, data->target, &s, &wp) == NULL) return (-1); if (data->buffer == -1) pb = paste_get_top(&s->buffers); else { if ((pb = paste_get_index(&s->buffers, data->buffer)) == NULL) { ctx->error(ctx, "no buffer %d", data->buffer); return (-1); } } if (pb != NULL) cmd_paste_buffer_filter(wp, pb->data, pb->size, data->sepstr); /* Delete the buffer if -d. */ if (data->flag_delete) { if (data->buffer == -1) paste_free_top(&s->buffers); else paste_free_index(&s->buffers, data->buffer); } return (0); }
int cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) { struct args *args = self->args; struct window_pane *wp; struct session *s; struct paste_buffer *pb; const char *sepstr; char *cause; int buffer; int pflag; if (cmd_find_pane(ctx, args_get(args, 't'), &s, &wp) == NULL) return (-1); if (!args_has(args, 'b')) buffer = -1; else { buffer = args_strtonum(args, 'b', 0, INT_MAX, &cause); if (cause != NULL) { ctx->error(ctx, "buffer %s", cause); xfree(cause); return (-1); } } if (buffer == -1) pb = paste_get_top(&global_buffers); else { pb = paste_get_index(&global_buffers, buffer); if (pb == NULL) { ctx->error(ctx, "no buffer %d", buffer); return (-1); } } if (pb != NULL) { sepstr = args_get(args, 's'); if (sepstr == NULL) { if (args_has(args, 'r')) sepstr = "\n"; else sepstr = "\r"; } pflag = args_has(args, 'p') && (wp->screen->mode & MODE_BRACKETPASTE); cmd_paste_buffer_filter(wp, pb->data, pb->size, sepstr, pflag); } /* Delete the buffer if -d. */ if (args_has(args, 'd')) { if (buffer == -1) paste_free_top(&global_buffers); else paste_free_index(&global_buffers, buffer); } return (0); }
enum cmd_retval cmd_paste_buffer_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; struct window_pane *wp; struct session *s; struct paste_buffer *pb; const char *sepstr; char *cause; int buffer; int pflag; if (cmd_find_pane(cmdq, args_get(args, 't'), &s, &wp) == NULL) return (CMD_RETURN_ERROR); if (!args_has(args, 'b')) buffer = -1; else { buffer = args_strtonum(args, 'b', 0, INT_MAX, &cause); if (cause != NULL) { cmdq_error(cmdq, "buffer %s", cause); free(cause); return (CMD_RETURN_ERROR); } } if (buffer == -1) pb = paste_get_top(&global_buffers); else { pb = paste_get_index(&global_buffers, buffer); if (pb == NULL) { cmdq_error(cmdq, "no buffer %d", buffer); return (CMD_RETURN_ERROR); } } if (pb != NULL) { sepstr = args_get(args, 's'); if (sepstr == NULL) { if (args_has(args, 'r')) sepstr = "\n"; else sepstr = "\r"; } pflag = (wp->screen->mode & MODE_BRACKETPASTE); paste_send_pane(pb, wp, sepstr, args_has(args, 'p') && pflag); } /* Delete the buffer if -d. */ if (args_has(args, 'd')) { if (buffer == -1) paste_free_top(&global_buffers); else paste_free_index(&global_buffers, buffer); } return (CMD_RETURN_NORMAL); }
int cmd_delete_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) { struct cmd_buffer_data *data = self->data; struct session *s; if ((s = cmd_find_session(ctx, data->target)) == NULL) return (-1); if (data->buffer == -1) paste_free_top(&s->buffers); else if (paste_free_index(&s->buffers, data->buffer) != 0) { ctx->error(ctx, "no buffer %d", data->buffer); return (-1); } return (0); }
enum cmd_retval cmd_delete_buffer_exec(struct cmd *self, struct cmd_q *cmdq) { struct args *args = self->args; const char *bufname; if (!args_has(args, 'b')) { paste_free_top(); return (CMD_RETURN_NORMAL); } bufname = args_get(args, 'b'); if (paste_free_name(bufname) != 0) { cmdq_error(cmdq, "no buffer %s", bufname); return (CMD_RETURN_ERROR); } return (CMD_RETURN_NORMAL); }
int cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) { struct cmd_buffer_data *data = self->data; struct winlink *wl; struct window_pane *wp; struct session *s; struct paste_buffer *pb; if ((wl = cmd_find_window(ctx, data->target, &s)) == NULL) return (-1); wp = wl->window->active; if (data->buffer == -1) pb = paste_get_top(&s->buffers); else { if ((pb = paste_get_index(&s->buffers, data->buffer)) == NULL) { ctx->error(ctx, "no buffer %d", data->buffer); return (-1); } } if (pb != NULL) { /* -r means raw data without LF->CR conversion. */ if (cmd_check_flag(data->chflags, 'r')) bufferevent_write(wp->event, pb->data, pb->size); else cmd_paste_buffer_lf2cr(wp, pb->data, pb->size); } /* Delete the buffer if -d. */ if (cmd_check_flag(data->chflags, 'd')) { if (data->buffer == -1) paste_free_top(&s->buffers); else paste_free_index(&s->buffers, data->buffer); } return (0); }
void paste_free_stack(struct paste_stack *ps) { while (paste_free_top(ps) == 0) ; }