mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Introduce nitems() and use it; use bsearch.
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: client-msg.c,v 1.14 2007-12-06 09:46:21 nicm Exp $ */
 | 
					/* $Id: client-msg.c,v 1.15 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -43,7 +43,6 @@ struct client_msg client_msg_table[] = {
 | 
				
			|||||||
	{ MSG_EXIT, client_msg_fn_exit },
 | 
						{ MSG_EXIT, client_msg_fn_exit },
 | 
				
			||||||
	{ MSG_EXITED, client_msg_fn_exited }
 | 
						{ MSG_EXITED, client_msg_fn_exited }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#define NCLIENTMSG (sizeof client_msg_table / sizeof client_msg_table[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
client_msg_dispatch(struct client_ctx *cctx, char **error)
 | 
					client_msg_dispatch(struct client_ctx *cctx, char **error)
 | 
				
			||||||
@@ -59,7 +58,7 @@ client_msg_dispatch(struct client_ctx *cctx, char **error)
 | 
				
			|||||||
		return (1);
 | 
							return (1);
 | 
				
			||||||
	buffer_remove(cctx->srv_in, sizeof hdr);
 | 
						buffer_remove(cctx->srv_in, sizeof hdr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < NCLIENTMSG; i++) {
 | 
						for (i = 0; i < nitems(client_msg_table); i++) {
 | 
				
			||||||
		msg = client_msg_table + i;
 | 
							msg = client_msg_table + i;
 | 
				
			||||||
		if (msg->type == hdr.type) {
 | 
							if (msg->type == hdr.type) {
 | 
				
			||||||
			if (msg->fn(&hdr, cctx, error) != 0)
 | 
								if (msg->fn(&hdr, cctx, error) != 0)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: input-keys.c,v 1.15 2008-12-22 17:26:51 nicm Exp $ */
 | 
					/* $Id: input-keys.c,v 1.16 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -94,7 +94,6 @@ struct {
 | 
				
			|||||||
	{ KEYC_KP4_0,  "\033Op", 0 },
 | 
						{ KEYC_KP4_0,  "\033Op", 0 },
 | 
				
			||||||
	{ KEYC_KP4_2,  "\033On", 0 },
 | 
						{ KEYC_KP4_2,  "\033On", 0 },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#define NINPUTKEYS (sizeof input_keys / sizeof input_keys[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Translate a key code from client into an output key sequence. */
 | 
					/* Translate a key code from client into an output key sequence. */
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
@@ -114,7 +113,7 @@ input_key(struct window *w, int key)
 | 
				
			|||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < NINPUTKEYS; i++) {
 | 
						for (i = 0; i < nitems(input_keys); i++) {
 | 
				
			||||||
		if ((input_keys[i].flags & INPUTKEY_KEYPAD) &&
 | 
							if ((input_keys[i].flags & INPUTKEY_KEYPAD) &&
 | 
				
			||||||
		    !(w->screen->mode & MODE_KKEYPAD))
 | 
							    !(w->screen->mode & MODE_KKEYPAD))
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
@@ -124,7 +123,7 @@ input_key(struct window *w, int key)
 | 
				
			|||||||
		if (input_keys[i].key == key)
 | 
							if (input_keys[i].key == key)
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (i == NINPUTKEYS) {
 | 
						if (i == nitems(input_keys)) {
 | 
				
			||||||
		log_debug2("key 0x%x missing", key);
 | 
							log_debug2("key 0x%x missing", key);
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										88
									
								
								input.c
									
									
									
									
									
								
							
							
						
						
									
										88
									
								
								input.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: input.c,v 1.69 2008-12-08 16:19:51 nicm Exp $ */
 | 
					/* $Id: input.c,v 1.70 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -82,6 +82,43 @@ void	 input_handle_sequence_decstbm(struct input_ctx *);
 | 
				
			|||||||
void	 input_handle_sequence_sgr(struct input_ctx *);
 | 
					void	 input_handle_sequence_sgr(struct input_ctx *);
 | 
				
			||||||
void	 input_handle_sequence_dsr(struct input_ctx *);
 | 
					void	 input_handle_sequence_dsr(struct input_ctx *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int	 input_sequence_cmp(const void *, const void *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct input_sequence_entry {
 | 
				
			||||||
 | 
						u_char	ch;
 | 
				
			||||||
 | 
						void	(*fn)(struct input_ctx *);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					const struct input_sequence_entry input_sequence_table[] = {
 | 
				
			||||||
 | 
						{ '@', input_handle_sequence_ich },
 | 
				
			||||||
 | 
						{ 'A', input_handle_sequence_cuu },
 | 
				
			||||||
 | 
						{ 'B', input_handle_sequence_cud },
 | 
				
			||||||
 | 
						{ 'C', input_handle_sequence_cuf },
 | 
				
			||||||
 | 
						{ 'D', input_handle_sequence_cub },
 | 
				
			||||||
 | 
						{ 'G', input_handle_sequence_hpa },
 | 
				
			||||||
 | 
						{ 'H', input_handle_sequence_cup },
 | 
				
			||||||
 | 
						{ 'J', input_handle_sequence_ed },
 | 
				
			||||||
 | 
						{ 'K', input_handle_sequence_el },
 | 
				
			||||||
 | 
						{ 'L', input_handle_sequence_il },
 | 
				
			||||||
 | 
						{ 'M', input_handle_sequence_dl },
 | 
				
			||||||
 | 
						{ 'P', input_handle_sequence_dch },
 | 
				
			||||||
 | 
						{ 'd', input_handle_sequence_vpa },
 | 
				
			||||||
 | 
						{ 'f', input_handle_sequence_cup },
 | 
				
			||||||
 | 
						{ 'h', input_handle_sequence_sm },
 | 
				
			||||||
 | 
						{ 'l', input_handle_sequence_rm },
 | 
				
			||||||
 | 
						{ 'm', input_handle_sequence_sgr },
 | 
				
			||||||
 | 
						{ 'n', input_handle_sequence_dsr },
 | 
				
			||||||
 | 
						{ 'r', input_handle_sequence_decstbm },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int
 | 
				
			||||||
 | 
					input_sequence_cmp(const void *a, const void *b)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int	ai = ((const struct input_sequence_entry *) a)->ch;
 | 
				
			||||||
 | 
						int	bi = ((const struct input_sequence_entry *) b)->ch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return (ai - bi);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
input_new_argument(struct input_ctx *ictx)
 | 
					input_new_argument(struct input_ctx *ictx)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -572,7 +609,6 @@ input_handle_c0_control(u_char ch, struct input_ctx *ictx)
 | 
				
			|||||||
		screen_write_cursorleft(&ictx->ctx, 1);
 | 
							screen_write_cursorleft(&ictx->ctx, 1);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case '\011': 	/* TAB */
 | 
						case '\011': 	/* TAB */
 | 
				
			||||||
		/* XXX right? */
 | 
					 | 
				
			||||||
		s->cx = ((s->cx / 8) * 8) + 8;
 | 
							s->cx = ((s->cx / 8) * 8) + 8;
 | 
				
			||||||
		if (s->cx > screen_size_x(s) - 1) {
 | 
							if (s->cx > screen_size_x(s) - 1) {
 | 
				
			||||||
			s->cx = 0;
 | 
								s->cx = 0;
 | 
				
			||||||
@@ -702,33 +738,10 @@ input_handle_standard_two(u_char ch, struct input_ctx *ictx)
 | 
				
			|||||||
void
 | 
					void
 | 
				
			||||||
input_handle_sequence(u_char ch, struct input_ctx *ictx)
 | 
					input_handle_sequence(u_char ch, struct input_ctx *ictx)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static const struct {
 | 
						struct input_sequence_entry	*entry, find;
 | 
				
			||||||
		u_char	ch;
 | 
						struct screen	 		*s = ictx->ctx.s;
 | 
				
			||||||
		void	(*fn)(struct input_ctx *);
 | 
						u_int			         i;
 | 
				
			||||||
	} table[] = {
 | 
						struct input_arg 		*iarg;
 | 
				
			||||||
		{ '@', input_handle_sequence_ich },
 | 
					 | 
				
			||||||
		{ 'A', input_handle_sequence_cuu },
 | 
					 | 
				
			||||||
		{ 'B', input_handle_sequence_cud },
 | 
					 | 
				
			||||||
		{ 'C', input_handle_sequence_cuf },
 | 
					 | 
				
			||||||
		{ 'D', input_handle_sequence_cub },
 | 
					 | 
				
			||||||
		{ 'G', input_handle_sequence_hpa },
 | 
					 | 
				
			||||||
		{ 'H', input_handle_sequence_cup },
 | 
					 | 
				
			||||||
		{ 'J', input_handle_sequence_ed },
 | 
					 | 
				
			||||||
		{ 'K', input_handle_sequence_el },
 | 
					 | 
				
			||||||
		{ 'L', input_handle_sequence_il },
 | 
					 | 
				
			||||||
		{ 'M', input_handle_sequence_dl },
 | 
					 | 
				
			||||||
		{ 'P', input_handle_sequence_dch },
 | 
					 | 
				
			||||||
		{ 'd', input_handle_sequence_vpa },
 | 
					 | 
				
			||||||
		{ 'f', input_handle_sequence_cup },
 | 
					 | 
				
			||||||
		{ 'h', input_handle_sequence_sm },
 | 
					 | 
				
			||||||
		{ 'l', input_handle_sequence_rm },
 | 
					 | 
				
			||||||
		{ 'm', input_handle_sequence_sgr },
 | 
					 | 
				
			||||||
		{ 'n', input_handle_sequence_dsr },
 | 
					 | 
				
			||||||
		{ 'r', input_handle_sequence_decstbm },
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	struct screen	 *s = ictx->ctx.s;
 | 
					 | 
				
			||||||
	u_int		  i;
 | 
					 | 
				
			||||||
	struct input_arg *iarg;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	log_debug2("-- sq %zu: %hhu (%c): %u [sx=%u, sy=%u, cx=%u, cy=%u, "
 | 
						log_debug2("-- sq %zu: %hhu (%c): %u [sx=%u, sy=%u, cx=%u, cy=%u, "
 | 
				
			||||||
	    "ru=%u, rl=%u]", ictx->off, ch, ch, ARRAY_LENGTH(&ictx->args),
 | 
						    "ru=%u, rl=%u]", ictx->off, ch, ch, ARRAY_LENGTH(&ictx->args),
 | 
				
			||||||
@@ -740,15 +753,14 @@ input_handle_sequence(u_char ch, struct input_ctx *ictx)
 | 
				
			|||||||
			log_debug2("      ++ %u: %s", i, iarg->data);
 | 
								log_debug2("      ++ %u: %s", i, iarg->data);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	/* XXX bsearch? */
 | 
						find.ch = ch;
 | 
				
			||||||
	for (i = 0; i < (sizeof table / sizeof table[0]); i++) {
 | 
						entry = bsearch(&find, 
 | 
				
			||||||
		if (table[i].ch == ch) {
 | 
						    input_sequence_table, nitems(input_sequence_table),
 | 
				
			||||||
			table[i].fn(ictx);
 | 
						    sizeof input_sequence_table[0], input_sequence_cmp);
 | 
				
			||||||
			return;
 | 
						if (entry != NULL)
 | 
				
			||||||
		}
 | 
							entry->fn(ictx);
 | 
				
			||||||
	}
 | 
						else
 | 
				
			||||||
 | 
							log_debug("unknown sq: %c (%hhu %hhu)", ch, ch, ictx->private);
 | 
				
			||||||
	log_debug("unknown sq: %c (%hhu %hhu)", ch, ch, ictx->private);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: key-bindings.c,v 1.40 2009-01-06 14:47:56 nicm Exp $ */
 | 
					/* $Id: key-bindings.c,v 1.41 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -111,7 +111,7 @@ key_bindings_init(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	SPLAY_INIT(&key_bindings);
 | 
						SPLAY_INIT(&key_bindings);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < (sizeof table / sizeof table[0]); i++) {
 | 
						for (i = 0; i < nitems(table); i++) {
 | 
				
			||||||
		cmd = xmalloc(sizeof *cmd);
 | 
							cmd = xmalloc(sizeof *cmd);
 | 
				
			||||||
		cmd->entry = table[i].entry;
 | 
							cmd->entry = table[i].entry;
 | 
				
			||||||
		cmd->data = NULL;
 | 
							cmd->data = NULL;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: key-string.c,v 1.8 2008-12-16 08:25:48 nicm Exp $ */
 | 
					/* $Id: key-string.c,v 1.9 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -193,7 +193,6 @@ struct {
 | 
				
			|||||||
	{ "KP0",	KEYC_KP4_0 },
 | 
						{ "KP0",	KEYC_KP4_0 },
 | 
				
			||||||
	{ "KP.",	KEYC_KP4_2 },
 | 
						{ "KP.",	KEYC_KP4_2 },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#define NKEYSTRINGS (sizeof key_string_table / sizeof key_string_table[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
key_string_lookup_string(const char *string)
 | 
					key_string_lookup_string(const char *string)
 | 
				
			||||||
@@ -236,7 +235,7 @@ key_string_lookup_string(const char *string)
 | 
				
			|||||||
		return (KEYC_ADDESCAPE(key));
 | 
							return (KEYC_ADDESCAPE(key));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < NKEYSTRINGS; i++) {
 | 
						for (i = 0; i < nitems(key_string_table); i++) {
 | 
				
			||||||
		if (strcasecmp(string, key_string_table[i].string) == 0)
 | 
							if (strcasecmp(string, key_string_table[i].string) == 0)
 | 
				
			||||||
			return (key_string_table[i].key);
 | 
								return (key_string_table[i].key);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -274,7 +273,7 @@ key_string_lookup_key(int key)
 | 
				
			|||||||
		return (tmp);
 | 
							return (tmp);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < NKEYSTRINGS; i++) {
 | 
						for (i = 0; i < nitems(key_string_table); i++) {
 | 
				
			||||||
		if (key == key_string_table[i].key)
 | 
							if (key == key_string_table[i].key)
 | 
				
			||||||
			return (key_string_table[i].string);
 | 
								return (key_string_table[i].string);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: mode-key.c,v 1.3 2008-07-03 15:26:32 nicm Exp $ */
 | 
					/* $Id: mode-key.c,v 1.4 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -48,7 +48,6 @@ const struct mode_key_entry mode_key_table_vi[] = {
 | 
				
			|||||||
	{ MODEKEY_UP, 'k' },
 | 
						{ MODEKEY_UP, 'k' },
 | 
				
			||||||
	{ MODEKEY_UP, KEYC_UP },
 | 
						{ MODEKEY_UP, KEYC_UP },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#define NKEYVI (sizeof mode_key_table_vi / sizeof mode_key_table_vi[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct mode_key_entry mode_key_table_emacs[] = {
 | 
					const struct mode_key_entry mode_key_table_emacs[] = {
 | 
				
			||||||
	{ MODEKEY_BOL, '\001' },
 | 
						{ MODEKEY_BOL, '\001' },
 | 
				
			||||||
@@ -70,7 +69,6 @@ const struct mode_key_entry mode_key_table_emacs[] = {
 | 
				
			|||||||
	{ MODEKEY_STARTSEL, '\000' },
 | 
						{ MODEKEY_STARTSEL, '\000' },
 | 
				
			||||||
	{ MODEKEY_UP, KEYC_UP },
 | 
						{ MODEKEY_UP, KEYC_UP },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#define NKEYEMACS (sizeof mode_key_table_emacs / sizeof mode_key_table_emacs[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum mode_key
 | 
					enum mode_key
 | 
				
			||||||
mode_key_lookup(int table, int key)
 | 
					mode_key_lookup(int table, int key)
 | 
				
			||||||
@@ -80,10 +78,10 @@ mode_key_lookup(int table, int key)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (table == MODEKEY_EMACS) {
 | 
						if (table == MODEKEY_EMACS) {
 | 
				
			||||||
		ptr = mode_key_table_emacs;
 | 
							ptr = mode_key_table_emacs;
 | 
				
			||||||
		n = NKEYEMACS;
 | 
							n = nitems(mode_key_table_emacs);
 | 
				
			||||||
	} else if (table == MODEKEY_VI) {
 | 
						} else if (table == MODEKEY_VI) {
 | 
				
			||||||
		ptr = mode_key_table_vi;
 | 
							ptr = mode_key_table_vi;
 | 
				
			||||||
		n = NKEYVI;
 | 
							n = nitems(mode_key_table_vi);
 | 
				
			||||||
	} else
 | 
						} else
 | 
				
			||||||
		return (MODEKEY_NONE);
 | 
							return (MODEKEY_NONE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: server-msg.c,v 1.52 2008-09-26 06:45:27 nicm Exp $ */
 | 
					/* $Id: server-msg.c,v 1.53 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -48,7 +48,6 @@ const struct server_msg server_msg_table[] = {
 | 
				
			|||||||
	{ MSG_RESIZE, server_msg_fn_resize },
 | 
						{ MSG_RESIZE, server_msg_fn_resize },
 | 
				
			||||||
	{ MSG_EXITING, server_msg_fn_exiting }
 | 
						{ MSG_EXITING, server_msg_fn_exiting }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#define NSERVERMSG (sizeof server_msg_table / sizeof server_msg_table[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
server_msg_dispatch(struct client *c)
 | 
					server_msg_dispatch(struct client *c)
 | 
				
			||||||
@@ -66,7 +65,7 @@ server_msg_dispatch(struct client *c)
 | 
				
			|||||||
			return (0);
 | 
								return (0);
 | 
				
			||||||
		buffer_remove(c->in, sizeof hdr);
 | 
							buffer_remove(c->in, sizeof hdr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for (i = 0; i < NSERVERMSG; i++) {
 | 
							for (i = 0; i < nitems(server_msg_table); i++) {
 | 
				
			||||||
			msg = server_msg_table + i;
 | 
								msg = server_msg_table + i;
 | 
				
			||||||
			if (msg->type == hdr.type) {
 | 
								if (msg->type == hdr.type) {
 | 
				
			||||||
				if ((n = msg->fn(&hdr, c)) != 0)
 | 
									if ((n = msg->fn(&hdr, c)) != 0)
 | 
				
			||||||
@@ -74,7 +73,7 @@ server_msg_dispatch(struct client *c)
 | 
				
			|||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (i == NSERVERMSG)
 | 
							if (i == nitems(server_msg_table))
 | 
				
			||||||
			fatalx("unexpected message");
 | 
								fatalx("unexpected message");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: tmux.h,v 1.208 2009-01-07 19:53:17 nicm Exp $ */
 | 
					/* $Id: tmux.h,v 1.209 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -135,6 +135,9 @@ extern const char    *__progname;
 | 
				
			|||||||
#define printflike3 __attribute__ ((format (printf, 3, 4)))
 | 
					#define printflike3 __attribute__ ((format (printf, 3, 4)))
 | 
				
			||||||
#define printflike4 __attribute__ ((format (printf, 4, 5)))
 | 
					#define printflike4 __attribute__ ((format (printf, 4, 5)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Number of items in array. */
 | 
				
			||||||
 | 
					#define nitems(_a)  (sizeof((_a)) / sizeof((_a)[0]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Buffer macros. */
 | 
					/* Buffer macros. */
 | 
				
			||||||
#define BUFFER_USED(b) ((b)->size)
 | 
					#define BUFFER_USED(b) ((b)->size)
 | 
				
			||||||
#define BUFFER_FREE(b) ((b)->space - (b)->off - (b)->size)
 | 
					#define BUFFER_FREE(b) ((b)->space - (b)->off - (b)->size)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: tty-keys.c,v 1.11 2008-09-26 06:45:28 nicm Exp $ */
 | 
					/* $Id: tty-keys.c,v 1.12 2009-01-07 22:52:33 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -205,7 +205,6 @@ struct {
 | 
				
			|||||||
	{ "-\033Op", KEYC_KP4_0 },
 | 
						{ "-\033Op", KEYC_KP4_0 },
 | 
				
			||||||
	{ "-\033On", KEYC_KP4_2 },
 | 
						{ "-\033On", KEYC_KP4_2 },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#define NTTYKEYS (sizeof tty_keys / sizeof tty_keys[0])
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
RB_GENERATE(tty_keys, tty_key, entry, tty_keys_cmp);
 | 
					RB_GENERATE(tty_keys, tty_key, entry, tty_keys_cmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -227,7 +226,7 @@ tty_keys_init(struct tty *tty)
 | 
				
			|||||||
	RB_INIT(&tty->ktree);
 | 
						RB_INIT(&tty->ktree);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tty->ksize = 0;
 | 
						tty->ksize = 0;
 | 
				
			||||||
	for (i = 0; i < NTTYKEYS; i++) {
 | 
						for (i = 0; i < nitems(tty_keys); i++) {
 | 
				
			||||||
		if (*tty_keys[i].name == '-')
 | 
							if (*tty_keys[i].name == '-')
 | 
				
			||||||
			s = tty_keys[i].name + 1;
 | 
								s = tty_keys[i].name + 1;
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user