GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: usr.bin/tmux/cmd-list-buffers.c Lines: 0 10 0.0 %
Date: 2017-11-07 Branches: 0 2 0.0 %

Line Branch Exec Source
1
/* $OpenBSD: cmd-list-buffers.c,v 1.35 2017/05/01 12:20:55 nicm Exp $ */
2
3
/*
4
 * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
5
 *
6
 * Permission to use, copy, modify, and distribute this software for any
7
 * purpose with or without fee is hereby granted, provided that the above
8
 * copyright notice and this permission notice appear in all copies.
9
 *
10
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
 * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
15
 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
16
 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
 */
18
19
#include <sys/types.h>
20
21
#include <stdlib.h>
22
#include <string.h>
23
24
#include "tmux.h"
25
26
/*
27
 * List paste buffers.
28
 */
29
30
#define LIST_BUFFERS_TEMPLATE						\
31
	"#{buffer_name}: #{buffer_size} bytes: \"#{buffer_sample}\""
32
33
static enum cmd_retval	cmd_list_buffers_exec(struct cmd *, struct cmdq_item *);
34
35
const struct cmd_entry cmd_list_buffers_entry = {
36
	.name = "list-buffers",
37
	.alias = "lsb",
38
39
	.args = { "F:", 0, 0 },
40
	.usage = "[-F format]",
41
42
	.flags = CMD_AFTERHOOK,
43
	.exec = cmd_list_buffers_exec
44
};
45
46
static enum cmd_retval
47
cmd_list_buffers_exec(struct cmd *self, struct cmdq_item *item)
48
{
49
	struct args		*args = self->args;
50
	struct paste_buffer	*pb;
51
	struct format_tree	*ft;
52
	char			*line;
53
	const char		*template;
54
55
	if ((template = args_get(args, 'F')) == NULL)
56
		template = LIST_BUFFERS_TEMPLATE;
57
58
	pb = NULL;
59
	while ((pb = paste_walk(pb)) != NULL) {
60
		ft = format_create(item->client, item, FORMAT_NONE, 0);
61
		format_defaults_paste_buffer(ft, pb);
62
63
		line = format_expand(ft, template);
64
		cmdq_print(item, "%s", line);
65
		free(line);
66
67
		format_free(ft);
68
	}
69
70
	return (CMD_RETURN_NORMAL);
71
}