From 4f5d8167ddc4ac09f683485a3a43faffe093096b Mon Sep 17 00:00:00 2001 From: nicm Date: Tue, 4 Aug 2009 18:45:57 +0000 Subject: Add a -a flag to set-option and set-window-option to append to an existing string value, useful for terminal-overrides. --- usr.bin/tmux/options-cmd.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'usr.bin/tmux/options-cmd.c') diff --git a/usr.bin/tmux/options-cmd.c b/usr.bin/tmux/options-cmd.c index 4bc727316ab..747f8219756 100644 --- a/usr.bin/tmux/options-cmd.c +++ b/usr.bin/tmux/options-cmd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: options-cmd.c,v 1.1 2009/06/01 22:58:49 nicm Exp $ */ +/* $OpenBSD: options-cmd.c,v 1.2 2009/08/04 18:45:57 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott @@ -25,15 +25,26 @@ void set_option_string(struct cmd_ctx *ctx, struct options *oo, - const struct set_option_entry *entry, char *value) + const struct set_option_entry *entry, char *value, int append) { + char *oldvalue, *newvalue; + if (value == NULL) { ctx->error(ctx, "empty value"); return; } - options_set_string(oo, entry->name, "%s", value); - ctx->info(ctx, "set option: %s -> %s", entry->name, value); + if (append) { + oldvalue = options_get_string(oo, entry->name); + xasprintf(&newvalue, "%s%s", oldvalue, value); + } else + newvalue = value; + + options_set_string(oo, entry->name, "%s", newvalue); + ctx->info(ctx, "set option: %s -> %s", entry->name, newvalue); + + if (newvalue != value) + xfree(newvalue); } void -- cgit v1.2.3-59-g8ed1b