summaryrefslogtreecommitdiff
path: root/usr.bin/tmux/cmd-set-option.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2016-09-26 09:02:35 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2016-09-26 09:02:35 +0000
commit940ab56dc3e3ac584c55e3e14dc1e7de4d7b2351 (patch)
treeae13dde0c51b292b32c23d5fe96a5b846695b9a0 /usr.bin/tmux/cmd-set-option.c
parent3920b9d217ce9db970778b71e2ffe2510d753a81 (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.c27
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);
}