Skip NULL entries in the sessions list when choosing the next session,
[tmux-openbsd.git] / cmd-display-message.c
blob8c42ee6d3d89f1046fa27464efa5ae88464af44f
1 /* $OpenBSD$ */
3 /*
4 * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org>
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.
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.
19 #include <sys/types.h>
21 #include <time.h>
23 #include "tmux.h"
26 * Displays a message in the status line.
29 int cmd_display_message_exec(struct cmd *, struct cmd_ctx *);
31 const struct cmd_entry cmd_display_message_entry = {
32 "display-message", "display",
33 "[-p] " CMD_TARGET_CLIENT_USAGE " [message]",
34 CMD_ARG01, "p",
35 cmd_target_init,
36 cmd_target_parse,
37 cmd_display_message_exec,
38 cmd_target_free,
39 cmd_target_print
42 int
43 cmd_display_message_exec(struct cmd *self, struct cmd_ctx *ctx)
45 struct cmd_target_data *data = self->data;
46 struct client *c;
47 const char *template;
48 char *msg;
50 if ((c = cmd_find_client(ctx, data->target)) == NULL)
51 return (-1);
53 if (data->arg == NULL)
54 template = "[#S] #I:#W, current pane #P - (%H:%M %d-%b-%y)";
55 else
56 template = data->arg;
58 msg = status_replace(c, NULL, template, time(NULL), 0);
59 if (cmd_check_flag(data->chflags, 'p'))
60 ctx->print(ctx, "%s", msg);
61 else
62 status_message_set(c, "%s", msg);
63 xfree(msg);
65 return (0);