diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-07-13 23:11:35 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-07-13 23:11:35 +0000 |
commit | 5f108d9df6bada119def52518152a487f8695702 (patch) | |
tree | 2ae6420cfdea4f68ce031e9a1ed62c2756c2c588 | |
parent | 5d91555c7c8d88577892e0a2e2bde2cde60a2882 (diff) | |
download | rtmux-5f108d9df6bada119def52518152a487f8695702.tar.gz rtmux-5f108d9df6bada119def52518152a487f8695702.tar.bz2 rtmux-5f108d9df6bada119def52518152a487f8695702.zip |
Having fixed flags for single-character getopt options is a bit hard to
maintain and is only going to get worse as more are used. So instead, add a new
uint64_t member to cmd_entry which is a bitmask of upper and lowercase options
accepted by the command.
This means new single character options can be used without the need to add it
explicitly to the list.
73 files changed, 191 insertions, 229 deletions
diff --git a/cmd-attach-session.c b/cmd-attach-session.c index 1f0bb517..196d5d13 100644 --- a/cmd-attach-session.c +++ b/cmd-attach-session.c @@ -29,7 +29,7 @@ int cmd_attach_session_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_attach_session_entry = { "attach-session", "attach", "[-d] " CMD_TARGET_SESSION_USAGE, - CMD_DFLAG|CMD_CANTNEST|CMD_STARTSERVER, + CMD_CANTNEST|CMD_STARTSERVER, CMD_CHFLAG('d'), cmd_target_init, cmd_target_parse, cmd_attach_session_exec, @@ -67,7 +67,7 @@ cmd_attach_session_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); } - if (data->flags & CMD_DFLAG) + if (data->chflags & CMD_CHFLAG('d')) server_write_session(s, MSG_DETACH, NULL, 0); ctx->cmdclient->session = s; diff --git a/cmd-bind-key.c b/cmd-bind-key.c index f0988899..14a93831 100644 --- a/cmd-bind-key.c +++ b/cmd-bind-key.c @@ -40,7 +40,7 @@ struct cmd_bind_key_data { const struct cmd_entry cmd_bind_key_entry = { "bind-key", "bind", "[-r] key command [arguments]", - 0, + 0, 0, NULL, cmd_bind_key_parse, cmd_bind_key_exec, diff --git a/cmd-break-pane.c b/cmd-break-pane.c index f2b51edf..74e052d5 100644 --- a/cmd-break-pane.c +++ b/cmd-break-pane.c @@ -31,7 +31,7 @@ int cmd_break_pane_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_break_pane_entry = { "break-pane", "breakp", CMD_PANE_WINDOW_USAGE " [-d]", - CMD_DFLAG, + 0, CMD_CHFLAG('d'), cmd_pane_init, cmd_pane_parse, cmd_break_pane_exec, @@ -82,7 +82,7 @@ cmd_break_pane_exec(struct cmd *self, struct cmd_ctx *ctx) w->name = default_window_name(w); wl = session_attach(s, w, -1, &cause); /* can't fail */ - if (!(data->flags & CMD_DFLAG)) + if (!(data->chflags & CMD_CHFLAG('d'))) session_select(s, wl->idx); layout_refresh(w, 0); diff --git a/cmd-choose-session.c b/cmd-choose-session.c index d1f6ba23..22f7d04b 100644 --- a/cmd-choose-session.c +++ b/cmd-choose-session.c @@ -31,7 +31,7 @@ void cmd_choose_session_callback(void *, int); const struct cmd_entry cmd_choose_session_entry = { "choose-session", NULL, CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_choose_session_exec, diff --git a/cmd-choose-window.c b/cmd-choose-window.c index 64eab882..baa55eb2 100644 --- a/cmd-choose-window.c +++ b/cmd-choose-window.c @@ -31,7 +31,7 @@ void cmd_choose_window_callback(void *, int); const struct cmd_entry cmd_choose_window_entry = { "choose-window", NULL, CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_choose_window_exec, diff --git a/cmd-clear-history.c b/cmd-clear-history.c index 4399c6c2..de24ac57 100644 --- a/cmd-clear-history.c +++ b/cmd-clear-history.c @@ -29,7 +29,7 @@ int cmd_clear_history_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_clear_history_entry = { "clear-history", "clearhist", CMD_PANE_WINDOW_USAGE, - 0, + 0, 0, cmd_pane_init, cmd_pane_parse, cmd_clear_history_exec, diff --git a/cmd-clock-mode.c b/cmd-clock-mode.c index 7f3f0d07..4399b7ba 100644 --- a/cmd-clock-mode.c +++ b/cmd-clock-mode.c @@ -29,7 +29,7 @@ int cmd_clock_mode_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_clock_mode_entry = { "clock-mode", NULL, CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_clock_mode_exec, diff --git a/cmd-command-prompt.c b/cmd-command-prompt.c index cf914648..841dfd78 100644 --- a/cmd-command-prompt.c +++ b/cmd-command-prompt.c @@ -35,7 +35,7 @@ int cmd_command_prompt_callback(void *, const char *); const struct cmd_entry cmd_command_prompt_entry = { "command-prompt", NULL, CMD_TARGET_CLIENT_USAGE " [template]", - CMD_ARG01, + CMD_ARG01, 0, cmd_command_prompt_init, cmd_target_parse, cmd_command_prompt_exec, diff --git a/cmd-confirm-before.c b/cmd-confirm-before.c index f544d810..0819e3e9 100644 --- a/cmd-confirm-before.c +++ b/cmd-confirm-before.c @@ -38,7 +38,7 @@ struct cmd_confirm_before_data { const struct cmd_entry cmd_confirm_before_entry = { "confirm-before", "confirm", CMD_TARGET_CLIENT_USAGE " command", - CMD_ARG1, + CMD_ARG1, 0, cmd_confirm_before_init, cmd_target_parse, cmd_confirm_before_exec, diff --git a/cmd-copy-buffer.c b/cmd-copy-buffer.c index ab6fe14b..544cf1c6 100644 --- a/cmd-copy-buffer.c +++ b/cmd-copy-buffer.c @@ -42,7 +42,7 @@ struct cmd_copy_buffer_data { const struct cmd_entry cmd_copy_buffer_entry = { "copy-buffer", "copyb", "[-a src-index] [-b dst-index] [-s src-session] [-t dst-session]", - 0, + 0, 0, cmd_copy_buffer_init, cmd_copy_buffer_parse, cmd_copy_buffer_exec, diff --git a/cmd-copy-mode.c b/cmd-copy-mode.c index 0600d116..e9891179 100644 --- a/cmd-copy-mode.c +++ b/cmd-copy-mode.c @@ -29,7 +29,7 @@ int cmd_copy_mode_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_copy_mode_entry = { "copy-mode", NULL, "[-u] " CMD_TARGET_WINDOW_USAGE, - CMD_UFLAG, + 0, CMD_CHFLAG('u'), cmd_target_init, cmd_target_parse, cmd_copy_mode_exec, @@ -51,7 +51,7 @@ cmd_copy_mode_exec(struct cmd *self, struct cmd_ctx *ctx) wp = wl->window->active; window_pane_set_mode(wp, &window_copy_mode); - if (wp->mode == &window_copy_mode && data->flags & CMD_UFLAG) + if (wp->mode == &window_copy_mode && data->chflags & CMD_CHFLAG('u')) window_copy_pageup(wp); return (0); diff --git a/cmd-delete-buffer.c b/cmd-delete-buffer.c index 7351cf2c..81b69417 100644 --- a/cmd-delete-buffer.c +++ b/cmd-delete-buffer.c @@ -31,7 +31,7 @@ int cmd_delete_buffer_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_delete_buffer_entry = { "delete-buffer", "deleteb", CMD_BUFFER_SESSION_USAGE, - 0, + 0, 0, cmd_buffer_init, cmd_buffer_parse, cmd_delete_buffer_exec, diff --git a/cmd-detach-client.c b/cmd-detach-client.c index b900d84a..0a28cdc7 100644 --- a/cmd-detach-client.c +++ b/cmd-detach-client.c @@ -29,7 +29,7 @@ int cmd_detach_client_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_detach_client_entry = { "detach-client", "detach", CMD_TARGET_CLIENT_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_detach_client_exec, diff --git a/cmd-down-pane.c b/cmd-down-pane.c index ddfe412a..9b1dfe1e 100644 --- a/cmd-down-pane.c +++ b/cmd-down-pane.c @@ -29,7 +29,7 @@ int cmd_down_pane_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_down_pane_entry = { "down-pane", "downp", CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_down_pane_exec, diff --git a/cmd-find-window.c b/cmd-find-window.c index 9458fa8b..21461cdc 100644 --- a/cmd-find-window.c +++ b/cmd-find-window.c @@ -34,7 +34,7 @@ void cmd_find_window_callback(void *, int); const struct cmd_entry cmd_find_window_entry = { "find-window", "findw", CMD_TARGET_WINDOW_USAGE " match-string", - CMD_ARG1, + CMD_ARG1, 0, cmd_target_init, cmd_target_parse, cmd_find_window_exec, diff --git a/cmd-generic.c b/cmd-generic.c index 1b2e17a9..ea0d4d16 100644 --- a/cmd-generic.c +++ b/cmd-generic.c @@ -23,12 +23,9 @@ #include "tmux.h" -#define CMD_FLAGS "adDgkruU" -#define CMD_FLAGMASK (CMD_AFLAG|CMD_DFLAG|CMD_BIGDFLAG|CMD_GFLAG|CMD_KFLAG| \ - CMD_RFLAG|CMD_UFLAG|CMD_BIGUFLAG) - -int cmd_do_flags(int, int, int *); -size_t cmd_print_flags(char *, size_t, size_t, int); +int cmd_getopt(int, char **, const char *, uint64_t); +int cmd_flags(int, uint64_t, uint64_t *); +size_t cmd_print_flags(char *, size_t, size_t, uint64_t); int cmd_fill_argument(int, char **, int, char **); size_t @@ -39,86 +36,70 @@ cmd_prarg(char *buf, size_t len, const char *prefix, char *arg) return (xsnprintf(buf, len, "%s%s", prefix, arg)); } +/* Prepend flags from chflags onto flagstr and call getopt. */ int -cmd_do_flags(int opt, int iflags, int *oflags) +cmd_getopt(int argc, char **argv, const char *flagstr, uint64_t chflags) { - switch (opt) { - case 'a': - if (iflags & CMD_AFLAG) { - (*oflags) |= CMD_AFLAG; - return (0); - } - return (-1); - case 'd': - if (iflags & CMD_DFLAG) { - (*oflags) |= CMD_DFLAG; - return (0); - } - return (-1); - case 'D': - if (iflags & CMD_BIGDFLAG) { - (*oflags) |= CMD_BIGDFLAG; - return (0); - } - return (-1); - case 'g': - if (iflags & CMD_GFLAG) { - (*oflags) |= CMD_GFLAG; - return (0); - } - return (-1); - case 'k': - if (iflags & CMD_KFLAG) { - (*oflags) |= CMD_KFLAG; - return (0); - } - return (-1); - case 'r': - if (iflags & CMD_RFLAG) { - (*oflags) |= CMD_RFLAG; - return (0); - } - return (-1); - case 'u': - if (iflags & CMD_UFLAG) { - (*oflags) |= CMD_UFLAG; + u_char ch; + char buf[128]; + size_t len, off; + + *buf = '\0'; + + len = sizeof buf; + off = 0; + + for (ch = 0; ch < 26; ch++) { + if (chflags & CMD_CHFLAG('a' + ch)) + off += xsnprintf(buf + off, len - off, "%c", 'a' + ch); + if (chflags & CMD_CHFLAG('A' + ch)) + off += xsnprintf(buf + off, len - off, "%c", 'A' + ch); + } + + strlcat(buf, flagstr, sizeof buf); + + return (getopt(argc, argv, buf)); +} + +/* + * If this option is expected (in ichflags), set it in ochflags, otherwise + * return -1. + */ +int +cmd_flags(int opt, uint64_t ichflags, uint64_t *ochflags) +{ + u_char ch; + + for (ch = 0; ch < 26; ch++) { + if (opt == 'a' + ch && ichflags & CMD_CHFLAG(opt)) { + (*ochflags) |= CMD_CHFLAG(opt); return (0); } - return (-1); - case 'U': - if (iflags & CMD_BIGUFLAG) { - (*oflags) |= CMD_BIGUFLAG; + if (opt == 'A' + ch && ichflags & CMD_CHFLAG(opt)) { + (*ochflags) |= CMD_CHFLAG(opt); return (0); } - return (-1); } - return (1); + return (-1); } +/* Print the flags supported in chflags. */ size_t -cmd_print_flags(char *buf, size_t len, size_t off, int flags) +cmd_print_flags(char *buf, size_t len, size_t off, uint64_t chflags) { + u_char ch; size_t boff = off; - if ((flags & CMD_FLAGMASK) == 0) + if (chflags == 0) return (0); off += xsnprintf(buf + off, len - off, " -"); - if (off < len && flags & CMD_AFLAG) - off += xsnprintf(buf + off, len - off, "a"); - if (off < len && flags & CMD_BIGDFLAG) - off += xsnprintf(buf + off, len - off, "D"); - if (off < len && flags & CMD_DFLAG) - off += xsnprintf(buf + off, len - off, "d"); - if (off < len && flags & CMD_GFLAG) - off += xsnprintf(buf + off, len - off, "g"); - if (off < len && flags & CMD_KFLAG) - off += xsnprintf(buf + off, len - off, "k"); - if (off < len && flags & CMD_RFLAG) - off += xsnprintf(buf + off, len - off, "r"); - if (off < len && flags & CMD_UFLAG) - off += xsnprintf(buf + off, len - off, "u"); - if (off < len && flags & CMD_BIGUFLAG) - off += xsnprintf(buf + off, len - off, "U"); + + for (ch = 0; ch < 26; ch++) { + if (chflags & CMD_CHFLAG('a' + ch)) + off += xsnprintf(buf + off, len - off, "%c", 'a' + ch); + if (chflags & CMD_CHFLAG('A' + ch)) + off += xsnprintf(buf + off, len - off, "%c", 'A' + ch); + } return (off - boff); } @@ -153,7 +134,7 @@ cmd_target_init(struct cmd *self, unused int key) struct cmd_target_data *data; self->data = data = xmalloc(sizeof *data); - data->flags = 0; + data->chflags = 0; data->target = NULL; data->arg = NULL; } @@ -162,19 +143,16 @@ int cmd_target_parse(struct cmd *self, int argc, char **argv, char **cause) { struct cmd_target_data *data; + const struct cmd_entry *entry = self->entry; int opt; /* Don't use the entry version since it may be dependent on key. */ cmd_target_init(self, 0); data = self->data; - while ((opt = getopt(argc, argv, CMD_FLAGS "t:")) != -1) { - switch (cmd_do_flags(opt, self->entry->flags, &data->flags)) { - case -1: - goto usage; - case 0: + while ((opt = cmd_getopt(argc, argv, "t:", entry->chflags)) != -1) { + if (cmd_flags(opt, entry->chflags, &data->chflags) == 0) continue; - } switch (opt) { case 't': if (data->target == NULL) @@ -240,7 +218,7 @@ cmd_target_print(struct cmd *self, char *buf, size_t len) off += xsnprintf(buf, len, "%s", self->entry->name); if (data == NULL) return (off); - off += cmd_print_flags(buf, len, off, data->flags); + off += cmd_print_flags(buf, len, off, data->chflags); if (off < len && data->target != NULL) off += cmd_prarg(buf + off, len - off, " -t ", data->target); if (off < len && data->arg != NULL) @@ -254,7 +232,7 @@ cmd_srcdst_init(struct cmd *self, unused int key) struct cmd_srcdst_data *data; self->data = data = xmalloc(sizeof *data); - data->flags = 0; + data->chflags = 0; data->src = NULL; data->dst = NULL; data->arg = NULL; @@ -264,18 +242,15 @@ int cmd_srcdst_parse(struct cmd *self, int argc, char **argv, char **cause) { struct cmd_srcdst_data *data; + const struct cmd_entry *entry = self->entry; int opt; cmd_srcdst_init(self, 0); data = self->data; - while ((opt = getopt(argc, argv, CMD_FLAGS "s:t:")) != -1) { - switch (cmd_do_flags(opt, self->entry->flags, &data->flags)) { - case -1: - goto usage; - case 0: + while ((opt = cmd_getopt(argc, argv, "s:t:", entry->chflags)) != -1) { + if (cmd_flags(opt, entry->chflags, &data->chflags) == 0) continue; - } switch (opt) { case 's': if (data->src == NULL) @@ -349,7 +324,7 @@ cmd_srcdst_print(struct cmd *self, char *buf, size_t len) off += xsnprintf(buf, len, "%s", self->entry->name); if (data == NULL) return (off); - off += cmd_print_flags(buf, len, off, data->flags); + off += cmd_print_flags(buf, len, off, data->chflags); if (off < len && data->src != NULL) off += xsnprintf(buf + off, len - off, " -s %s", data->src); if (off < len && data->dst != NULL) @@ -365,7 +340,7 @@ cmd_buffer_init(struct cmd *self, unused int key) struct cmd_buffer_data *data; self->data = data = xmalloc(sizeof *data); - data->flags = 0; + data->chflags = 0; data->target = NULL; data->buffer = -1; data->arg = NULL; @@ -375,19 +350,16 @@ int cmd_buffer_parse(struct cmd *self, int argc, char **argv, char **cause) { struct cmd_buffer_data *data; + const struct cmd_entry *entry = self->entry; int opt, n; const char *errstr; cmd_buffer_init(self, 0); data = self->data; - while ((opt = getopt(argc, argv, CMD_FLAGS "b:t:")) != -1) { - switch (cmd_do_flags(opt, self->entry->flags, &data->flags)) { - case -1: - goto usage; - case 0: + while ((opt = cmd_getopt(argc, argv, "b:t:", entry->chflags)) != -1) { + if (cmd_flags(opt, entry->chflags, &data->chflags) == 0) continue; - } switch (opt) { case 'b': if (data->buffer == -1) { @@ -464,7 +436,7 @@ cmd_buffer_print(struct cmd *self, char *buf, size_t len) off += xsnprintf(buf, len, "%s", self->entry->name); if (data == NULL) return (off); - off += cmd_print_flags(buf, len, off, data->flags); + off += cmd_print_flags(buf, len, off, data->chflags); if (off < len && data->buffer != -1) off += xsnprintf(buf + off, len - off, " -b %d", data->buffer); if (off < len && data->target != NULL) @@ -480,7 +452,7 @@ cmd_option_init(struct cmd *self, unused int key) struct cmd_option_data *data; self->data = data = xmalloc(sizeof *data); - data->flags = 0; + data->chflags = 0; data->target = NULL; data->option = NULL; data->value = NULL; @@ -490,19 +462,16 @@ int cmd_option_parse(struct cmd *self, int argc, char **argv, char **cause) { struct cmd_option_data *data; + const struct cmd_entry *entry = self->entry; int opt; /* Don't use the entry version since it may be dependent on key. */ cmd_option_init(self, 0); data = self->data; - while ((opt = getopt(argc, argv, CMD_FLAGS "t:")) != -1) { - switch (cmd_do_flags(opt, self->entry->flags, &data->flags)) { - case -1: - goto usage; - case 0: + while ((opt = cmd_getopt(argc, argv, "t:", entry->chflags)) != -1) { + if (cmd_flags(opt, entry->chflags, &data->chflags) == 0) continue; - } switch (opt) { case 't': if (data->target == NULL) @@ -577,7 +546,7 @@ cmd_option_print(struct cmd *self, char *buf, size_t len) off += xsnprintf(buf, len, "%s", self->entry->name); if (data == NULL) return (off); - off += cmd_print_flags(buf, len, off, data->flags); + off += cmd_print_flags(buf, len, off, data->chflags); if (off < len && data->target != NULL) off += cmd_prarg(buf + off, len - off, " -t ", data->target); if (off < len && data->option != NULL) @@ -593,7 +562,7 @@ cmd_pane_init(struct cmd *self, unused int key) struct cmd_pane_data *data; self->data = data = xmalloc(sizeof *data); - data->flags = 0; + data->chflags = 0; data->target = NULL; data->arg = NULL; data->pane = -1; @@ -603,6 +572,7 @@ int cmd_pane_parse(struct cmd *self, int argc, char **argv, char **cause) { struct cmd_pane_data *data; + const struct cmd_entry *entry = self->entry; int opt, n; const char *errstr; @@ -610,13 +580,9 @@ cmd_pane_parse(struct cmd *self, int argc, char **argv, char **cause) cmd_pane_init(self, 0); data = self->data; - while ((opt = getopt(argc, argv, CMD_FLAGS "p:t:")) != -1) { - switch (cmd_do_flags(opt, self->entry->flags, &data->flags)) { - case -1: - goto usage; - case 0: + while ((opt = cmd_getopt(argc, argv, "p:t:", entry->chflags)) != -1) { + if (cmd_flags(opt, entry->chflags, &data->chflags) == 0) continue; - } switch (opt) { case 'p': if (data->pane == -1) { @@ -693,7 +659,7 @@ cmd_pane_print(struct cmd *self, char *buf, size_t len) off += xsnprintf(buf, len, "%s", self->entry->name); if (data == NULL) return (off); - off += cmd_print_flags(buf, len, off, data->flags); + off += cmd_print_flags(buf, len, off, data->chflags); if (off < len && data->target != NULL) off += cmd_prarg(buf + off, len - off, " -t ", data->target); if (off < len && data->arg != NULL) diff --git a/cmd-has-session.c b/cmd-has-session.c index c0620e58..9999946b 100644 --- a/cmd-has-session.c +++ b/cmd-has-session.c @@ -29,7 +29,7 @@ int cmd_has_session_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_has_session_entry = { "has-session", "has", CMD_TARGET_SESSION_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_has_session_exec, diff --git a/cmd-if-shell.c b/cmd-if-shell.c index 4f348a7e..e73e8d5d 100644 --- a/cmd-if-shell.c +++ b/cmd-if-shell.c @@ -44,7 +44,7 @@ struct cmd_if_shell_data { const struct cmd_entry cmd_if_shell_entry = { "if-shell", "if", "shell-command command", - 0, + 0, 0, cmd_if_shell_init, cmd_if_shell_parse, cmd_if_shell_exec, diff --git a/cmd-kill-pane.c b/cmd-kill-pane.c index b0e1dc7e..d3a54c92 100644 --- a/cmd-kill-pane.c +++ b/cmd-kill-pane.c @@ -31,7 +31,7 @@ int cmd_kill_pane_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_kill_pane_entry = { "kill-pane", "killp", CMD_PANE_WINDOW_USAGE, - 0, + 0, 0, cmd_pane_init, cmd_pane_parse, cmd_kill_pane_exec, diff --git a/cmd-kill-server.c b/cmd-kill-server.c index b2627a0a..0002a655 100644 --- a/cmd-kill-server.c +++ b/cmd-kill-server.c @@ -32,7 +32,7 @@ int cmd_kill_server_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_kill_server_entry = { "kill-server", NULL, "", - 0, + 0, 0, NULL, NULL, cmd_kill_server_exec, diff --git a/cmd-kill-session.c b/cmd-kill-session.c index 0ef9e4f1..83eabca1 100644 --- a/cmd-kill-session.c +++ b/cmd-kill-session.c @@ -32,7 +32,7 @@ int cmd_kill_session_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_kill_session_entry = { "kill-session", NULL, CMD_TARGET_SESSION_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_kill_session_exec, diff --git a/cmd-kill-window.c b/cmd-kill-window.c index 155968d0..ca9ee1fa 100644 --- a/cmd-kill-window.c +++ b/cmd-kill-window.c @@ -29,7 +29,7 @@ int cmd_kill_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_kill_window_entry = { "kill-window", "killw", CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_kill_window_exec, diff --git a/cmd-last-window.c b/cmd-last-window.c index 48c7fe0e..5ea2ad7e 100644 --- a/cmd-last-window.c +++ b/cmd-last-window.c @@ -29,7 +29,7 @@ int cmd_last_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_last_window_entry = { "last-window", "last", CMD_TARGET_SESSION_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_last_window_exec, diff --git a/cmd-link-window.c b/cmd-link-window.c index 4e1ada81..e4e05f11 100644 --- a/cmd-link-window.c +++ b/cmd-link-window.c @@ -31,7 +31,7 @@ int cmd_link_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_link_window_entry = { "link-window", "linkw", "[-dk] " CMD_SRCDST_WINDOW_USAGE, - CMD_DFLAG|CMD_KFLAG, + 0, CMD_CHFLAG('d')|CMD_CHFLAG('k'), cmd_srcdst_init, cmd_srcdst_parse, cmd_link_window_exec, @@ -62,7 +62,7 @@ cmd_link_window_exec(struct cmd *self, struct cmd_ctx *ctx) if (wl_dst->window == wl_src->window) return (0); - if (data->flags & CMD_KFLAG) { + if (data->chflags & CMD_CHFLAG('k')) { /* * Can't use session_detach as it will destroy session * if this makes it empty. @@ -73,7 +73,7 @@ cmd_link_window_exec(struct cmd *self, struct cmd_ctx *ctx) /* Force select/redraw if current. */ if (wl_dst == dst->curw) { - data->flags &= ~CMD_DFLAG; + data->chflags &= ~CMD_CHFLAG('d'); dst->curw = NULL; } } @@ -86,7 +86,7 @@ cmd_link_window_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); } - if (data->flags & CMD_DFLAG) + if (data->chflags & CMD_CHFLAG('d')) server_status_session(dst); else { session_select(dst, wl_dst->idx); diff --git a/cmd-list-buffers.c b/cmd-list-buffers.c index 4edc38c3..6a57a723 100644 --- a/cmd-list-buffers.c +++ b/cmd-list-buffers.c @@ -31,7 +31,7 @@ int cmd_list_buffers_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_list_buffers_entry = { "list-buffers", "lsb", CMD_TARGET_SESSION_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_list_buffers_exec, diff --git a/cmd-list-clients.c b/cmd-list-clients.c index 343afc20..bec90530 100644 --- a/cmd-list-clients.c +++ b/cmd-list-clients.c @@ -32,7 +32,7 @@ int cmd_list_clients_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_list_clients_entry = { "list-clients", "lsc", "", - 0, + 0, 0, NULL, NULL, cmd_list_clients_exec, diff --git a/cmd-list-commands.c b/cmd-list-commands.c index 59938ae2..9701a1bc 100644 --- a/cmd-list-commands.c +++ b/cmd-list-commands.c @@ -29,7 +29,7 @@ int cmd_list_commands_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_list_commands_entry = { "list-commands", "lscm", "", - 0, + 0, 0, NULL, NULL, cmd_list_commands_exec, diff --git a/cmd-list-keys.c b/cmd-list-keys.c index 1b22b4ab..17612449 100644 --- a/cmd-list-keys.c +++ b/cmd-list-keys.c @@ -29,7 +29,7 @@ int cmd_list_keys_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_list_keys_entry = { "list-keys", "lsk", "", - 0, + 0, 0, NULL, NULL, cmd_list_keys_exec, diff --git a/cmd-list-sessions.c b/cmd-list-sessions.c index 01f86524..3dac0107 100644 --- a/cmd-list-sessions.c +++ b/cmd-list-sessions.c @@ -31,7 +31,7 @@ int cmd_list_sessions_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_list_sessions_entry = { "list-sessions", "ls", "", - 0, + 0, 0, NULL, NULL, cmd_list_sessions_exec, diff --git a/cmd-list-windows.c b/cmd-list-windows.c index c9c3ad8c..8b2162a5 100644 --- a/cmd-list-windows.c +++ b/cmd-list-windows.c @@ -31,7 +31,7 @@ int cmd_list_windows_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_list_windows_entry = { "list-windows", "lsw", CMD_TARGET_SESSION_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_list_windows_exec, diff --git a/cmd-load-buffer.c b/cmd-load-buffer.c index 11d2d548..f2f2c08c 100644 --- a/cmd-load-buffer.c +++ b/cmd-load-buffer.c @@ -35,7 +35,7 @@ int cmd_load_buffer_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_load_buffer_entry = { "load-buffer", "loadb", CMD_BUFFER_SESSION_USAGE " path", - CMD_ARG1, + CMD_ARG1, 0, cmd_buffer_init, cmd_buffer_parse, cmd_load_buffer_exec, diff --git a/cmd-lock-server.c b/cmd-lock-server.c index 74b7b622..5e0356e1 100644 --- a/cmd-lock-server.c +++ b/cmd-lock-server.c @@ -33,7 +33,7 @@ int cmd_lock_server_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_lock_server_entry = { "lock-server", "lock", "", - 0, + 0, 0, NULL, NULL, cmd_lock_server_exec, diff --git a/cmd-move-window.c b/cmd-move-window.c index c9117c4b..2a967cdf 100644 --- a/cmd-move-window.c +++ b/cmd-move-window.c @@ -31,7 +31,7 @@ int cmd_move_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_move_window_entry = { "move-window", "movew", "[-dk] " CMD_SRCDST_WINDOW_USAGE, - CMD_DFLAG|CMD_KFLAG, + 0, CMD_CHFLAG('d')|CMD_CHFLAG('k'), cmd_srcdst_init, cmd_srcdst_parse, cmd_move_window_exec, @@ -64,7 +64,7 @@ cmd_move_window_exec(struct cmd *self, struct cmd_ctx *ctx) if (wl_dst->window == wl_src->window) return (0); - if (data->flags & CMD_KFLAG) { + if (data->chflags & CMD_CHFLAG('k')) { /* * Can't use session_detach as it will destroy session * if this makes it empty. @@ -75,7 +75,7 @@ cmd_move_window_exec(struct cmd *self, struct cmd_ctx *ctx) /* Force select/redraw if current. */ if (wl_dst == dst->curw) { - data->flags &= ~CMD_DFLAG; + data->chflags &= ~CMD_CHFLAG('d'); dst->curw = NULL; } } @@ -100,7 +100,7 @@ cmd_move_window_exec(struct cmd *self, struct cmd_ctx *ctx) server_redraw_client(c); } - if (data->flags & CMD_DFLAG) + if (data->chflags & CMD_CHFLAG('d')) server_status_session(dst); else { session_select(dst, wl_dst->idx); diff --git a/cmd-new-session.c b/cmd-new-session.c index 95fc08b2..cf086a87 100644 --- a/cmd-new-session.c +++ b/cmd-new-session.c @@ -42,7 +42,7 @@ struct cmd_new_session_data { const struct cmd_entry cmd_new_session_entry = { "new-session", "new", "[-d] [-n window-name] [-s session-name] [command]", - CMD_STARTSERVER|CMD_CANTNEST, + CMD_STARTSERVER|CMD_CANTNEST, 0, cmd_new_session_init, cmd_new_session_parse, cmd_new_session_exec, diff --git a/cmd-new-window.c b/cmd-new-window.c index ee8cd8b7..e54bfc7d 100644 --- a/cmd-new-window.c +++ b/cmd-new-window.c @@ -45,7 +45,7 @@ struct cmd_new_window_data { const struct cmd_entry cmd_new_window_entry = { "new-window", "neww", "[-dk] [-n window-name] [-t target-window] [command]", - 0, + 0, 0, cmd_new_window_init, cmd_new_window_parse, cmd_new_window_exec, diff --git a/cmd-next-layout.c b/cmd-next-layout.c index 85fd8d35..b89dda3d 100644 --- a/cmd-next-layout.c +++ b/cmd-next-layout.c @@ -29,7 +29,7 @@ int cmd_next_layout_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_next_layout_entry = { "next-layout", "nextl", CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_next_layout_exec, diff --git a/cmd-next-window.c b/cmd-next-window.c index d49fe4cb..f0f8d18e 100644 --- a/cmd-next-window.c +++ b/cmd-next-window.c @@ -30,7 +30,7 @@ int cmd_next_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_next_window_entry = { "next-window", "next", "[-a] " CMD_TARGET_SESSION_USAGE, - CMD_AFLAG, + 0, CMD_CHFLAG('a'), cmd_next_window_init, cmd_target_parse, cmd_next_window_exec, @@ -49,7 +49,7 @@ cmd_next_window_init(struct cmd *self, int key) data = self->data; if (key == KEYC_ADDESC('n')) - data->flags |= CMD_AFLAG; + data->chflags |= CMD_CHFLAG('a'); } int @@ -63,7 +63,7 @@ cmd_next_window_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); activity = 0; - if (data->flags & CMD_AFLAG) + if (data->chflags & CMD_CHFLAG('a')) activity = 1; if (session_next(s, activity) == 0) diff --git a/cmd-paste-buffer.c b/cmd-paste-buffer.c index c586e0fc..76a92eaf 100644 --- a/cmd-paste-buffer.c +++ b/cmd-paste-buffer.c @@ -32,7 +32,7 @@ void cmd_paste_buffer_lf2cr(struct buffer *, const char *, size_t); const struct cmd_entry cmd_paste_buffer_entry = { "paste-buffer", "pasteb", "[-dr] " CMD_BUFFER_WINDOW_USAGE, - CMD_DFLAG|CMD_RFLAG, + 0, CMD_CHFLAG('d')|CMD_CHFLAG('r'), cmd_buffer_init, cmd_buffer_parse, cmd_paste_buffer_exec, @@ -66,7 +66,7 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) if (pb != NULL && *pb->data != '\0') { /* -r means raw data without LF->CR conversion. */ - if (data->flags & CMD_RFLAG) { + if (data->chflags & CMD_CHFLAG('r')) { buffer_write( w->active->out, pb->data, strlen(pb->data)); } else { @@ -76,7 +76,7 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) } /* Delete the buffer if -d. */ - if (data->flags & CMD_DFLAG) { + if (data->chflags & CMD_CHFLAG('d')) { if (data->buffer == -1) paste_free_top(&s->buffers); else diff --git a/cmd-previous-layout.c b/cmd-previous-layout.c index 5b662ede..f4270f14 100644 --- a/cmd-previous-layout.c +++ b/cmd-previous-layout.c @@ -29,7 +29,7 @@ int cmd_previous_layout_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_previous_layout_entry = { "previous-layout", "prevl", CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_previous_layout_exec, diff --git a/cmd-previous-window.c b/cmd-previous-window.c index 6163cec1..2c5088b2 100644 --- a/cmd-previous-window.c +++ b/cmd-previous-window.c @@ -30,7 +30,7 @@ int cmd_previous_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_previous_window_entry = { "previous-window", "prev", "[-a] " CMD_TARGET_SESSION_USAGE, - CMD_AFLAG, + 0, CMD_CHFLAG('a'), cmd_previous_window_init, cmd_target_parse, cmd_previous_window_exec, @@ -49,7 +49,7 @@ cmd_previous_window_init(struct cmd *self, int key) data = self->data; if (key == KEYC_ADDESC('p')) - data->flags |= CMD_AFLAG; + data->chflags |= CMD_CHFLAG('a'); } int @@ -63,7 +63,7 @@ cmd_previous_window_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); activity = 0; - if (data->flags & CMD_AFLAG) + if (data->chflags & CMD_CHFLAG('a')) activity = 1; if (session_previous(s, activity) == 0) diff --git a/cmd-refresh-client.c b/cmd-refresh-client.c index 9193a953..9ff0ae8d 100644 --- a/cmd-refresh-client.c +++ b/cmd-refresh-client.c @@ -29,7 +29,7 @@ int cmd_refresh_client_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_refresh_client_entry = { "refresh-client", "refresh", CMD_TARGET_CLIENT_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_refresh_client_exec, diff --git a/cmd-rename-session.c b/cmd-rename-session.c index 305795fd..7e5e81e6 100644 --- a/cmd-rename-session.c +++ b/cmd-rename-session.c @@ -31,7 +31,7 @@ int cmd_rename_session_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_rename_session_entry = { "rename-session", "rename", CMD_TARGET_SESSION_USAGE " new-name", - CMD_ARG1, + CMD_ARG1, 0, cmd_target_init, cmd_target_parse, cmd_rename_session_exec, diff --git a/cmd-rename-window.c b/cmd-rename-window.c index 985a7b58..9d314eb5 100644 --- a/cmd-rename-window.c +++ b/cmd-rename-window.c @@ -31,7 +31,7 @@ int cmd_rename_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_rename_window_entry = { "rename-window", "renamew", CMD_TARGET_WINDOW_USAGE " new-name", - CMD_ARG1, + CMD_ARG1, 0, cmd_target_init, cmd_target_parse, cmd_rename_window_exec, diff --git a/cmd-resize-pane.c b/cmd-resize-pane.c index 2f1c3ad7..64ac95b2 100644 --- a/cmd-resize-pane.c +++ b/cmd-resize-pane.c @@ -32,7 +32,7 @@ int cmd_resize_pane_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_resize_pane_entry = { "resize-pane", "resizep", CMD_PANE_WINDOW_USAGE "[-DU] [adjustment]", - CMD_ARG01|CMD_BIGUFLAG|CMD_BIGDFLAG, + CMD_ARG01, CMD_CHFLAG('D')|CMD_CHFLAG('U'), cmd_resize_pane_init, cmd_pane_parse, cmd_resize_pane_exec, @@ -51,12 +51,12 @@ cmd_resize_pane_init(struct cmd *self, int key) data = self->data; if (key == KEYC_ADDCTL(KEYC_DOWN)) - data->flags |= CMD_BIGDFLAG; + data->chflags |= CMD_CHFLAG('D'); if (key == KEYC_ADDESC(KEYC_UP)) data->arg = xstrdup("5"); if (key == KEYC_ADDESC(KEYC_DOWN)) { - data->flags |= CMD_BIGDFLAG; + data->chflags |= CMD_CHFLAG('D'); data->arg = xstrdup("5"); } } @@ -92,7 +92,7 @@ cmd_resize_pane_exec(struct cmd *self, struct cmd_ctx *ctx) } } - if (!(data->flags & CMD_BIGDFLAG)) + if (!(data->chflags & CMD_CHFLAG('D'))) adjust = -adjust; if (layout_resize(wp, adjust) != 0) { ctx->error(ctx, "layout %s " diff --git a/cmd-respawn-window.c b/cmd-respawn-window.c index 7c5b2fd5..5d70aa63 100644 --- a/cmd-respawn-window.c +++ b/cmd-respawn-window.c @@ -31,7 +31,7 @@ int cmd_respawn_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_respawn_window_entry = { "respawn-window", "respawnw", "[-k] " CMD_TARGET_WINDOW_USAGE " [command]", - CMD_ARG01|CMD_KFLAG, + CMD_ARG01, CMD_CHFLAG('k'), cmd_target_init, cmd_target_parse, cmd_respawn_window_exec, @@ -56,7 +56,7 @@ cmd_respawn_window_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); w = wl->window; - if (!(data->flags & CMD_KFLAG)) { + if (!(data->chflags & CMD_CHFLAG('k'))) { TAILQ_FOREACH(wp, &w->panes, entry) { if (wp->fd == -1) continue; diff --git a/cmd-rotate-window.c b/cmd-rotate-window.c index 52b752e9..3f40603a 100644 --- a/cmd-rotate-window.c +++ b/cmd-rotate-window.c @@ -30,7 +30,7 @@ int cmd_rotate_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_rotate_window_entry = { "rotate-window", "rotatew", "[-DU] " CMD_TARGET_WINDOW_USAGE, - CMD_BIGUFLAG|CMD_BIGDFLAG, + 0, CMD_CHFLAG('D')|CMD_CHFLAG('U'), cmd_rotate_window_init, cmd_target_parse, cmd_rotate_window_exec, @@ -49,7 +49,7 @@ cmd_rotate_window_init(struct cmd *self, int key) data = self->data; if (key == KEYC_ADDESC('o')) - data->flags |= CMD_BIGDFLAG; + data->chflags |= CMD_CHFLAG('D'); } int @@ -66,7 +66,7 @@ cmd_rotate_window_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); w = wl->window; - if (data->flags & CMD_BIGDFLAG) { + if (data->chflags & CMD_CHFLAG('D')) { wp = TAILQ_LAST(&w->panes, window_panes); TAILQ_REMOVE(&w->panes, wp, entry); TAILQ_INSERT_HEAD(&w->panes, wp, entry); diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c index 7c5af7a4..1eef28c4 100644 --- a/cmd-save-buffer.c +++ b/cmd-save-buffer.c @@ -33,7 +33,7 @@ int cmd_save_buffer_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_save_buffer_entry = { "save-buffer", "saveb", "[-a] " CMD_BUFFER_SESSION_USAGE " path", - CMD_AFLAG|CMD_ARG1, + CMD_ARG1, CMD_CHFLAG('a'), cmd_buffer_init, cmd_buffer_parse, cmd_save_buffer_exec, @@ -68,7 +68,7 @@ cmd_save_buffer_exec(struct cmd *self, struct cmd_ctx *ctx) } mask = umask(S_IRWXG | S_IRWXO); - if (data->flags & CMD_AFLAG) + if (data->chflags & CMD_CHFLAG('a')) f = fopen(data->arg, "ab"); else f = fopen(data->arg, "wb"); diff --git a/cmd-scroll-mode.c b/cmd-scroll-mode.c index f376d703..898e3a60 100644 --- a/cmd-scroll-mode.c +++ b/cmd-scroll-mode.c @@ -30,7 +30,7 @@ int cmd_scroll_mode_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_scroll_mode_entry = { "scroll-mode", NULL, "[-u] " CMD_TARGET_WINDOW_USAGE, - CMD_UFLAG, + 0, CMD_CHFLAG('u'), cmd_scroll_mode_init, cmd_target_parse, cmd_scroll_mode_exec, @@ -50,7 +50,7 @@ cmd_scroll_mode_init(struct cmd *self, int key) switch (key) { case KEYC_PPAGE: - data->flags |= CMD_UFLAG; + data->chflags |= CMD_CHFLAG('u'); break; } } @@ -67,7 +67,7 @@ cmd_scroll_mode_exec(struct cmd *self, struct cmd_ctx *ctx) wp = wl->window->active; window_pane_set_mode(wp, &window_scroll_mode); - if (wp->mode == &window_scroll_mode && data->flags & CMD_UFLAG) + if (wp->mode == &window_scroll_mode && data->chflags & CMD_CHFLAG('u')) window_scroll_pageup(wp); return (0); diff --git a/cmd-select-layout.c b/cmd-select-layout.c index ef921660..01d7ef6e 100644 --- a/cmd-select-layout.c +++ b/cmd-select-layout.c @@ -30,7 +30,7 @@ int cmd_select_layout_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_select_layout_entry = { "select-layout", "selectl", CMD_TARGET_WINDOW_USAGE " layout-name", - CMD_ARG1, + CMD_ARG1, 0, cmd_select_layout_init, cmd_target_parse, cmd_select_layout_exec, diff --git a/cmd-select-pane.c b/cmd-select-pane.c index 33c94a33..ab3f0b3f 100644 --- a/cmd-select-pane.c +++ b/cmd-select-pane.c @@ -29,7 +29,7 @@ int cmd_select_pane_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_select_pane_entry = { "select-pane", "selectp", CMD_PANE_WINDOW_USAGE, - 0, + 0, 0, cmd_pane_init, cmd_pane_parse, cmd_select_pane_exec, diff --git a/cmd-select-prompt.c b/cmd-select-prompt.c index 81da9dbb..5221fa1e 100644 --- a/cmd-select-prompt.c +++ b/cmd-select-prompt.c @@ -33,7 +33,7 @@ int cmd_select_prompt_callback(void *, const char *); const struct cmd_entry cmd_select_prompt_entry = { "select-prompt", NULL, CMD_TARGET_CLIENT_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_select_prompt_exec, diff --git a/cmd-select-window.c b/cmd-select-window.c index 55f8318c..41bf78fa 100644 --- a/cmd-select-window.c +++ b/cmd-select-window.c @@ -32,7 +32,7 @@ int cmd_select_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_select_window_entry = { "select-window", "selectw", CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_select_window_init, cmd_target_parse, cmd_select_window_exec, diff --git a/cmd-send-keys.c b/cmd-send-keys.c index 849fe7be..df02efc5 100644 --- a/cmd-send-keys.c +++ b/cmd-send-keys.c @@ -43,7 +43,7 @@ struct cmd_send_keys_data { const struct cmd_entry cmd_send_keys_entry = { "send-keys", "send", "[-t target-window] key ...", - 0, + 0, 0, NULL, cmd_send_keys_parse, cmd_send_keys_exec, diff --git a/cmd-send-prefix.c b/cmd-send-prefix.c index d45ca0c1..ca4fae6e 100644 --- a/cmd-send-prefix.c +++ b/cmd-send-prefix.c @@ -29,7 +29,7 @@ int cmd_send_prefix_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_send_prefix_entry = { "send-prefix", NULL, CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_send_prefix_exec, diff --git a/cmd-server-info.c b/cmd-server-info.c index 2ce44841..2678facd 100644 --- a/cmd-server-info.c +++ b/cmd-server-info.c @@ -36,7 +36,7 @@ int cmd_server_info_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_server_info_entry = { "server-info", "info", "", - 0, + 0, 0, NULL, NULL, cmd_server_info_exec, diff --git a/cmd-set-buffer.c b/cmd-set-buffer.c index 3e1aa0a5..3620dfde 100644 --- a/cmd-set-buffer.c +++ b/cmd-set-buffer.c @@ -31,7 +31,7 @@ int cmd_set_buffer_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_set_buffer_entry = { "set-buffer", "setb", CMD_BUFFER_SESSION_USAGE " data", - CMD_ARG1, + CMD_ARG1, 0, cmd_buffer_init, cmd_buffer_parse, cmd_set_buffer_exec, diff --git a/cmd-set-option.c b/cmd-set-option.c index 88e297b0..77972e92 100644 --- a/cmd-set-option.c +++ b/cmd-set-option.c @@ -32,7 +32,7 @@ int cmd_set_option_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_set_option_entry = { "set-option", "set", CMD_OPTION_SESSION_USAGE, - CMD_GFLAG|CMD_UFLAG, + 0, CMD_CHFLAG('g')|CMD_CHFLAG('u'), NULL, cmd_option_parse, cmd_set_option_exec, @@ -87,7 +87,7 @@ cmd_set_option_exec(struct cmd *self, struct cmd_ctx *ctx) const struct set_option_entry *entry; u_int i; - if (data->flags & CMD_GFLAG) + if (data->chflags & CMD_CHFLAG('g')) oo = &global_s_options; else { if ((s = cmd_find_session(ctx, data->target)) == NULL) @@ -120,8 +120,8 @@ cmd_set_option_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); } - if (data->flags & CMD_UFLAG) { - if (data->flags & CMD_GFLAG) { + if (data->chflags & CMD_CHFLAG('u')) { + if (data->chflags & CMD_CHFLAG('g')) { ctx->error(ctx, "can't unset global option: %s", entry->name); return (-1); diff --git a/cmd-set-password.c b/cmd-set-password.c index 93705cab..1ec956c9 100644 --- a/cmd-set-password.c +++ b/cmd-set-password.c @@ -43,7 +43,7 @@ struct cmd_set_password_data { const struct cmd_entry cmd_set_password_entry = { "set-password", "pass", "[-c] password", - 0, + 0, 0, cmd_set_password_init, cmd_set_password_parse, cmd_set_password_exec, diff --git a/cmd-set-window-option.c b/cmd-set-window-option.c index 99b1a907..5f24af72 100644 --- a/cmd-set-window-option.c +++ b/cmd-set-window-option.c @@ -32,7 +32,7 @@ int cmd_set_window_option_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_set_window_option_entry = { "set-window-option", "setw", CMD_OPTION_WINDOW_USAGE, - CMD_GFLAG|CMD_UFLAG, + 0, CMD_CHFLAG('g')|CMD_CHFLAG('u'), NULL, cmd_option_parse, cmd_set_window_option_exec, @@ -81,7 +81,7 @@ cmd_set_window_option_exec(struct cmd *self, struct cmd_ctx *ctx) const struct set_option_entry *entry; u_int i; - if (data->flags & CMD_GFLAG) + if (data->chflags & CMD_CHFLAG('g')) oo = &global_w_options; else { if ((wl = cmd_find_window(ctx, data->target, NULL)) == NULL) @@ -114,8 +114,8 @@ cmd_set_window_option_exec(struct cmd *self, struct cmd_ctx *ctx) return (-1); } - if (data->flags & CMD_UFLAG) { - if (data->flags & CMD_GFLAG) { + if (data->chflags & CMD_CHFLAG('u')) { + if (data->chflags & CMD_CHFLAG('g')) { ctx->error(ctx, "can't unset global option: %s", entry->name); return (-1); diff --git a/cmd-show-buffer.c b/cmd-show-buffer.c index 3e779f31..e5a646d9 100644 --- a/cmd-show-buffer.c +++ b/cmd-show-buffer.c @@ -31,7 +31,7 @@ int cmd_show_buffer_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_show_buffer_entry = { "show-buffer", "showb", CMD_BUFFER_SESSION_USAGE, - 0, + 0, 0, cmd_buffer_init, cmd_buffer_parse, cmd_show_buffer_exec, diff --git a/cmd-show-options.c b/cmd-show-options.c index 3cc3be58..e5f50859 100644 --- a/cmd-show-options.c +++ b/cmd-show-options.c @@ -32,7 +32,7 @@ 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, - CMD_GFLAG, + 0, CMD_CHFLAG('g'), cmd_target_init, cmd_target_parse, cmd_show_options_exec, @@ -53,7 +53,7 @@ cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx) char *vs; long long vn; - if (data->flags & CMD_GFLAG) + if (data->chflags & CMD_CHFLAG('g')) oo = &global_s_options; else { if ((s = cmd_find_session(ctx, data->target)) == NULL) diff --git a/cmd-show-window-options.c b/cmd-show-window-options.c index 9f9c65ca..9fd35177 100644 --- a/cmd-show-window-options.c +++ b/cmd-show-window-options.c @@ -32,7 +32,7 @@ int cmd_show_window_options_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_show_window_options_entry = { "show-window-options", "showw", "[-g] " CMD_TARGET_WINDOW_USAGE, - CMD_GFLAG, + 0, CMD_CHFLAG('g'), cmd_target_init, cmd_target_parse, cmd_show_window_options_exec, @@ -53,7 +53,7 @@ cmd_show_window_options_exec(struct cmd *self, struct cmd_ctx *ctx) char *vs; long long vn; - if (data->flags & CMD_GFLAG) + if (data->chflags & CMD_CHFLAG('g')) oo = &global_w_options; else { if ((wl = cmd_find_window(ctx, data->target, NULL)) == NULL) diff --git a/cmd-source-file.c b/cmd-source-file.c index f22322ee..c9075530 100644 --- a/cmd-source-file.c +++ b/cmd-source-file.c @@ -39,7 +39,7 @@ struct cmd_source_file_data { const struct cmd_entry cmd_source_file_entry = { "source-file", "source", "path", - 0, + 0, 0, cmd_source_file_init, cmd_source_file_parse, cmd_source_file_exec, diff --git a/cmd-split-window.c b/cmd-split-window.c index a46b23a5..74d28313 100644 --- a/cmd-split-window.c +++ b/cmd-split-window.c @@ -46,7 +46,7 @@ struct cmd_split_window_data { const struct cmd_entry cmd_split_window_entry = { "split-window", "splitw", "[-d] [-p percentage|-l lines] [-t target-window] [command]", - 0, + 0, 0, cmd_split_window_init, cmd_split_window_parse, cmd_split_window_exec, diff --git a/cmd-start-server.c b/cmd-start-server.c index 21bc2395..b8f00949 100644 --- a/cmd-start-server.c +++ b/cmd-start-server.c @@ -29,7 +29,7 @@ int cmd_start_server_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_start_server_entry = { "start-server", "start", "", - CMD_STARTSERVER, + CMD_STARTSERVER, 0, NULL, NULL, cmd_start_server_exec, diff --git a/cmd-suspend-client.c b/cmd-suspend-client.c index 00941f61..5642bbec 100644 --- a/cmd-suspend-client.c +++ b/cmd-suspend-client.c @@ -37,7 +37,7 @@ struct cmd_suspend_client_data { const struct cmd_entry cmd_suspend_client_entry = { "suspend-client", "suspendc", "[-c target-client]", - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_suspend_client_exec, diff --git a/cmd-swap-pane.c b/cmd-swap-pane.c index e2f572dc..49c8611b 100644 --- a/cmd-swap-pane.c +++ b/cmd-swap-pane.c @@ -46,7 +46,7 @@ struct cmd_swap_pane_data { const struct cmd_entry cmd_swap_pane_entry = { "swap-pane", "swapp", "[-dDU] [-t target-window] [-p src-index] [-q dst-index]", - 0, + 0, 0, cmd_swap_pane_init, cmd_swap_pane_parse, cmd_swap_pane_exec, diff --git a/cmd-swap-window.c b/cmd-swap-window.c index 4a72a3e5..61e9c423 100644 --- a/cmd-swap-window.c +++ b/cmd-swap-window.c @@ -31,7 +31,7 @@ int cmd_swap_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_swap_window_entry = { "swap-window", "swapw", "[-d] " CMD_SRCDST_WINDOW_USAGE, - CMD_DFLAG, + 0, CMD_CHFLAG('d'), cmd_srcdst_init, cmd_srcdst_parse, cmd_swap_window_exec, @@ -61,7 +61,7 @@ cmd_swap_window_exec(struct cmd *self, struct cmd_ctx *ctx) wl_dst->window = wl_src->window; wl_src->window = w; - if (!(data->flags & CMD_DFLAG)) { + if (!(data->chflags & CMD_CHFLAG('d'))) { session_select(dst, wl_dst->idx); if (src != dst) session_select(src, wl_src->idx); diff --git a/cmd-switch-client.c b/cmd-switch-client.c index 9df443db..1ad4701f 100644 --- a/cmd-switch-client.c +++ b/cmd-switch-client.c @@ -42,7 +42,7 @@ struct cmd_switch_client_data { const struct cmd_entry cmd_switch_client_entry = { "switch-client", "switchc", "[-c target-client] [-t target-session]", - 0, + 0, 0, NULL, cmd_switch_client_parse, cmd_switch_client_exec, diff --git a/cmd-unbind-key.c b/cmd-unbind-key.c index d9389752..7272bc77 100644 --- a/cmd-unbind-key.c +++ b/cmd-unbind-key.c @@ -37,7 +37,7 @@ struct cmd_unbind_key_data { const struct cmd_entry cmd_unbind_key_entry = { "unbind-key", "unbind", "key", - 0, + 0, 0, NULL, cmd_unbind_key_parse, cmd_unbind_key_exec, diff --git a/cmd-unlink-window.c b/cmd-unlink-window.c index 5d9734b6..1befabd9 100644 --- a/cmd-unlink-window.c +++ b/cmd-unlink-window.c @@ -29,7 +29,7 @@ int cmd_unlink_window_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_unlink_window_entry = { "unlink-window", "unlinkw", CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_unlink_window_exec, diff --git a/cmd-up-pane.c b/cmd-up-pane.c index fc62173e..ec532370 100644 --- a/cmd-up-pane.c +++ b/cmd-up-pane.c @@ -29,7 +29,7 @@ int cmd_up_pane_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_up_pane_entry = { "up-pane", "upp", CMD_TARGET_WINDOW_USAGE, - 0, + 0, 0, cmd_target_init, cmd_target_parse, cmd_up_pane_exec, @@ -861,17 +861,13 @@ struct cmd_entry { #define CMD_CANTNEST 0x2 #define CMD_ARG1 0x4 #define CMD_ARG01 0x8 -#define CMD_AFLAG 0x10 -#define CMD_DFLAG 0x20 -#define CMD_GFLAG 0x40 -#define CMD_KFLAG 0x80 -#define CMD_UFLAG 0x100 -#define CMD_BIGDFLAG 0x200 -#define CMD_BIGUFLAG 0x400 -#define CMD_RFLAG 0x800 - int flags; +#define CMD_CHFLAG(flag) \ + ((flag) >= 'a' && (flag) <= 'z' ? 1ULL << ((flag) - 'a') : \ + (flag) >= 'A' && (flag) <= 'Z' ? 1ULL << (26 + (flag) - 'A') : 0) + uint64_t chflags; + void (*init)(struct cmd *, int); int (*parse)(struct cmd *, int, char **, char **); int (*exec)(struct cmd *, struct cmd_ctx *); @@ -883,34 +879,34 @@ struct cmd_entry { /* Generic command data. */ struct cmd_target_data { - int flags; + uint64_t chflags; char *target; char *arg; }; struct cmd_srcdst_data { - int flags; + uint64_t chflags; char *src; char *dst; char *arg; }; struct cmd_buffer_data { - int flags; + uint64_t chflags; char *target; int buffer; char *arg; }; struct cmd_option_data { - int flags; + uint64_t chflags; char *target; char *option; char *value; }; struct cmd_pane_data { - int flags; + uint64_t chflags; char *target; char *arg; int pane; |