mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 01:34:18 +00:00 
			
		
		
		
	New command, server-info, to show server info + terminal details. Also tweak term stuff a bit.
This commit is contained in:
		
							
								
								
									
										7
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								CHANGES
									
									
									
									
									
								
							@@ -1,3 +1,8 @@
 | 
			
		||||
10 January 2009
 | 
			
		||||
 | 
			
		||||
* New command, server-info, to show some server information and terminal
 | 
			
		||||
  details.
 | 
			
		||||
 | 
			
		||||
09 January 2009
 | 
			
		||||
 | 
			
		||||
* Stop using ncurses variables and instead build a table of the codes we want
 | 
			
		||||
@@ -833,7 +838,7 @@
 | 
			
		||||
  (including mutt, emacs). No status bar yet and no key remapping or other
 | 
			
		||||
  customisation.
 | 
			
		||||
 | 
			
		||||
$Id: CHANGES,v 1.185 2009-01-09 23:57:42 nicm Exp $
 | 
			
		||||
$Id: CHANGES,v 1.186 2009-01-10 01:30:38 nicm Exp $
 | 
			
		||||
 | 
			
		||||
 LocalWords:  showw utf UTF fulvio ciriaco joshe OSC APC gettime abc DEF OA clr
 | 
			
		||||
 LocalWords:  rivo nurges lscm Erdely eol smysession mysession ek dstname RB
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
# $Id: Makefile,v 1.82 2009-01-09 23:57:42 nicm Exp $
 | 
			
		||||
# $Id: Makefile,v 1.83 2009-01-10 01:30:38 nicm Exp $
 | 
			
		||||
 | 
			
		||||
.SUFFIXES: .c .o .y .h
 | 
			
		||||
.PHONY: clean update-index.html upload-index.html
 | 
			
		||||
@@ -35,7 +35,7 @@ SRCS= tmux.c server.c server-msg.c server-fn.c buffer.c buffer-poll.c status.c \
 | 
			
		||||
      cmd-show-window-options.c cmd-command-prompt.c cmd-set-buffer.c \
 | 
			
		||||
      cmd-show-buffer.c cmd-list-buffers.c cmd-delete-buffer.c \
 | 
			
		||||
      cmd-list-commands.c cmd-move-window.c cmd-select-prompt.c \
 | 
			
		||||
      cmd-respawn-window.c cmd-source-file.c \
 | 
			
		||||
      cmd-respawn-window.c cmd-source-file.c cmd-server-info.c \
 | 
			
		||||
      window-scroll.c window-more.c window-copy.c options.c paste.c \
 | 
			
		||||
      tty.c tty-term.c tty-keys.c tty-write.c colour.c utf8.c options-cmd.c
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								TODO
									
									
									
									
									
								
							@@ -53,11 +53,13 @@
 | 
			
		||||
  unwrapping
 | 
			
		||||
- OPTIONS section in man page with description of new option handling
 | 
			
		||||
- update set/setw in man page with -g and -u flags
 | 
			
		||||
- document status line options, title bits
 | 
			
		||||
- document window options changes
 | 
			
		||||
- more # commands in status-left,right eg #H for hostname. others?
 | 
			
		||||
- input.c is too complicated. simplify?
 | 
			
		||||
- try change from pass-though model to redraw model (use updated screen
 | 
			
		||||
  data). maybe too slow though?
 | 
			
		||||
- use a better termcap internally instead of screen, perhaps xterm
 | 
			
		||||
- tty.c is a bit ugly
 | 
			
		||||
- document xterm-keys
 | 
			
		||||
- document server-info
 | 
			
		||||
- document status line options, title bits
 | 
			
		||||
- document window options changes
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: cmd-list-clients.c,v 1.10 2009-01-09 16:45:58 nicm Exp $ */
 | 
			
		||||
/* $Id: cmd-list-clients.c,v 1.11 2009-01-10 01:30:38 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -53,8 +53,8 @@ cmd_list_clients_exec(unused struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
		if (c == NULL || c->session == NULL)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		ctx->print(ctx, "%s: %s [%ux%u]",
 | 
			
		||||
		    c->tty.path, c->session->name, c->sx, c->sy);
 | 
			
		||||
		ctx->print(ctx, "%s: %s [%ux%u %s]", c->tty.path,
 | 
			
		||||
		    c->session->name, c->sx, c->sy, c->tty.termname);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (ctx->cmdclient != NULL)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										115
									
								
								cmd-server-info.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								cmd-server-info.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
			
		||||
/* $Id: cmd-server-info.c,v 1.1 2009-01-10 01:30:38 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * 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 <stdlib.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <vis.h>
 | 
			
		||||
 | 
			
		||||
#include "tmux.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Show various information about server.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
void	cmd_server_info_exec(struct cmd *, struct cmd_ctx *);
 | 
			
		||||
 | 
			
		||||
const struct cmd_entry cmd_server_info_entry = {
 | 
			
		||||
	"server-info", "info",
 | 
			
		||||
	"",
 | 
			
		||||
	0,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	cmd_server_info_exec,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL,
 | 
			
		||||
	NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
cmd_server_info_exec(unused struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
{
 | 
			
		||||
	struct tty_term			*term;
 | 
			
		||||
	struct client			*cmdclient;
 | 
			
		||||
	struct tty_code			*code;
 | 
			
		||||
	struct tty_term_code_entry	*ent;
 | 
			
		||||
	u_int		 		 i;
 | 
			
		||||
	char				 s[BUFSIZ];
 | 
			
		||||
 | 
			
		||||
	ctx->print(ctx, "tmux " BUILD 
 | 
			
		||||
	    ", pid %ld, started %s", (long) getpid(), ctime(&start_time));
 | 
			
		||||
	ctx->print(ctx, "socket path %s, debug level %d%s",
 | 
			
		||||
	    socket_path, debug_level, be_quiet ? ", quiet" : "");
 | 
			
		||||
	if (cfg_file != NULL)
 | 
			
		||||
		ctx->print(ctx, "configuration file %s", cfg_file);
 | 
			
		||||
	else
 | 
			
		||||
		ctx->print(ctx, "configuration file not specified");
 | 
			
		||||
	ctx->print(ctx, "%u clients, %u sessions", 
 | 
			
		||||
	    ARRAY_LENGTH(&clients), ARRAY_LENGTH(&sessions));
 | 
			
		||||
	ctx->print(ctx, "");
 | 
			
		||||
 | 
			
		||||
	cmdclient = ctx->cmdclient;
 | 
			
		||||
	ctx->cmdclient = NULL;
 | 
			
		||||
 | 
			
		||||
	ctx->print(ctx, "Clients:");
 | 
			
		||||
	cmd_list_clients_entry.exec(self, ctx);
 | 
			
		||||
	ctx->print(ctx, "");
 | 
			
		||||
 | 
			
		||||
 	ctx->print(ctx, "Sessions:");
 | 
			
		||||
	cmd_list_sessions_entry.exec(self, ctx);
 | 
			
		||||
	ctx->print(ctx, "");
 | 
			
		||||
 | 
			
		||||
  	ctx->print(ctx, "Terminals:");
 | 
			
		||||
	SLIST_FOREACH(term, &tty_terms, entry) {
 | 
			
		||||
		ctx->print(ctx, "%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:
 | 
			
		||||
				ctx->print(ctx, "  %d,%s: [missing]",
 | 
			
		||||
				    ent->code, ent->name);
 | 
			
		||||
				break;
 | 
			
		||||
			case TTYCODE_STRING:
 | 
			
		||||
				strnvis(
 | 
			
		||||
				    s, code->value.string, sizeof s, VIS_OCTAL);
 | 
			
		||||
				s[(sizeof s) - 1] = '\0';
 | 
			
		||||
 | 
			
		||||
				ctx->print(ctx, "  %d,%s: (string) %s",
 | 
			
		||||
				    ent->code, ent->name, s);
 | 
			
		||||
				break;
 | 
			
		||||
			case TTYCODE_NUMBER:
 | 
			
		||||
				ctx->print(ctx, "  %d,%s: (number) %d",
 | 
			
		||||
				    ent->code, ent->name, code->value.number);
 | 
			
		||||
				break;
 | 
			
		||||
			case TTYCODE_FLAG:
 | 
			
		||||
				ctx->print(ctx, "  %d,%s: (flag) %s",
 | 
			
		||||
				    ent->code, ent->name, 
 | 
			
		||||
				    code->value.flag ? "true" : "false");
 | 
			
		||||
				break;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	ctx->print(ctx, "");	
 | 
			
		||||
	
 | 
			
		||||
	if (cmdclient != NULL)
 | 
			
		||||
		server_write_client(cmdclient, MSG_EXIT, NULL, 0);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								cmd.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								cmd.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: cmd.c,v 1.68 2009-01-06 17:04:56 nicm Exp $ */
 | 
			
		||||
/* $Id: cmd.c,v 1.69 2009-01-10 01:30:38 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -59,6 +59,7 @@ const struct cmd_entry *cmd_table[] = {
 | 
			
		||||
	&cmd_select_window_entry,
 | 
			
		||||
	&cmd_send_keys_entry,
 | 
			
		||||
	&cmd_send_prefix_entry,
 | 
			
		||||
	&cmd_server_info_entry,
 | 
			
		||||
	&cmd_set_buffer_entry,
 | 
			
		||||
	&cmd_set_option_entry,
 | 
			
		||||
	&cmd_set_window_option_entry,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								server.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								server.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: server.c,v 1.89 2009-01-07 22:57:03 nicm Exp $ */
 | 
			
		||||
/* $Id: server.c,v 1.90 2009-01-10 01:30:38 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -118,6 +118,8 @@ server_start(const char *path)
 | 
			
		||||
	setproctitle("server (%s)", path);
 | 
			
		||||
#endif
 | 
			
		||||
	log_debug("server started, pid %ld", (long) getpid());
 | 
			
		||||
	start_time = time(NULL);
 | 
			
		||||
	socket_path = path;
 | 
			
		||||
 | 
			
		||||
	memset(&sa, 0, sizeof sa);
 | 
			
		||||
	sa.sun_family = AF_UNIX;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								tmux.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								tmux.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: tmux.c,v 1.86 2009-01-09 23:57:42 nicm Exp $ */
 | 
			
		||||
/* $Id: tmux.c,v 1.87 2009-01-10 01:30:38 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -53,6 +53,7 @@ struct options	 global_window_options;
 | 
			
		||||
int		 debug_level;
 | 
			
		||||
int		 be_quiet;
 | 
			
		||||
time_t		 start_time;
 | 
			
		||||
const char	*socket_path;
 | 
			
		||||
 | 
			
		||||
void		 sighandler(int);
 | 
			
		||||
__dead void	 usage(void);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: tmux.h,v 1.212 2009-01-09 23:57:42 nicm Exp $ */
 | 
			
		||||
/* $Id: tmux.h,v 1.213 2009-01-10 01:30:38 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -296,9 +296,8 @@ enum tty_code_code {
 | 
			
		||||
	TTYC_SMKX,	/* keypad_xmit, ks */
 | 
			
		||||
	TTYC_SMSO,	/* enter_standout_mode, so */
 | 
			
		||||
	TTYC_SMUL,	/* enter_underline_mode, us */
 | 
			
		||||
 | 
			
		||||
	NTTYCODE
 | 
			
		||||
};
 | 
			
		||||
#define NTTYCODE (TTYC_SMUL + 1)
 | 
			
		||||
 | 
			
		||||
/* Termcap types. */
 | 
			
		||||
enum tty_code_type {
 | 
			
		||||
@@ -317,7 +316,14 @@ struct tty_code {
 | 
			
		||||
		int	 	flag;
 | 
			
		||||
	} value;
 | 
			
		||||
};
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
/* Entry in terminal code table. */
 | 
			
		||||
struct tty_term_code_entry {
 | 
			
		||||
	enum tty_code_code	code;
 | 
			
		||||
	enum tty_code_type	type;
 | 
			
		||||
	const char	       *name;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Output commands. */
 | 
			
		||||
enum tty_cmd {
 | 
			
		||||
	TTY_BELL,
 | 
			
		||||
@@ -678,6 +684,7 @@ struct tty_term {
 | 
			
		||||
 | 
			
		||||
	SLIST_ENTRY(tty_term) entry;
 | 
			
		||||
};
 | 
			
		||||
SLIST_HEAD(tty_terms, tty_term);
 | 
			
		||||
 | 
			
		||||
struct tty {
 | 
			
		||||
	char		*path;
 | 
			
		||||
@@ -925,6 +932,7 @@ extern char	*cfg_file;
 | 
			
		||||
extern int	 debug_level;
 | 
			
		||||
extern int	 be_quiet;
 | 
			
		||||
extern time_t	 start_time;
 | 
			
		||||
extern const char *socket_path;
 | 
			
		||||
void		 logfile(const char *);
 | 
			
		||||
void		 siginit(void);
 | 
			
		||||
void		 sigreset(void);
 | 
			
		||||
@@ -960,7 +968,9 @@ void		 tty_vwrite(
 | 
			
		||||
    		      struct tty *, struct screen *s, enum tty_cmd, va_list);
 | 
			
		||||
 | 
			
		||||
/* tty-term.c */
 | 
			
		||||
struct tty_term *tty_term_find(char *, int,char **);
 | 
			
		||||
extern struct tty_terms tty_terms;
 | 
			
		||||
extern struct tty_term_code_entry tty_term_codes[NTTYCODE];
 | 
			
		||||
struct tty_term *tty_term_find(char *, int, char **);
 | 
			
		||||
void 		 tty_term_free(struct tty_term *);
 | 
			
		||||
int		 tty_term_has(struct tty_term *, enum tty_code_code);
 | 
			
		||||
const char	*tty_term_string(struct tty_term *, enum tty_code_code);
 | 
			
		||||
@@ -1061,6 +1071,7 @@ extern const struct cmd_entry cmd_scroll_mode_entry;
 | 
			
		||||
extern const struct cmd_entry cmd_select_window_entry;
 | 
			
		||||
extern const struct cmd_entry cmd_send_keys_entry;
 | 
			
		||||
extern const struct cmd_entry cmd_send_prefix_entry;
 | 
			
		||||
extern const struct cmd_entry cmd_server_info_entry;
 | 
			
		||||
extern const struct cmd_entry cmd_select_prompt_entry;
 | 
			
		||||
extern const struct cmd_entry cmd_set_buffer_entry;
 | 
			
		||||
extern const struct cmd_entry cmd_set_option_entry;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								tty-term.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								tty-term.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: tty-term.c,v 1.1 2009-01-09 23:57:42 nicm Exp $ */
 | 
			
		||||
/* $Id: tty-term.c,v 1.2 2009-01-10 01:30:38 nicm Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -27,15 +27,9 @@
 | 
			
		||||
void	 tty_term_quirks(struct tty_term *);
 | 
			
		||||
char	*tty_term_strip(const char *);
 | 
			
		||||
 | 
			
		||||
SLIST_HEAD(, tty_term) tty_terms = SLIST_HEAD_INITIALIZER(tty_terms);
 | 
			
		||||
struct tty_terms tty_terms = SLIST_HEAD_INITIALIZER(tty_terms);
 | 
			
		||||
 | 
			
		||||
struct tty_term_code_entry {
 | 
			
		||||
	enum tty_code_code	code;
 | 
			
		||||
	enum tty_code_type	type;
 | 
			
		||||
	const char	       *name;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct tty_term_code_entry tty_term_codes[] = {
 | 
			
		||||
struct tty_term_code_entry tty_term_codes[NTTYCODE] = {
 | 
			
		||||
	{ TTYC_AX, TTYCODE_FLAG, "AX" },
 | 
			
		||||
	{ TTYC_ACSC, TTYCODE_STRING, "acsc" },
 | 
			
		||||
	{ TTYC_BEL, TTYCODE_STRING, "bel" },
 | 
			
		||||
@@ -57,6 +51,7 @@ struct tty_term_code_entry tty_term_codes[] = {
 | 
			
		||||
	{ TTYC_CUU, TTYCODE_STRING, "cuu" },
 | 
			
		||||
	{ TTYC_CUU1, TTYCODE_STRING, "cuu1" },
 | 
			
		||||
	{ TTYC_DCH, TTYCODE_STRING, "dch" },
 | 
			
		||||
	{ TTYC_DCH1, TTYCODE_STRING, "dch1" },
 | 
			
		||||
	{ TTYC_DIM, TTYCODE_STRING, "dim" },
 | 
			
		||||
	{ TTYC_DL, TTYCODE_STRING, "dl" },
 | 
			
		||||
	{ TTYC_DL1, TTYCODE_STRING, "dl1" },
 | 
			
		||||
@@ -150,6 +145,14 @@ tty_term_quirks(struct tty_term *term)
 | 
			
		||||
			term->codes[TTYC_DCH1].value.string = xstrdup("\033[P");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (strncmp(term->name, "xterm", 5) == 0) {
 | 
			
		||||
		/* xterm supports ich1 but some termcaps omit it. */
 | 
			
		||||
		if (!tty_term_has(term, TTYC_ICH1)) {
 | 
			
		||||
			term->codes[TTYC_ICH1].type = TTYCODE_STRING;
 | 
			
		||||
			term->codes[TTYC_ICH1].value.string = xstrdup("\033[@");
 | 
			
		||||
		}
 | 
			
		||||
	}			
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct tty_term *
 | 
			
		||||
@@ -173,6 +176,7 @@ tty_term_find(char *name, int fd, char **cause)
 | 
			
		||||
	term = xmalloc(sizeof *term);
 | 
			
		||||
	term->name = xstrdup(name);
 | 
			
		||||
	term->references = 1;
 | 
			
		||||
	term->flags = 0;
 | 
			
		||||
	SLIST_INSERT_HEAD(&tty_terms, term, entry);
 | 
			
		||||
 | 
			
		||||
	/* Set up ncurses terminal. */
 | 
			
		||||
@@ -196,7 +200,7 @@ tty_term_find(char *name, int fd, char **cause)
 | 
			
		||||
 | 
			
		||||
	/* Fill in codes. */
 | 
			
		||||
	memset(&term->codes, 0, sizeof term->codes);
 | 
			
		||||
	for (i = 0; i < nitems(tty_term_codes); i++) {
 | 
			
		||||
	for (i = 0; i < NTTYCODE; i++) {
 | 
			
		||||
		ent = &tty_term_codes[i];
 | 
			
		||||
		
 | 
			
		||||
		code = &term->codes[ent->code];
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user