diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2016-09-26 09:02:35 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2016-09-26 09:02:35 +0000 |
commit | 940ab56dc3e3ac584c55e3e14dc1e7de4d7b2351 (patch) | |
tree | ae13dde0c51b292b32c23d5fe96a5b846695b9a0 /usr.bin/tmux/cmd-set-option.c | |
parent | 3920b9d217ce9db970778b71e2ffe2510d753a81 (diff) |
Support set -a (append) with user options, suggested by Xandor Schiefer.
Diffstat (limited to 'usr.bin/tmux/cmd-set-option.c')
-rw-r--r-- | usr.bin/tmux/cmd-set-option.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/usr.bin/tmux/cmd-set-option.c b/usr.bin/tmux/cmd-set-option.c index dfda82df2ef..faa1bc30851 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.96 2016/05/30 09:50:20 nicm Exp $ */ +/* $OpenBSD: cmd-set-option.c,v 1.97 2016/09/26 09:02:34 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -227,10 +227,11 @@ enum cmd_retval cmd_set_option_user(struct cmd *self, struct cmd_q *cmdq, const char *optstr, const char *valstr) { - struct args *args = self->args; - struct session *s = cmdq->state.tflag.s; - struct winlink *wl = cmdq->state.tflag.wl; - struct options *oo; + struct args *args = self->args; + struct session *s = cmdq->state.tflag.s; + struct winlink *wl = cmdq->state.tflag.wl; + struct options *oo; + struct options_entry *o; if (args_has(args, 's')) oo = global_options; @@ -262,18 +263,22 @@ cmd_set_option_user(struct cmd *self, struct cmd_q *cmdq, const char *optstr, } options_remove(oo, optstr); } else { - if (valstr == NULL) { - cmdq_error(cmdq, "empty value"); - return (CMD_RETURN_ERROR); - } - if (args_has(args, 'o') && options_find1(oo, optstr) != NULL) { + o = options_find1(oo, optstr); + if (args_has(args, 'o') && o != NULL) { if (!args_has(args, 'q')) { cmdq_error(cmdq, "already set: %s", optstr); return (CMD_RETURN_ERROR); } return (CMD_RETURN_NORMAL); } - options_set_string(oo, optstr, "%s", valstr); + if (valstr == NULL) { + cmdq_error(cmdq, "empty value"); + return (CMD_RETURN_ERROR); + } + if (o != NULL && args_has(args, 'a')) + options_set_string(oo, optstr, "%s%s", o->str, valstr); + else + options_set_string(oo, optstr, "%s", valstr); } return (CMD_RETURN_NORMAL); } |