diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-07-15 07:50:35 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-07-15 07:50:35 +0000 |
commit | 09676ba8977874e315d4c5ab5a4c5f8196ec18c9 (patch) | |
tree | 501751948d3bf828d35f315f42a8c671cf1b6f31 /usr.bin/tmux/cmd-set-option.c | |
parent | e47798ef1a4d1aebea081c092c05b80e986559f8 (diff) |
Having to update NSETOPTION/NSETWINDOWOPTION when adding new options is a bit
annoying and it is only use for iterating, so use a sentinel to mark the end of
each array instead. Different fix for a problem pointed out by Kalle Olavi
Niemitalo.
Diffstat (limited to 'usr.bin/tmux/cmd-set-option.c')
-rw-r--r-- | usr.bin/tmux/cmd-set-option.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/usr.bin/tmux/cmd-set-option.c b/usr.bin/tmux/cmd-set-option.c index 3a1a60a892f..a97e671add9 100644 --- a/usr.bin/tmux/cmd-set-option.c +++ b/usr.bin/tmux/cmd-set-option.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-set-option.c,v 1.5 2009/07/13 23:11:35 nicm Exp $ */ +/* $OpenBSD: cmd-set-option.c,v 1.6 2009/07/15 07:50:34 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -48,7 +48,7 @@ const char *set_option_status_keys_list[] = { const char *set_option_bell_action_list[] = { "none", "any", "current", NULL }; -const struct set_option_entry set_option_table[NSETOPTION] = { +const struct set_option_entry set_option_table[] = { { "bell-action", SET_OPTION_CHOICE, 0, 0, set_option_bell_action_list }, { "buffer-limit", SET_OPTION_NUMBER, 1, INT_MAX, NULL }, { "default-command", SET_OPTION_STRING, 0, 0, NULL }, @@ -75,6 +75,7 @@ const struct set_option_entry set_option_table[NSETOPTION] = { { "status-right", SET_OPTION_STRING, 0, 0, NULL }, { "status-right-length", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL }, { "status-utf8", SET_OPTION_FLAG, 0, 0, NULL }, + { NULL, 0, 0, 0, NULL } }; int @@ -84,7 +85,7 @@ cmd_set_option_exec(struct cmd *self, struct cmd_ctx *ctx) struct session *s; struct client *c; struct options *oo; - const struct set_option_entry *entry; + const struct set_option_entry *entry, *opt; u_int i; if (data->chflags & CMD_CHFLAG('g')) @@ -101,15 +102,14 @@ cmd_set_option_exec(struct cmd *self, struct cmd_ctx *ctx) } entry = NULL; - for (i = 0; i < NSETOPTION; i++) { - if (strncmp(set_option_table[i].name, - data->option, strlen(data->option)) != 0) + for (opt = set_option_table; opt->name != NULL; opt++) { + if (strncmp(opt->name, data->option, strlen(data->option)) != 0) continue; if (entry != NULL) { ctx->error(ctx, "ambiguous option: %s", data->option); return (-1); } - entry = &set_option_table[i]; + entry = opt; /* Bail now if an exact match. */ if (strcmp(entry->name, data->option) == 0) |