diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2012-05-22 11:35:37 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2012-05-22 11:35:37 +0000 |
commit | ebf94bc9cba6c41074fdfa1d1084ad5fff43fc24 (patch) | |
tree | f7f941af93113b5373618b569ea211c5acd7cfa4 /cmd-list-buffers.c | |
parent | 682884edc5ef0b6ded98b385fce3066e820317ff (diff) | |
download | rtmux-ebf94bc9cba6c41074fdfa1d1084ad5fff43fc24.tar.gz rtmux-ebf94bc9cba6c41074fdfa1d1084ad5fff43fc24.tar.bz2 rtmux-ebf94bc9cba6c41074fdfa1d1084ad5fff43fc24.zip |
Switch all of the various choose- and list- commands over to the format
infrastructure, from Thomas Adam.
Diffstat (limited to 'cmd-list-buffers.c')
-rw-r--r-- | cmd-list-buffers.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/cmd-list-buffers.c b/cmd-list-buffers.c index d4ff9a22..777a6371 100644 --- a/cmd-list-buffers.c +++ b/cmd-list-buffers.c @@ -30,8 +30,8 @@ int cmd_list_buffers_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_list_buffers_entry = { "list-buffers", "lsb", - "", 0, 0, - "", + "F:", 0, 0, + "[-F format]", 0, NULL, NULL, @@ -42,16 +42,27 @@ const struct cmd_entry cmd_list_buffers_entry = { int cmd_list_buffers_exec(unused struct cmd *self, struct cmd_ctx *ctx) { + struct args *args = self->args; struct paste_buffer *pb; + struct format_tree *ft; u_int idx; - char *tmp; + char *line; + const char *template; + + if ((template = args_get(args, 'F')) == NULL) + template = DEFAULT_BUFFER_LIST_TEMPLATE; idx = 0; while ((pb = paste_walk_stack(&global_buffers, &idx)) != NULL) { - tmp = paste_print(pb, 50); - ctx->print(ctx, - "%u: %zu bytes: \"%s\"", idx - 1, pb->size, tmp); - xfree(tmp); + ft = format_create(); + format_add(ft, "line", "%u", idx - 1); + format_paste_buffer(ft, pb); + + line = format_expand(ft, template); + ctx->print(ctx, "%s", line); + xfree(line); + + format_free(ft); } return (0); |