diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-12-03 17:44:02 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-12-03 17:44:02 +0000 |
commit | 6c9862662fd2cccdc55be9d447a27b10f33ed8ea (patch) | |
tree | dc4e67793ad8556b91448ab61599bdb5e78c3e41 /cmd-show-options.c | |
parent | 6bbc92a6f5799f0c3d9ce4fc8c10c161598757be (diff) | |
download | rtmux-6c9862662fd2cccdc55be9d447a27b10f33ed8ea.tar.gz rtmux-6c9862662fd2cccdc55be9d447a27b10f33ed8ea.tar.bz2 rtmux-6c9862662fd2cccdc55be9d447a27b10f33ed8ea.zip |
Eliminate duplicate code and ease the passage for server-wide options by adding
a -w flag to set-option and show-options and making setw and showw aliases to
set -w and show -w.
Note: setw and showw are still there, but now aliases for set -w and show -w.
Diffstat (limited to 'cmd-show-options.c')
-rw-r--r-- | cmd-show-options.c | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/cmd-show-options.c b/cmd-show-options.c index 9e7fd7db..3374c64e 100644 --- a/cmd-show-options.c +++ b/cmd-show-options.c @@ -31,8 +31,8 @@ int cmd_show_options_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_show_options_entry = { "show-options", "show", - "[-g] " CMD_TARGET_SESSION_USAGE, - 0, "g", + "[-gw] [-t target-session|target-window]", + 0, "gw", cmd_target_init, cmd_target_parse, cmd_show_options_exec, @@ -43,25 +43,41 @@ const struct cmd_entry cmd_show_options_entry = { int cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx) { - struct cmd_target_data *data = self->data; + struct cmd_target_data *data = self->data; + const struct set_option_entry *table; struct session *s; + struct winlink *wl; struct options *oo; struct options_entry *o; const struct set_option_entry *entry; const char *optval; - if (cmd_check_flag(data->chflags, 'g')) - oo = &global_s_options; - else { - if ((s = cmd_find_session(ctx, data->target)) == NULL) - return (-1); - oo = &s->options; + if (cmd_check_flag(data->chflags, 'w')) { + table = set_window_option_table; + if (cmd_check_flag(data->chflags, 'g')) + oo = &global_w_options; + else { + wl = cmd_find_window(ctx, data->target, NULL); + if (wl == NULL) + return (-1); + oo = &wl->window->options; + } + } else { + table = set_session_option_table; + if (cmd_check_flag(data->chflags, 'g')) + oo = &global_s_options; + else { + s = cmd_find_session(ctx, data->target); + if (s == NULL) + return (-1); + oo = &s->options; + } } - for (entry = set_option_table; entry->name != NULL; entry++) { + for (entry = table; entry->name != NULL; entry++) { if ((o = options_find1(oo, entry->name)) == NULL) continue; - optval = set_option_print(entry, o); + optval = cmd_set_option_print(entry, o); ctx->print(ctx, "%s %s", entry->name, optval); } |