diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2017-01-11 14:56:45 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2017-01-11 14:56:45 +0000 |
commit | 895af37ffa73f043de10515d53b404385bdd5c14 (patch) | |
tree | 30719436841a911898488240df8665d826b81ba6 /usr.bin | |
parent | e3bc536cddbfcca50a2552783a5b121d2d8b750c (diff) |
Some tidying and tweaks to options code.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/tmux/cmd-set-option.c | 8 | ||||
-rw-r--r-- | usr.bin/tmux/notify.c | 4 | ||||
-rw-r--r-- | usr.bin/tmux/options-table.c | 6 | ||||
-rw-r--r-- | usr.bin/tmux/options.c | 60 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.h | 4 |
5 files changed, 42 insertions, 40 deletions
diff --git a/usr.bin/tmux/cmd-set-option.c b/usr.bin/tmux/cmd-set-option.c index 405226f9069..cf84945bd53 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.102 2016/11/04 18:56:25 nicm Exp $ */ +/* $OpenBSD: cmd-set-option.c,v 1.103 2017/01/11 14:56:44 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -117,7 +117,7 @@ cmd_set_option_exec(struct cmd *self, struct cmdq_item *item) if (*optstr == '@') return (cmd_set_option_user(self, item, optstr, valstr)); - /* Find the option entry, try each table. */ + /* Find the option entry. */ oe = NULL; if (options_table_find(optstr, &oe) != 0) { if (!args_has(args, 'q')) { @@ -184,7 +184,7 @@ cmd_set_option_exec(struct cmd *self, struct cmdq_item *item) return (CMD_RETURN_ERROR); } - /* Start or stop timers if necessary. */ + /* Update timers and so on for various options. */ if (strcmp(oe->name, "automatic-rename") == 0) { RB_FOREACH(w, windows, &windows) { if (w->active == NULL) @@ -207,8 +207,6 @@ cmd_set_option_exec(struct cmd *self, struct cmdq_item *item) RB_FOREACH(w, windows, &windows) w->flags |= WINDOW_STYLECHANGED; } - - /* When the pane-border-status option has been changed, resize panes. */ if (strcmp(oe->name, "pane-border-status") == 0) { RB_FOREACH(w, windows, &windows) layout_fix_panes(w, w->sx, w->sy); diff --git a/usr.bin/tmux/notify.c b/usr.bin/tmux/notify.c index 9b272ba9bf1..9c72b38f51f 100644 --- a/usr.bin/tmux/notify.c +++ b/usr.bin/tmux/notify.c @@ -1,4 +1,4 @@ -/* $OpenBSD: notify.c,v 1.19 2016/10/16 22:18:04 nicm Exp $ */ +/* $OpenBSD: notify.c,v 1.20 2017/01/11 14:56:44 nicm Exp $ */ /* * Copyright (c) 2012 George Nachman <tmux@georgester.com> @@ -77,6 +77,8 @@ notify_callback(struct cmdq_item *item, void *data) { struct notify_entry *ne = data; + log_debug("%s: %s", __func__, ne->name); + if (strcmp(ne->name, "window-layout-changed") == 0) control_notify_window_layout_changed(ne->window); if (strcmp(ne->name, "window-unlinked") == 0) diff --git a/usr.bin/tmux/options-table.c b/usr.bin/tmux/options-table.c index f99ce5eb3f9..8060656b423 100644 --- a/usr.bin/tmux/options-table.c +++ b/usr.bin/tmux/options-table.c @@ -1,4 +1,4 @@ -/* $OpenBSD: options-table.c,v 1.76 2016/12/30 13:49:34 nicm Exp $ */ +/* $OpenBSD: options-table.c,v 1.77 2017/01/11 14:56:44 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -947,8 +947,8 @@ options_table_print_entry(const struct options_table_entry *oe, xsnprintf(out, sizeof out, "%lld", o->num); break; case OPTIONS_TABLE_KEY: - xsnprintf(out, sizeof out, "%s", - key_string_lookup_key(o->num)); + s = key_string_lookup_key(o->num); + xsnprintf(out, sizeof out, "%s", s); break; case OPTIONS_TABLE_COLOUR: s = colour_tostring(o->num); diff --git a/usr.bin/tmux/options.c b/usr.bin/tmux/options.c index ff3cfc8f9ef..359410d5db5 100644 --- a/usr.bin/tmux/options.c +++ b/usr.bin/tmux/options.c @@ -1,4 +1,4 @@ -/* $OpenBSD: options.c,v 1.20 2016/10/10 21:29:23 nicm Exp $ */ +/* $OpenBSD: options.c,v 1.21 2017/01/11 14:56:44 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -37,8 +37,6 @@ struct options { static int options_cmp(struct options_entry *, struct options_entry *); RB_GENERATE_STATIC(options_tree, options_entry, entry, options_cmp); -static void options_free1(struct options *, struct options_entry *); - static int options_cmp(struct options_entry *o1, struct options_entry *o2) { @@ -66,6 +64,28 @@ options_free1(struct options *oo, struct options_entry *o) free(o); } +static struct options_entry * +options_new(struct options *oo, const char *name, char **s) +{ + struct options_entry *o; + + if (s != NULL) + *s = NULL; + + if ((o = options_find1(oo, name)) == NULL) { + o = xmalloc(sizeof *o); + o->name = xstrdup(name); + RB_INSERT(options_tree, &oo->tree, o); + memcpy(&o->style, &grid_default_cell, sizeof o->style); + } else if (o->type == OPTIONS_STRING) { + if (s != NULL) + *s = o->str; + else + free(o->str); + } + return (o); +} + void options_free(struct options *oo) { @@ -129,21 +149,14 @@ options_set_string(struct options *oo, const char *name, const char *fmt, ...) va_list ap; char *s; - s = NULL; - if ((o = options_find1(oo, name)) == NULL) { - o = xmalloc(sizeof *o); - o->name = xstrdup(name); - RB_INSERT(options_tree, &oo->tree, o); - memcpy(&o->style, &grid_default_cell, sizeof o->style); - } else if (o->type == OPTIONS_STRING) - s = o->str; - va_start(ap, fmt); + + o = options_new(oo, name, &s); o->type = OPTIONS_STRING; xvasprintf(&o->str, fmt, ap); - va_end(ap); - free(s); + + va_end(ap); return (o); } @@ -164,16 +177,10 @@ options_set_number(struct options *oo, const char *name, long long value) { struct options_entry *o; - if ((o = options_find1(oo, name)) == NULL) { - o = xmalloc(sizeof *o); - o->name = xstrdup(name); - RB_INSERT(options_tree, &oo->tree, o); - memcpy(&o->style, &grid_default_cell, sizeof o->style); - } else if (o->type == OPTIONS_STRING) - free(o->str); - + o = options_new(oo, name, NULL); o->type = OPTIONS_NUMBER; o->num = value; + return (o); } @@ -205,15 +212,10 @@ options_set_style(struct options *oo, const char *name, const char *value, if (style_parse(&grid_default_cell, &tmpgc, value) == -1) return (NULL); - if (o == NULL) { - o = xmalloc(sizeof *o); - o->name = xstrdup(name); - RB_INSERT(options_tree, &oo->tree, o); - } else if (o->type == OPTIONS_STRING) - free(o->str); - + o = options_new(oo, name, NULL); o->type = OPTIONS_STYLE; memcpy(&o->style, &tmpgc, sizeof o->style); + return (o); } diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h index e3064da4456..13e225de55c 100644 --- a/usr.bin/tmux/tmux.h +++ b/usr.bin/tmux/tmux.h @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.h,v 1.687 2017/01/09 21:03:25 nicm Exp $ */ +/* $OpenBSD: tmux.h,v 1.688 2017/01/11 14:56:44 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -654,7 +654,7 @@ struct options_entry { long long num; struct grid_cell style; - RB_ENTRY(options_entry) entry; + RB_ENTRY(options_entry) entry; }; /* Scheduled job. */ |