summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2014-01-22 14:43:42 +0000
committernicm <nicm>2014-01-22 14:43:42 +0000
commitd23561f38172d1fd3766bf55390ba750a5bd1b64 (patch)
tree1d5d64b59b9e78e6546c7f6462e9e3c866137e48
parent9ee93b3ea30cfa8e67a62b3c6cf522a9e677ca84 (diff)
Merge server-info into show-messages and remove some not useful output.
-rw-r--r--Makefile1
-rw-r--r--cmd-server-info.c173
-rw-r--r--cmd-show-messages.c112
-rw-r--r--tmux.114
4 files changed, 120 insertions, 180 deletions
diff --git a/Makefile b/Makefile
index 9fa55d9b..96972944 100644
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,6 @@ SRCS= arguments.c \
cmd-select-pane.c \
cmd-select-window.c \
cmd-send-keys.c \
- cmd-server-info.c \
cmd-set-buffer.c \
cmd-set-environment.c \
cmd-set-option.c \
diff --git a/cmd-server-info.c b/cmd-server-info.c
deleted file mode 100644
index 6cbabe2b..00000000
--- a/cmd-server-info.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/* $OpenBSD$ */
-
-/*
- * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/types.h>
-#include <sys/utsname.h>
-
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-#include <vis.h>
-
-#include "tmux.h"
-
-/*
- * Show various information about server.
- */
-
-enum cmd_retval cmd_server_info_exec(struct cmd *, struct cmd_q *);
-
-const struct cmd_entry cmd_server_info_entry = {
- "server-info", "info",
- "", 0, 0,
- "",
- 0,
- NULL,
- cmd_server_info_exec
-};
-
-enum cmd_retval
-cmd_server_info_exec(unused struct cmd *self, struct cmd_q *cmdq)
-{
- struct tty_term *term;
- struct client *c;
- struct session *s;
- struct winlink *wl;
- struct window *w;
- struct window_pane *wp;
- struct tty_code *code;
- const struct tty_term_code_entry *ent;
- struct utsname un;
- struct job *job;
- struct grid *gd;
- struct grid_line *gl;
- u_int i, j, k, lines;
- size_t size;
- char out[80];
- char *tim;
- time_t t;
-
- tim = ctime(&start_time);
- *strchr(tim, '\n') = '\0';
- cmdq_print(cmdq, "pid %ld, started %s", (long) getpid(), tim);
- cmdq_print(cmdq, "socket path %s, debug level %d", socket_path,
- debug_level);
- if (uname(&un) >= 0) {
- cmdq_print(cmdq, "system is %s %s %s %s",
- un.sysname, un.release, un.version, un.machine);
- }
- if (cfg_file != NULL)
- cmdq_print(cmdq, "configuration file is %s", cfg_file);
- else
- cmdq_print(cmdq, "configuration file not specified");
- cmdq_print(cmdq, "protocol version is %d", PROTOCOL_VERSION);
- cmdq_print(cmdq, "%s", "");
-
- cmdq_print(cmdq, "Clients:");
- for (i = 0; i < ARRAY_LENGTH(&clients); i++) {
- c = ARRAY_ITEM(&clients, i);
- if (c == NULL || c->session == NULL)
- continue;
-
- cmdq_print(cmdq,"%2d: %s (%d, %d): %s [%ux%u %s bs=%hho "
- "class=%u] [flags=0x%x/0x%x, references=%u]", i,
- c->tty.path, c->ibuf.fd, c->tty.fd, c->session->name,
- c->tty.sx, c->tty.sy, c->tty.termname,
- c->tty.tio.c_cc[VERASE], c->tty.class,
- c->flags, c->tty.flags, c->references);
- }
- cmdq_print(cmdq, "%s", "");
-
- cmdq_print(cmdq, "Sessions: [%zu]", sizeof (struct grid_cell));
- RB_FOREACH(s, sessions, &sessions) {
- t = s->creation_time.tv_sec;
- tim = ctime(&t);
- *strchr(tim, '\n') = '\0';
-
- cmdq_print(cmdq, "%2u: %s: %u windows (created %s) [%ux%u] "
- "[flags=0x%x]", s->id, s->name,
- winlink_count(&s->windows), tim, s->sx, s->sy, s->flags);
- RB_FOREACH(wl, winlinks, &s->windows) {
- w = wl->window;
- cmdq_print(cmdq, "%4u: %s [%ux%u] [flags=0x%x, "
- "references=%u, last layout=%d]", wl->idx, w->name,
- w->sx, w->sy, w->flags, w->references,
- w->lastlayout);
- j = 0;
- TAILQ_FOREACH(wp, &w->panes, entry) {
- lines = size = 0;
- gd = wp->base.grid;
- for (k = 0; k < gd->hsize + gd->sy; k++) {
- gl = &gd->linedata[k];
- if (gl->celldata == NULL)
- continue;
- lines++;
- size += gl->cellsize *
- sizeof *gl->celldata;
- }
- cmdq_print(cmdq,
- "%6u: %s %lu %d %u/%u, %zu bytes", j,
- wp->tty, (u_long) wp->pid, wp->fd, lines,
- gd->hsize + gd->sy, size);
- j++;
- }
- }
- }
- cmdq_print(cmdq, "%s", "");
-
- cmdq_print(cmdq, "Terminals:");
- LIST_FOREACH(term, &tty_terms, entry) {
- cmdq_print(cmdq, "%s [references=%u, flags=0x%x]:",
- term->name, term->references, term->flags);
- for (i = 0; i < NTTYCODE; i++) {
- ent = &tty_term_codes[i];
- code = &term->codes[ent->code];
- switch (code->type) {
- case TTYCODE_NONE:
- cmdq_print(cmdq, "%2u: %s: [missing]",
- ent->code, ent->name);
- break;
- case TTYCODE_STRING:
- strnvis(out, code->value.string, sizeof out,
- VIS_OCTAL|VIS_TAB|VIS_NL);
- cmdq_print(cmdq, "%2u: %s: (string) %s",
- ent->code, ent->name, out);
- break;
- case TTYCODE_NUMBER:
- cmdq_print(cmdq, "%2u: %s: (number) %d",
- ent->code, ent->name, code->value.number);
- break;
- case TTYCODE_FLAG:
- cmdq_print(cmdq, "%2u: %s: (flag) %s",
- ent->code, ent->name,
- code->value.flag ? "true" : "false");
- break;
- }
- }
- }
- cmdq_print(cmdq, "%s", "");
-
- cmdq_print(cmdq, "Jobs:");
- LIST_FOREACH(job, &all_jobs, lentry) {
- cmdq_print(cmdq, "%s [fd=%d, pid=%d, status=%d]",
- job->cmd, job->fd, job->pid, job->status);
- }
-
- return (CMD_RETURN_NORMAL);
-}
diff --git a/cmd-show-messages.c b/cmd-show-messages.c
index f43607aa..a3938e0a 100644
--- a/cmd-show-messages.c
+++ b/cmd-show-messages.c
@@ -20,6 +20,8 @@
#include <string.h>
#include <time.h>
+#include <unistd.h>
+#include <vis.h>
#include "tmux.h"
@@ -31,13 +33,98 @@ enum cmd_retval cmd_show_messages_exec(struct cmd *, struct cmd_q *);
const struct cmd_entry cmd_show_messages_entry = {
"show-messages", "showmsgs",
- "t:", 0, 0,
- CMD_TARGET_CLIENT_USAGE,
+ "IJTt:", 0, 0,
+ "[-IJT] " CMD_TARGET_CLIENT_USAGE,
0,
NULL,
cmd_show_messages_exec
};
+const struct cmd_entry cmd_server_info_entry = {
+ "server-info", "info",
+ "", 0, 0,
+ "",
+ 0,
+ NULL,
+ cmd_show_messages_exec
+};
+
+void cmd_show_messages_server (struct cmd_q *);
+void cmd_show_messages_terminals (struct cmd_q *);
+void cmd_show_messages_jobs (struct cmd_q *);
+
+void
+cmd_show_messages_server (struct cmd_q *cmdq)
+{
+ char *tim;
+
+ tim = ctime(&start_time);
+ *strchr(tim, '\n') = '\0';
+
+ cmdq_print(cmdq, "started %s", tim);
+ cmdq_print(cmdq, "socket path %s", socket_path);
+ cmdq_print(cmdq, "debug level %d", debug_level);
+ cmdq_print(cmdq, "protocol version %d", PROTOCOL_VERSION);
+}
+
+void
+cmd_show_messages_terminals (struct cmd_q *cmdq)
+{
+ struct tty_term *term;
+ const struct tty_term_code_entry *ent;
+ struct tty_code *code;
+ u_int i, n;
+ char out[80];
+
+ n = 0;
+ LIST_FOREACH(term, &tty_terms, entry) {
+ cmdq_print(cmdq,
+ "Terminal %u: %s [references=%u, flags=0x%x]:",
+ n, term->name, term->references, term->flags);
+ n++;
+ for (i = 0; i < NTTYCODE; i++) {
+ ent = &tty_term_codes[i];
+ code = &term->codes[ent->code];
+ switch (code->type) {
+ case TTYCODE_NONE:
+ cmdq_print(cmdq, "%4u: %s: [missing]",
+ ent->code, ent->name);
+ break;
+ case TTYCODE_STRING:
+ strnvis(out, code->value.string, sizeof out,
+ VIS_OCTAL|VIS_TAB|VIS_NL);
+ cmdq_print(cmdq, "%4u: %s: (string) %s",
+ ent->code, ent->name, out);
+ break;
+ case TTYCODE_NUMBER:
+ cmdq_print(cmdq, "%4u: %s: (number) %d",
+ ent->code, ent->name, code->value.number);
+ break;
+ case TTYCODE_FLAG:
+ cmdq_print(cmdq, "%4u: %s: (flag) %s",
+ ent->code, ent->name,
+ code->value.flag ? "true" : "false");
+ break;
+ }
+ }
+ }
+}
+
+void
+cmd_show_messages_jobs (struct cmd_q *cmdq)
+{
+ struct job *job;
+ u_int n;
+
+ n = 0;
+ LIST_FOREACH(job, &all_jobs, lentry) {
+ cmdq_print(cmdq,
+ "Job %u: %s [fd=%d, pid=%d, status=%d]",
+ n, job->cmd, job->fd, job->pid, job->status);
+ n++;
+ }
+}
+
enum cmd_retval
cmd_show_messages_exec(struct cmd *self, struct cmd_q *cmdq)
{
@@ -46,6 +133,27 @@ cmd_show_messages_exec(struct cmd *self, struct cmd_q *cmdq)
struct message_entry *msg;
char *tim;
u_int i;
+ int done;
+
+ done = 0;
+ if (args_has (args, 'I') || self->entry == &cmd_server_info_entry) {
+ cmd_show_messages_server (cmdq);
+ done = 1;
+ }
+ if (args_has (args, 'T') || self->entry == &cmd_server_info_entry) {
+ if (done)
+ cmdq_print (cmdq, "%s", "");
+ cmd_show_messages_terminals (cmdq);
+ done = 1;
+ }
+ if (args_has (args, 'J') || self->entry == &cmd_server_info_entry) {
+ if (done)
+ cmdq_print (cmdq, "%s", "");
+ cmd_show_messages_jobs (cmdq);
+ done = 1;
+ }
+ if (done)
+ return (CMD_RETURN_NORMAL);
if ((c = cmd_find_client(cmdq, args_get(args, 't'), 0)) == NULL)
return (CMD_RETURN_ERROR);
diff --git a/tmux.1 b/tmux.1
index a2404b4f..e44a44a6 100644
--- a/tmux.1
+++ b/tmux.1
@@ -770,15 +770,24 @@ is specified, only update the client's status bar.
Rename the session to
.Ar new-name .
.It Xo Ic show-messages
+.Op Fl IJT
.Op Fl t Ar target-client
.Xc
.D1 (alias: Ic showmsgs )
+Show client messages or server information.
Any messages displayed on the status line are saved in a per-client message
log, up to a maximum of the limit set by the
.Ar message-limit
session option for the session attached to that client.
-This command displays the log for
+With
+.Fl t ,
+display the log for
.Ar target-client .
+.Fl I,
+.Fl J
+and
+.Fl T
+show debugging information about the running server, jobs and terminals.
.It Ic source-file Ar path
.D1 (alias: Ic source )
Execute commands from
@@ -3566,9 +3575,6 @@ specified by
.Fl t
or the current pane if omitted).
If the command doesn't return success, the exit status is also displayed.
-.It Ic server-info
-.D1 (alias: Ic info )
-Show server information and terminal details.
.It Xo Ic wait-for
.Op Fl L | S | U
.Ar channel