-/* $OpenBSD: alerts.c,v 1.3 2015/09/21 09:34:52 nicm Exp $ */
+/* $OpenBSD: alerts.c,v 1.4 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2015 Nicholas Marriott <nicm@users.sourceforge.net>
struct session *s;
if (flags & WINDOW_ACTIVITY) {
- if (options_get_number(&w->options, "monitor-activity"))
+ if (options_get_number(w->options, "monitor-activity"))
return (1);
}
if (flags & WINDOW_SILENCE) {
- if (options_get_number(&w->options, "monitor-silence") != 0)
+ if (options_get_number(w->options, "monitor-silence") != 0)
return (1);
}
if (~flags & WINDOW_BELL)
RB_FOREACH(s, sessions, &sessions) {
if (!session_has(s, w))
continue;
- if (options_get_number(&s->options, "bell-action") != BELL_NONE)
+ if (options_get_number(s->options, "bell-action") != BELL_NONE)
return (1);
}
return (0);
event_del(&w->alerts_timer);
timerclear(&tv);
- tv.tv_sec = options_get_number(&w->options, "monitor-silence");
+ tv.tv_sec = options_get_number(w->options, "monitor-silence");
log_debug("@%u alerts timer reset %u", w->id, (u_int)tv.tv_sec);
if (tv.tv_sec != 0)
if (s->curw->window == w)
w->flags &= ~WINDOW_BELL;
- action = options_get_number(&s->options, "bell-action");
+ action = options_get_number(s->options, "bell-action");
if (action == BELL_NONE)
return (0);
- visual = options_get_number(&s->options, "visual-bell");
+ visual = options_get_number(s->options, "visual-bell");
TAILQ_FOREACH(c, &clients, entry) {
if (c->session != s || c->flags & CLIENT_CONTROL)
continue;
if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
return (0);
- if (!options_get_number(&w->options, "monitor-activity"))
+ if (!options_get_number(w->options, "monitor-activity"))
return (0);
- if (options_get_number(&s->options, "bell-on-alert"))
+ if (options_get_number(s->options, "bell-on-alert"))
alerts_ring_bell(s);
wl->flags |= WINLINK_ACTIVITY;
- if (options_get_number(&s->options, "visual-activity")) {
+ if (options_get_number(s->options, "visual-activity")) {
TAILQ_FOREACH(c, &clients, entry) {
if (c->session != s)
continue;
if (s->curw == wl && !(s->flags & SESSION_UNATTACHED))
return (0);
- if (options_get_number(&w->options, "monitor-silence") == 0)
+ if (options_get_number(w->options, "monitor-silence") == 0)
return (0);
- if (options_get_number(&s->options, "bell-on-alert"))
+ if (options_get_number(s->options, "bell-on-alert"))
alerts_ring_bell(s);
wl->flags |= WINLINK_SILENCE;
- if (options_get_number(&s->options, "visual-silence")) {
+ if (options_get_number(s->options, "visual-silence")) {
TAILQ_FOREACH(c, &clients, entry) {
if (c->session != s)
continue;
-/* $OpenBSD: client.c,v 1.99 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: client.c,v 1.100 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
fatal("pledge failed");
/* Free stuff that is not used in the client. */
- options_free(&global_options);
- options_free(&global_s_options);
- options_free(&global_w_options);
+ options_free(global_options);
+ options_free(global_s_options);
+ options_free(global_w_options);
environ_free(&global_environ);
/* Create stdin handler. */
-/* $OpenBSD: cmd-attach-session.c,v 1.43 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: cmd-attach-session.c,v 1.44 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
}
if (!Eflag) {
- update = options_get_string(&s->options,
+ update = options_get_string(s->options,
"update-environment");
environ_update(update, &c->environ, &s->environ);
}
}
if (!Eflag) {
- update = options_get_string(&s->options,
+ update = options_get_string(s->options,
"update-environment");
environ_update(update, &c->environ, &s->environ);
}
-/* $OpenBSD: cmd-break-pane.c,v 1.28 2015/09/17 14:11:55 nicm Exp $ */
+/* $OpenBSD: cmd-break-pane.c,v 1.29 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
layout_init(w, wp);
if (idx == -1)
- idx = -1 - options_get_number(&dst_s->options, "base-index");
+ idx = -1 - options_get_number(dst_s->options, "base-index");
wl = session_attach(dst_s, w, idx, &cause); /* can't fail */
if (!args_has(self->args, 'd'))
session_select(dst_s, wl->idx);
-/* $OpenBSD: cmd-choose-buffer.c,v 1.23 2015/08/29 09:25:00 nicm Exp $ */
+/* $OpenBSD: cmd-choose-buffer.c,v 1.24 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2010 Nicholas Marriott <nicm@users.sourceforge.net>
if ((wl = cmd_find_window(cmdq, args_get(args, 't'), NULL)) == NULL)
return (CMD_RETURN_ERROR);
- utf8flag = options_get_number(&wl->window->options, "utf8");
+ utf8flag = options_get_number(wl->window->options, "utf8");
if (paste_get_top(NULL) == NULL)
return (CMD_RETURN_NORMAL);
-/* $OpenBSD: cmd-move-window.c,v 1.20 2015/06/17 16:50:28 nicm Exp $ */
+/* $OpenBSD: cmd-move-window.c,v 1.21 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
* session already has the correct winlink id to us, either
* automatically or specified by -s.
*/
- if (!sflag && options_get_number(&src->options, "renumber-windows"))
+ if (!sflag && options_get_number(src->options, "renumber-windows"))
session_renumber_windows(src);
recalculate_sizes();
-/* $OpenBSD: cmd-new-session.c,v 1.73 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: cmd-new-session.c,v 1.74 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
goto error;
}
}
- if (sy > 0 && options_get_number(&global_s_options, "status"))
+ if (sy > 0 && options_get_number(global_s_options, "status"))
sy--;
if (sx == 0)
sx = 1;
argc = args->argc;
argv = args->argv;
} else if (target == NULL) {
- cmd = options_get_string(&global_s_options, "default-command");
+ cmd = options_get_string(global_s_options, "default-command");
if (cmd != NULL && *cmd != '\0') {
argc = 1;
argv = &cmd;
/* Construct the environment. */
environ_init(&env);
if (c != NULL && !args_has(args, 'E')) {
- update = options_get_string(&global_s_options,
+ update = options_get_string(global_s_options,
"update-environment");
environ_update(update, &c->environ, &env);
}
/* Create the new session. */
- idx = -1 - options_get_number(&global_s_options, "base-index");
+ idx = -1 - options_get_number(global_s_options, "base-index");
s = session_create(newname, argc, argv, path, cwd, &env, tiop, idx, sx,
sy, &cause);
if (s == NULL) {
if (argc >= 0 && args_has(args, 'n')) {
w = s->curw->window;
window_set_name(w, args_get(args, 'n'));
- options_set_number(&w->options, "automatic-rename", 0);
+ options_set_number(w->options, "automatic-rename", 0);
}
/*
-/* $OpenBSD: cmd-new-window.c,v 1.47 2015/10/23 16:30:15 nicm Exp $ */
+/* $OpenBSD: cmd-new-window.c,v 1.48 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
detached = args_has(args, 'd');
if (args->argc == 0) {
- cmd = options_get_string(&s->options, "default-command");
+ cmd = options_get_string(s->options, "default-command");
if (cmd != NULL && *cmd != '\0') {
argc = 1;
argv = (char **)&cmd;
}
if (idx == -1)
- idx = -1 - options_get_number(&s->options, "base-index");
+ idx = -1 - options_get_number(s->options, "base-index");
wl = session_new(s, args_get(args, 'n'), argc, argv, path, cwd, idx,
&cause);
if (wl == NULL) {
-/* $OpenBSD: cmd-rename-window.c,v 1.11 2014/10/20 22:29:25 nicm Exp $ */
+/* $OpenBSD: cmd-rename-window.c,v 1.12 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
return (CMD_RETURN_ERROR);
window_set_name(wl->window, args->argv[0]);
- options_set_number(&wl->window->options, "automatic-rename", 0);
+ options_set_number(wl->window->options, "automatic-rename", 0);
server_status_window(wl->window);
-/* $OpenBSD: cmd-send-keys.c,v 1.20 2015/05/08 16:18:04 nicm Exp $ */
+/* $OpenBSD: cmd-send-keys.c,v 1.21 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
if (self->entry == &cmd_send_prefix_entry) {
if (args_has(args, '2'))
- key = options_get_number(&s->options, "prefix2");
+ key = options_get_number(s->options, "prefix2");
else
- key = options_get_number(&s->options, "prefix");
+ key = options_get_number(s->options, "prefix");
window_pane_key(wp, NULL, s, key, NULL);
return (CMD_RETURN_NORMAL);
}
-/* $OpenBSD: cmd-set-option.c,v 1.83 2015/09/14 13:22:02 nicm Exp $ */
+/* $OpenBSD: cmd-set-option.c,v 1.84 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
/* Work out the tree from the table. */
if (table == server_options_table)
- oo = &global_options;
+ oo = global_options;
else if (table == window_options_table) {
if (args_has(self->args, 'g'))
- oo = &global_w_options;
+ oo = global_w_options;
else {
wl = cmd_find_window(cmdq, args_get(args, 't'), NULL);
if (wl == NULL) {
'g')) ? " need target window or -g" : "");
return (CMD_RETURN_ERROR);
}
- oo = &wl->window->options;
+ oo = wl->window->options;
}
} else if (table == session_options_table) {
if (args_has(self->args, 'g'))
- oo = &global_s_options;
+ oo = global_s_options;
else {
s = cmd_find_session(cmdq, args_get(args, 't'), 0);
if (s == NULL) {
'g')) ? " need target session or -g" : "");
return (CMD_RETURN_ERROR);
}
- oo = &s->options;
+ oo = s->options;
}
} else {
cmdq_error(cmdq, "unknown table");
/* Start or stop timers if necessary. */
if (strcmp(oe->name, "automatic-rename") == 0) {
RB_FOREACH(w, windows, &windows) {
- if (options_get_number(&w->options, "automatic-rename"))
+ if (options_get_number(w->options, "automatic-rename"))
w->active->flags |= PANE_CHANGED;
}
}
struct options *oo;
if (args_has(args, 's'))
- oo = &global_options;
+ oo = global_options;
else if (args_has(self->args, 'w') ||
self->entry == &cmd_set_window_option_entry) {
if (args_has(self->args, 'g'))
- oo = &global_w_options;
+ oo = global_w_options;
else {
wl = cmd_find_window(cmdq, args_get(args, 't'), NULL);
if (wl == NULL)
return (CMD_RETURN_ERROR);
- oo = &wl->window->options;
+ oo = wl->window->options;
}
} else {
if (args_has(self->args, 'g'))
- oo = &global_s_options;
+ oo = global_s_options;
else {
s = cmd_find_session(cmdq, args_get(args, 't'), 0);
if (s == NULL)
return (CMD_RETURN_ERROR);
- oo = &s->options;
+ oo = s->options;
}
}
return (-1);
}
- if (args_has(args, 'g') || oo == &global_options) {
+ if (args_has(args, 'g') || oo == global_options) {
switch (oe->type) {
case OPTIONS_TABLE_STRING:
options_set_string(oo, oe->name, "%s", oe->default_str);
-/* $OpenBSD: cmd-show-options.c,v 1.23 2014/10/20 22:29:25 nicm Exp $ */
+/* $OpenBSD: cmd-show-options.c,v 1.24 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
int quiet;
if (args_has(self->args, 's')) {
- oo = &global_options;
+ oo = global_options;
table = server_options_table;
} else if (args_has(self->args, 'w') ||
self->entry == &cmd_show_window_options_entry) {
table = window_options_table;
if (args_has(self->args, 'g'))
- oo = &global_w_options;
+ oo = global_w_options;
else {
wl = cmd_find_window(cmdq, args_get(args, 't'), NULL);
if (wl == NULL)
return (CMD_RETURN_ERROR);
- oo = &wl->window->options;
+ oo = wl->window->options;
}
} else {
table = session_options_table;
if (args_has(self->args, 'g'))
- oo = &global_s_options;
+ oo = global_s_options;
else {
s = cmd_find_session(cmdq, args_get(args, 't'), 0);
if (s == NULL)
return (CMD_RETURN_ERROR);
- oo = &s->options;
+ oo = s->options;
}
}
struct options_entry *o;
const char *optval;
- RB_FOREACH(o, options_tree, &oo->tree) {
+ o = options_first(oo);
+ while (o != NULL) {
if (*o->name == '@') {
if (args_has(self->args, 'v'))
cmdq_print(cmdq, "%s", o->str);
else
cmdq_print(cmdq, "%s \"%s\"", o->name, o->str);
}
+ o = options_next(o);
}
for (oe = table; oe->name != NULL; oe++) {
-/* $OpenBSD: cmd-split-window.c,v 1.58 2015/10/23 16:30:15 nicm Exp $ */
+/* $OpenBSD: cmd-split-window.c,v 1.59 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
server_fill_environ(s, &env);
if (args->argc == 0) {
- cmd = options_get_string(&s->options, "default-command");
+ cmd = options_get_string(s->options, "default-command");
if (cmd != NULL && *cmd != '\0') {
argc = 1;
argv = (char **)&cmd;
else
size = (wp->sx * percentage) / 100;
}
- hlimit = options_get_number(&s->options, "history-limit");
+ hlimit = options_get_number(s->options, "history-limit");
- shell = options_get_string(&s->options, "default-shell");
+ shell = options_get_string(s->options, "default-shell");
if (*shell == '\0' || areshell(shell))
shell = _PATH_BSHELL;
-/* $OpenBSD: cmd-switch-client.c,v 1.31 2015/09/22 21:56:16 nicm Exp $ */
+/* $OpenBSD: cmd-switch-client.c,v 1.32 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
}
if (c != NULL && !args_has(args, 'E')) {
- update = options_get_string(&s->options, "update-environment");
+ update = options_get_string(s->options, "update-environment");
environ_update(update, &c->environ, &s->environ);
}
-/* $OpenBSD: format.c,v 1.89 2015/10/27 09:28:31 nicm Exp $ */
+/* $OpenBSD: format.c,v 1.90 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2011 Nicholas Marriott <nicm@users.sourceforge.net>
found = NULL;
if (~modifiers & FORMAT_TIMESTRING) {
- o = options_find(&global_options, key);
+ o = options_find(global_options, key);
if (o == NULL && ft->w != NULL)
- o = options_find(&ft->w->options, key);
+ o = options_find(ft->w->options, key);
if (o == NULL)
- o = options_find(&global_w_options, key);
+ o = options_find(global_w_options, key);
if (o == NULL && ft->s != NULL)
- o = options_find(&ft->s->options, key);
+ o = options_find(ft->s->options, key);
if (o == NULL)
- o = options_find(&global_s_options, key);
+ o = options_find(global_s_options, key);
if (o != NULL) {
switch (o->type) {
case OPTIONS_STRING:
format_add(ft, "pane_in_mode", "%d", wp->screen != &wp->base);
format_add(ft, "pane_synchronized", "%d",
- !!options_get_number(&wp->window->options, "synchronize-panes"));
+ !!options_get_number(wp->window->options, "synchronize-panes"));
format_add(ft, "pane_tty", "%s", wp->tty);
format_add(ft, "pane_pid", "%ld", (long) wp->pid);
-/* $OpenBSD: input-keys.c,v 1.44 2015/10/26 17:17:06 nicm Exp $ */
+/* $OpenBSD: input-keys.c,v 1.45 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
* Then try to look this up as an xterm key, if the flag to output them
* is set.
*/
- if (options_get_number(&wp->window->options, "xterm-keys")) {
+ if (options_get_number(wp->window->options, "xterm-keys")) {
if ((out = xterm_keys_lookup(key)) != NULL) {
bufferevent_write(wp->event, out, strlen(out));
free(out);
-/* $OpenBSD: input.c,v 1.86 2015/09/02 17:52:57 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.87 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
{
if (ictx->flags & INPUT_DISCARD)
return;
- if (!options_get_number(&ictx->wp->window->options, "allow-rename"))
+ if (!options_get_number(ictx->wp->window->options, "allow-rename"))
return;
log_debug("%s: \"%s\"", __func__, ictx->input_buf);
window_set_name(ictx->wp->window, ictx->input_buf);
- options_set_number(&ictx->wp->window->options, "automatic-rename", 0);
+ options_set_number(ictx->wp->window->options, "automatic-rename", 0);
server_status_window(ictx->wp->window);
}
int
input_utf8_open(struct input_ctx *ictx)
{
- if (!options_get_number(&ictx->wp->window->options, "utf8")) {
+ if (!options_get_number(ictx->wp->window->options, "utf8")) {
/* Print, and do not switch state. */
input_print(ictx);
return (-1);
-/* $OpenBSD: layout-set.c,v 1.12 2015/08/29 23:55:55 nicm Exp $ */
+/* $OpenBSD: layout-set.c,v 1.13 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
width = (w->sx - (n - 1)) / columns;
/* Get the main pane height and add one for separator line. */
- mainheight = options_get_number(&w->options, "main-pane-height") + 1;
+ mainheight = options_get_number(w->options, "main-pane-height") + 1;
/* Get the optional other pane height and add one for separator line. */
- otherheight = options_get_number(&w->options, "other-pane-height") + 1;
+ otherheight = options_get_number(w->options, "other-pane-height") + 1;
/*
* If an other pane height was specified, honour it so long as it
height = (w->sy - (n - 1)) / rows;
/* Get the main pane width and add one for separator line. */
- mainwidth = options_get_number(&w->options, "main-pane-width") + 1;
+ mainwidth = options_get_number(w->options, "main-pane-width") + 1;
/* Get the optional other pane width and add one for separator line. */
- otherwidth = options_get_number(&w->options, "other-pane-width") + 1;
+ otherwidth = options_get_number(w->options, "other-pane-width") + 1;
/*
* If an other pane width was specified, honour it so long as it
-/* $OpenBSD: names.c,v 1.29 2015/08/29 00:29:15 nicm Exp $ */
+/* $OpenBSD: names.c,v 1.30 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
if (w->active == NULL)
return;
- if (!options_get_number(&w->options, "automatic-rename"))
+ if (!options_get_number(w->options, "automatic-rename"))
return;
if (~w->active->flags & PANE_CHANGED) {
format_defaults_window(ft, w);
format_defaults_pane(ft, w->active);
- fmt = options_get_string(&w->options, "automatic-rename-format");
+ fmt = options_get_string(w->options, "automatic-rename-format");
name = format_expand(ft, fmt);
format_free(ft);
-/* $OpenBSD: options.c,v 1.12 2015/02/18 15:32:37 nicm Exp $ */
+/* $OpenBSD: options.c,v 1.13 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
* a red-black tree.
*/
+struct options {
+ RB_HEAD(options_tree, options_entry) tree;
+ struct options *parent;
+};
+
+int options_cmp(struct options_entry *, struct options_entry *);
+RB_PROTOTYPE(options_tree, options_entry, entry, options_cmp);
RB_GENERATE(options_tree, options_entry, entry, options_cmp);
int
return (strcmp(o1->name, o2->name));
}
-void
-options_init(struct options *oo, struct options *parent)
+struct options *
+options_create(struct options *parent)
{
+ struct options *oo;
+
+ oo = xcalloc(1, sizeof *oo);
RB_INIT(&oo->tree);
oo->parent = parent;
+ return (oo);
}
void
free(o->str);
free(o);
}
+ free(oo);
+}
+
+struct options_entry *
+options_first(struct options *oo)
+{
+ return (RB_MIN(options_tree, &oo->tree));
+}
+
+struct options_entry *
+options_next(struct options_entry *o)
+{
+ return (RB_NEXT(options_tree, &oo->tree, o));
}
struct options_entry *
-/* $OpenBSD: paste.c,v 1.31 2015/09/14 13:22:02 nicm Exp $ */
+/* $OpenBSD: paste.c,v 1.32 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
if (size == 0)
return;
- limit = options_get_number(&global_options, "buffer-limit");
+ limit = options_get_number(global_options, "buffer-limit");
RB_FOREACH_REVERSE_SAFE(pb, paste_time_tree, &paste_by_time, pb1) {
if (paste_num_automatic < limit)
break;
-/* $OpenBSD: resize.c,v 1.17 2015/04/24 23:17:11 nicm Exp $ */
+/* $OpenBSD: resize.c,v 1.18 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
int flag, has_status, is_zoomed, forced;
RB_FOREACH(s, sessions, &sessions) {
- has_status = options_get_number(&s->options, "status");
+ has_status = options_get_number(s->options, "status");
s->attached = 0;
ssx = ssy = UINT_MAX;
RB_FOREACH(w, windows, &windows) {
if (w->active == NULL)
continue;
- flag = options_get_number(&w->options, "aggressive-resize");
+ flag = options_get_number(w->options, "aggressive-resize");
ssx = ssy = UINT_MAX;
RB_FOREACH(s, sessions, &sessions) {
continue;
forced = 0;
- limit = options_get_number(&w->options, "force-width");
+ limit = options_get_number(w->options, "force-width");
if (limit >= PANE_MINIMUM && ssx > limit) {
ssx = limit;
forced |= WINDOW_FORCEWIDTH;
}
- limit = options_get_number(&w->options, "force-height");
+ limit = options_get_number(w->options, "force-height");
if (limit >= PANE_MINIMUM && ssy > limit) {
ssy = limit;
forced |= WINDOW_FORCEHEIGHT;
-/* $OpenBSD: screen-redraw.c,v 1.32 2015/06/04 11:43:51 nicm Exp $ */
+/* $OpenBSD: screen-redraw.c,v 1.33 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
screen_redraw_screen(struct client *c, int draw_panes, int draw_status,
int draw_borders)
{
- struct options *oo = &c->session->options;
+ struct options *oo = c->session->options;
struct tty *tty = &c->tty;
u_int top;
int status, spos;
{
struct session *s = c->session;
struct window *w = s->curw->window;
- struct options *oo = &w->options;
+ struct options *oo = w->options;
struct tty *tty = &c->tty;
struct window_pane *wp;
struct grid_cell m_active_gc, active_gc, m_other_gc, other_gc;
{
struct tty *tty = &c->tty;
struct session *s = c->session;
- struct options *oo = &s->options;
+ struct options *oo = s->options;
struct window *w = wp->window;
struct grid_cell gc;
u_int idx, px, py, i, j, xoff, yoff;
-/* $OpenBSD: server-client.c,v 1.162 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: server-client.c,v 1.163 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
struct timeval tv;
int t;
- if ((t = options_get_number(&s->options, "assume-paste-time")) == 0)
+ if ((t = options_get_number(s->options, "assume-paste-time")) == 0)
return (0);
timersub(&s->activity_time, &s->last_activity_time, &tv);
m->valid = 1;
m->key = key;
- if (!options_get_number(&s->options, "mouse"))
+ if (!options_get_number(s->options, "mouse"))
goto forward;
} else
m->valid = 0;
* If this is a repeating key, start the timer. Otherwise reset
* the client back to the root table.
*/
- xtimeout = options_get_number(&s->options, "repeat-time");
+ xtimeout = options_get_number(s->options, "repeat-time");
if (xtimeout != 0 && bd->can_repeat) {
c->flags |= CLIENT_REPEAT;
* No match, but in the root table. Prefix switches to the prefix table
* and everything else is passed through.
*/
- if (key == options_get_number(&s->options, "prefix") ||
- key == options_get_number(&s->options, "prefix2")) {
+ if (key == options_get_number(s->options, "prefix") ||
+ key == options_get_number(s->options, "prefix2")) {
server_client_key_table(c, "prefix");
server_status_client(c);
return;
int push;
/* Are focus events off? */
- if (!options_get_number(&global_options, "focus-events"))
+ if (!options_get_number(global_options, "focus-events"))
return;
/* Do we need to push the focus state? */
struct window *w = c->session->curw->window;
struct window_pane *wp = w->active;
struct screen *s = wp->screen;
- struct options *oo = &c->session->options;
+ struct options *oo = c->session->options;
int status, mode, o;
if (c->flags & CLIENT_SUSPENDED)
return;
if (c->flags & (CLIENT_REDRAW|CLIENT_STATUS)) {
- if (options_get_number(&s->options, "set-titles"))
+ if (options_get_number(s->options, "set-titles"))
server_client_set_title(c);
if (c->message_string != NULL)
char *title;
struct format_tree *ft;
- template = options_get_string(&s->options, "set-titles-string");
+ template = options_get_string(s->options, "set-titles-string");
ft = format_create();
format_defaults(ft, c, NULL, NULL, NULL);
{
const char *shell;
- shell = options_get_string(&global_s_options, "default-shell");
+ shell = options_get_string(global_s_options, "default-shell");
if (*shell == '\0' || areshell(shell))
shell = _PATH_BSHELL;
proc_send_s(c->peer, MSG_SHELL, shell);
-/* $OpenBSD: server-fn.c,v 1.90 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: server-fn.c,v 1.91 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
long pid;
if (s != NULL) {
- term = options_get_string(&global_options, "default-terminal");
+ term = options_get_string(global_options, "default-terminal");
environ_set(env, "TERM", term);
idx = s->id;
if (c->flags & CLIENT_SUSPENDED)
return;
- cmd = options_get_string(&c->session->options, "lock-command");
+ cmd = options_get_string(c->session->options, "lock-command");
if (strlen(cmd) + 1 > MAX_IMSGSIZE - IMSG_HEADER_SIZE)
return;
server_redraw_session_group(s);
}
- if (options_get_number(&s->options, "renumber-windows")) {
+ if (options_get_number(s->options, "renumber-windows")) {
if ((sg = session_group_find(s)) != NULL) {
TAILQ_FOREACH(target_s, &sg->sessions, gentry)
session_renumber_windows(target_s);
}
if (dstidx == -1)
- dstidx = -1 - options_get_number(&dst->options, "base-index");
+ dstidx = -1 - options_get_number(dst->options, "base-index");
dstwl = session_attach(dst, srcwl->window, dstidx, cause);
if (dstwl == NULL)
return (-1);
wp->fd = -1;
}
- if (options_get_number(&w->options, "remain-on-exit")) {
+ if (options_get_number(w->options, "remain-on-exit")) {
if (old_fd == -1)
return;
screen_write_start(&ctx, wp, &wp->base);
struct client *c;
struct session *s_new;
- if (!options_get_number(&s->options, "detach-on-destroy"))
+ if (!options_get_number(s->options, "detach-on-destroy"))
s_new = server_next_session(s);
else
s_new = NULL;
RB_FOREACH(s, sessions, &sessions) {
if (!(s->flags & SESSION_UNATTACHED))
continue;
- if (options_get_number (&s->options, "destroy-unattached"))
+ if (options_get_number (s->options, "destroy-unattached"))
session_destroy(s);
}
}
struct timeval tv;
int delay;
- delay = options_get_number(&c->session->options, "display-panes-time");
+ delay = options_get_number(c->session->options, "display-panes-time");
tv.tv_sec = delay / 1000;
tv.tv_usec = (delay % 1000) * 1000L;
-/* $OpenBSD: server.c,v 1.144 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: server.c,v 1.145 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
server_client_loop();
- if (!options_get_number(&global_options, "exit-unattached")) {
+ if (!options_get_number(global_options, "exit-unattached")) {
if (!RB_EMPTY(&sessions))
return (0);
}
-/* $OpenBSD: session.c,v 1.55 2015/09/01 18:50:16 nicm Exp $ */
+/* $OpenBSD: session.c,v 1.56 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
TAILQ_INIT(&s->lastw);
RB_INIT(&s->windows);
- options_init(&s->options, &global_s_options);
environ_init(&s->environ);
if (env != NULL)
environ_copy(env, &s->environ);
+ s->options = options_create(global_s_options);
s->tio = NULL;
if (tio != NULL) {
log_debug("session %s freed (%d references)", s->name, s->references);
if (s->references == 0) {
+ environ_free(&s->environ);
+ options_free(s->options);
+
free(s->name);
free(s);
}
event_del(&s->lock_timer);
session_group_remove(s);
- environ_free(&s->environ);
- options_free(&s->options);
while (!TAILQ_EMPTY(&s->lastw))
winlink_stack_remove(&s->lastw, TAILQ_FIRST(&s->lastw));
if (~s->flags & SESSION_UNATTACHED) {
timerclear(&tv);
- tv.tv_sec = options_get_number(&s->options, "lock-after-time");
+ tv.tv_sec = options_get_number(s->options, "lock-after-time");
if (tv.tv_sec != 0)
evtimer_add(&s->lock_timer, &tv);
}
environ_copy(&s->environ, &env);
server_fill_environ(s, &env);
- shell = options_get_string(&s->options, "default-shell");
+ shell = options_get_string(s->options, "default-shell");
if (*shell == '\0' || areshell(shell))
shell = _PATH_BSHELL;
- hlimit = options_get_number(&s->options, "history-limit");
+ hlimit = options_get_number(s->options, "history-limit");
w = window_create(name, argc, argv, path, shell, cwd, &env, s->tio,
s->sx, s->sy, hlimit, cause);
if (w == NULL) {
notify_window_linked(s, w);
environ_free(&env);
- if (options_get_number(&s->options, "set-remain-on-exit"))
- options_set_number(&w->options, "remain-on-exit", 1);
+ if (options_get_number(s->options, "set-remain-on-exit"))
+ options_set_number(w->options, "remain-on-exit", 1);
session_group_synchronize_from(s);
return (wl);
RB_INIT(&s->windows);
/* Start renumbering from the base-index if it's set. */
- new_idx = options_get_number(&s->options, "base-index");
+ new_idx = options_get_number(s->options, "base-index");
new_curw_idx = 0;
/* Go through the winlinks and assign new indexes. */
-/* $OpenBSD: status.c,v 1.136 2015/10/20 21:12:09 nicm Exp $ */
+/* $OpenBSD: status.c,v 1.137 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
const char *home, *history_file;
char *path;
- history_file = options_get_string(&global_options, "history-file");
+ history_file = options_get_string(global_options, "history-file");
if (*history_file == '\0')
return (NULL);
if (*history_file == '/')
c->flags |= CLIENT_STATUS;
timerclear(&tv);
- tv.tv_sec = options_get_number(&s->options, "status-interval");
+ tv.tv_sec = options_get_number(s->options, "status-interval");
if (tv.tv_sec != 0)
evtimer_add(&c->status_timer, &tv);
else
evtimer_set(&c->status_timer, status_timer_callback, c);
- if (s != NULL && options_get_number(&s->options, "status"))
+ if (s != NULL && options_get_number(s->options, "status"))
status_timer_callback(-1, 0, c);
}
{
struct session *s = c->session;
- if (!options_get_number(&s->options, "status"))
+ if (!options_get_number(s->options, "status"))
return (-1);
- if (options_get_number(&s->options, "status-position") == 0)
+ if (options_get_number(s->options, "status-position") == 0)
return (0);
return (c->tty.sy - 1);
}
char *left;
size_t leftlen;
- style_apply_update(gc, &s->options, "status-left-style");
+ style_apply_update(gc, s->options, "status-left-style");
- template = options_get_string(&s->options, "status-left");
+ template = options_get_string(s->options, "status-left");
left = status_replace(c, NULL, template, t);
- *size = options_get_number(&s->options, "status-left-length");
+ *size = options_get_number(s->options, "status-left-length");
leftlen = screen_write_cstrlen(utf8flag, "%s", left);
if (leftlen < *size)
*size = leftlen;
char *right;
size_t rightlen;
- style_apply_update(gc, &s->options, "status-right-style");
+ style_apply_update(gc, s->options, "status-right-style");
- template = options_get_string(&s->options, "status-right");
+ template = options_get_string(s->options, "status-right");
right = status_replace(c, NULL, template, t);
- *size = options_get_number(&s->options, "status-right-length");
+ *size = options_get_number(s->options, "status-right-length");
rightlen = screen_write_cstrlen(utf8flag, "%s", right);
if (rightlen < *size)
*size = rightlen;
x += c->wlmouse;
RB_FOREACH(wl, winlinks, &s->windows) {
- oo = &wl->window->options;
+ oo = wl->window->options;
len = strlen(options_get_string(oo, "window-status-separator"));
if (x < wl->status_width)
int larrow, rarrow, utf8flag;
/* No status line? */
- if (c->tty.sy == 0 || !options_get_number(&s->options, "status"))
+ if (c->tty.sy == 0 || !options_get_number(s->options, "status"))
return (1);
left = right = NULL;
larrow = rarrow = 0;
t = time(NULL);
/* Set up default colour. */
- style_apply(&stdgc, &s->options, "status-style");
+ style_apply(&stdgc, s->options, "status-style");
/* Create the target screen. */
memcpy(&old_status, &c->status, sizeof old_status);
goto out;
/* Get UTF-8 flag. */
- utf8flag = options_get_number(&s->options, "status-utf8");
+ utf8flag = options_get_number(s->options, "status-utf8");
/* Work out left and right strings. */
memcpy(&lgc, &stdgc, sizeof lgc);
if (wl == s->curw)
wloffset = wlwidth;
- oo = &wl->window->options;
+ oo = wl->window->options;
sep = options_get_string(oo, "window-status-separator");
seplen = screen_write_strlen(utf8flag, "%s", sep);
wlwidth += wl->status_width + seplen;
screen_write_cnputs(&ctx,
-1, &wl->status_cell, utf8flag, "%s", wl->status_text);
- oo = &wl->window->options;
+ oo = wl->window->options;
sep = options_get_string(oo, "window-status-separator");
screen_write_nputs(&ctx, -1, &stdgc, utf8flag, "%s", sep);
}
else
wloffset = 0;
if (wlwidth < wlavailable) {
- switch (options_get_number(&s->options, "status-justify")) {
+ switch (options_get_number(s->options, "status-justify")) {
case 1: /* centred */
wloffset += (wlavailable - wlwidth) / 2;
break;
status_print(struct client *c, struct winlink *wl, time_t t,
struct grid_cell *gc)
{
- struct options *oo = &wl->window->options;
+ struct options *oo = wl->window->options;
struct session *s = c->session;
const char *fmt;
char *text;
int delay;
u_int first, limit;
- limit = options_get_number(&global_options, "message-limit");
+ limit = options_get_number(global_options, "message-limit");
status_prompt_clear(c);
status_message_clear(c);
free(msg);
}
- delay = options_get_number(&c->session->options, "display-time");
+ delay = options_get_number(c->session->options, "display-time");
tv.tv_sec = delay / 1000;
tv.tv_usec = (delay % 1000) * 1000L;
memcpy(&old_status, &c->status, sizeof old_status);
screen_init(&c->status, c->tty.sx, 1, 0);
- utf8flag = options_get_number(&s->options, "status-utf8");
+ utf8flag = options_get_number(s->options, "status-utf8");
len = screen_write_strlen(utf8flag, "%s", c->message_string);
if (len > c->tty.sx)
len = c->tty.sx;
- style_apply(&gc, &s->options, "message-style");
+ style_apply(&gc, s->options, "message-style");
screen_write_start(&ctx, NULL, &c->status);
c->prompt_flags = flags;
- keys = options_get_number(&c->session->options, "status-keys");
+ keys = options_get_number(c->session->options, "status-keys");
if (keys == MODEKEY_EMACS)
mode_key_init(&c->prompt_mdata, &mode_key_tree_emacs_edit);
else
memcpy(&old_status, &c->status, sizeof old_status);
screen_init(&c->status, c->tty.sx, 1, 0);
- utf8flag = options_get_number(&s->options, "status-utf8");
+ utf8flag = options_get_number(s->options, "status-utf8");
len = screen_write_strlen(utf8flag, "%s", c->prompt_string);
if (len > c->tty.sx)
/* Change colours for command mode. */
if (c->prompt_mdata.mode == 1)
- style_apply(&gc, &s->options, "message-command-style");
+ style_apply(&gc, s->options, "message-command-style");
else
- style_apply(&gc, &s->options, "message-style");
+ style_apply(&gc, s->options, "message-style");
screen_write_start(&ctx, NULL, &c->status);
status_prompt_key(struct client *c, int key)
{
struct session *sess = c->session;
- struct options *oo = &sess->options;
+ struct options *oo = sess->options;
struct paste_buffer *pb;
char *s, *first, *last, word[64], swapc;
const char *histstr, *bufdata, *wsep = NULL;
-/* $OpenBSD: tmux.c,v 1.147 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: tmux.c,v 1.148 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
extern char *malloc_options;
#endif
-struct options global_options; /* server options */
-struct options global_s_options; /* session options */
-struct options global_w_options; /* window options */
+struct options *global_options; /* server options */
+struct options *global_s_options; /* session options */
+struct options *global_w_options; /* window options */
struct environ global_environ;
char *shell_cmd;
if (getcwd(tmp, sizeof tmp) != NULL)
environ_set(&global_environ, "PWD", tmp);
- options_init(&global_options, NULL);
- options_table_populate_tree(server_options_table, &global_options);
+ global_options = options_create(NULL);
+ options_table_populate_tree(server_options_table, global_options);
- options_init(&global_s_options, NULL);
- options_table_populate_tree(session_options_table, &global_s_options);
- options_set_string(&global_s_options, "default-shell", "%s",
- getshell());
+ global_s_options = options_create(NULL);
+ options_table_populate_tree(session_options_table, global_s_options);
+ options_set_string(global_s_options, "default-shell", "%s", getshell());
- options_init(&global_w_options, NULL);
- options_table_populate_tree(window_options_table, &global_w_options);
+ global_w_options = options_create(NULL);
+ options_table_populate_tree(window_options_table, global_w_options);
/* Enable UTF-8 if the first client is on UTF-8 terminal. */
if (flags & CLIENT_UTF8) {
- options_set_number(&global_s_options, "status-utf8", 1);
- options_set_number(&global_s_options, "mouse-utf8", 1);
- options_set_number(&global_w_options, "utf8", 1);
+ options_set_number(global_s_options, "status-utf8", 1);
+ options_set_number(global_s_options, "mouse-utf8", 1);
+ options_set_number(global_w_options, "utf8", 1);
}
/* Override keys to vi if VISUAL or EDITOR are set. */
keys = MODEKEY_VI;
else
keys = MODEKEY_EMACS;
- options_set_number(&global_s_options, "status-keys", keys);
- options_set_number(&global_w_options, "mode-keys", keys);
+ options_set_number(global_s_options, "status-keys", keys);
+ options_set_number(global_w_options, "mode-keys", keys);
}
/*
-/* $OpenBSD: tmux.h,v 1.566 2015/10/27 13:23:24 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.567 2015/10/27 15:58:42 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
RB_ENTRY(options_entry) entry;
};
-struct options {
- RB_HEAD(options_tree, options_entry) tree;
- struct options *parent;
-};
-
/* Scheduled job. */
struct job {
enum {
RB_HEAD(window_pane_tree, window_pane);
/* Window structure. */
+struct options;
struct window {
u_int id;
#define WINDOW_FORCEHEIGHT 0x4000
#define WINDOW_ALERTFLAGS (WINDOW_BELL|WINDOW_ACTIVITY|WINDOW_SILENCE)
- struct options options;
+ struct options *options;
u_int references;
struct winlink_stack lastw;
struct winlinks windows;
- struct options options;
+ struct options *options;
#define SESSION_UNATTACHED 0x1 /* not attached to any clients */
int flags;
#define CMD_BUFFER_USAGE "[-b buffer-name]"
/* tmux.c */
-extern struct options global_options;
-extern struct options global_s_options;
-extern struct options global_w_options;
+extern struct options *global_options;
+extern struct options *global_s_options;
+extern struct options *global_w_options;
extern struct environ global_environ;
extern char *shell_cmd;
extern int debug_level;
void notify_session_closed(struct session *);
/* options.c */
-int options_cmp(struct options_entry *, struct options_entry *);
-RB_PROTOTYPE(options_tree, options_entry, entry, options_cmp);
-void options_init(struct options *, struct options *);
+struct options *options_create(struct options *);
void options_free(struct options *);
+struct options_entry *options_first(struct options *);
+struct options_entry *options_next(struct options_entry *);
struct options_entry *options_find1(struct options *, const char *);
struct options_entry *options_find(struct options *, const char *);
void options_remove(struct options *, const char *);
-/* $OpenBSD: tty-keys.c,v 1.74 2015/09/02 17:37:54 nicm Exp $ */
+/* $OpenBSD: tty-keys.c,v 1.75 2015/10/27 15:58:43 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
}
/* Get the time period. */
- delay = options_get_number(&global_options, "escape-time");
+ delay = options_get_number(global_options, "escape-time");
tv.tv_sec = delay / 1000;
tv.tv_usec = (delay % 1000) * 1000L;
-/* $OpenBSD: tty-term.c,v 1.40 2015/09/24 07:02:18 nicm Exp $ */
+/* $OpenBSD: tty-term.c,v 1.41 2015/10/27 15:58:43 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
}
/* Apply terminal overrides. */
- s = options_get_string(&global_options, "terminal-overrides");
+ s = options_get_string(global_options, "terminal-overrides");
tty_term_override(term, s);
/* Delete curses data. */
-/* $OpenBSD: tty.c,v 1.190 2015/10/23 16:30:15 nicm Exp $ */
+/* $OpenBSD: tty.c,v 1.191 2015/10/27 15:58:43 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
tty_puts(tty, "\033[?1000l\033[?1002l\033[?1006l\033[?1005l");
if (tty_term_flag(tty->term, TTYC_XT)) {
- if (options_get_number(&global_options, "focus-events")) {
+ if (options_get_number(global_options, "focus-events")) {
tty->flags |= TTY_FOCUS;
tty_puts(tty, "\033[?1004h");
}
const char *s;
if (tty_term_has(tty->term, TTYC_SITM)) {
- s = options_get_string(&global_options, "default-terminal");
+ s = options_get_string(global_options, "default-terminal");
if (strcmp(s, "screen") != 0 && strncmp(s, "screen-", 7) != 0) {
tty_putcode(tty, TTYC_SITM);
return;
return;
pgc = &wp->colgc;
- agc = options_get_style(&wp->window->options, "window-active-style");
- wgc = options_get_style(&wp->window->options, "window-style");
+ agc = options_get_style(wp->window->options, "window-active-style");
+ wgc = options_get_style(wp->window->options, "window-style");
if (gc->fg == 8 && !(gc->flags & GRID_FLAG_FG256)) {
if (pgc->fg != 8 || (pgc->flags & GRID_FLAG_FG256)) {
-/* $OpenBSD: window-choose.c,v 1.66 2015/08/28 12:25:42 nicm Exp $ */
+/* $OpenBSD: window-choose.c,v 1.67 2015/10/27 15:58:43 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0);
s->mode &= ~MODE_CURSOR;
- keys = options_get_number(&wp->window->options, "mode-keys");
+ keys = options_get_number(wp->window->options, "mode-keys");
if (keys == MODEKEY_EMACS)
mode_key_init(&data->mdata, &mode_key_tree_emacs_choice);
else
{
struct window_choose_mode_data *data = wp->modedata;
struct window_choose_mode_item *item;
- struct options *oo = &wp->window->options;
+ struct options *oo = wp->window->options;
struct screen *s = &data->screen;
struct grid_cell gc;
size_t last, xoff = 0;
fatalx("called before callback assigned");
last = screen_size_y(s) - 1;
- utf8flag = options_get_number(&wp->window->options, "utf8");
+ utf8flag = options_get_number(wp->window->options, "utf8");
memcpy(&gc, &grid_default_cell, sizeof gc);
if (data->selected == data->top + py)
style_apply(&gc, oo, "mode-style");
-/* $OpenBSD: window-clock.c,v 1.13 2015/09/14 13:22:02 nicm Exp $ */
+/* $OpenBSD: window-clock.c,v 1.14 2015/10/27 15:58:43 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
struct tm *tm;
u_int i, j, x, y, idx;
- colour = options_get_number(&wp->window->options, "clock-mode-colour");
- style = options_get_number(&wp->window->options, "clock-mode-style");
+ colour = options_get_number(wp->window->options, "clock-mode-colour");
+ style = options_get_number(wp->window->options, "clock-mode-style");
screen_write_start(&ctx, NULL, s);
-/* $OpenBSD: window-copy.c,v 1.135 2015/10/23 16:02:21 nicm Exp $ */
+/* $OpenBSD: window-copy.c,v 1.136 2015/10/27 15:58:43 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
s = &data->screen;
screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0);
- keys = options_get_number(&wp->window->options, "mode-keys");
+ keys = options_get_number(wp->window->options, "mode-keys");
if (keys == MODEKEY_EMACS)
mode_key_init(&data->mdata, &mode_key_tree_emacs_copy);
else
if (backing == &wp->base)
return;
- utf8flag = options_get_number(&wp->window->options, "utf8");
+ utf8flag = options_get_number(wp->window->options, "utf8");
memcpy(&gc, &grid_default_cell, sizeof gc);
old_hsize = screen_hsize(data->backing);
break;
case MODEKEYCOPY_NEXTWORD:
word_separators =
- options_get_string(&sess->options, "word-separators");
+ options_get_string(sess->options, "word-separators");
for (; np != 0; np--)
window_copy_cursor_next_word(wp, word_separators);
break;
case MODEKEYCOPY_NEXTWORDEND:
word_separators =
- options_get_string(&sess->options, "word-separators");
+ options_get_string(sess->options, "word-separators");
for (; np != 0; np--)
window_copy_cursor_next_word_end(wp, word_separators);
break;
break;
case MODEKEYCOPY_PREVIOUSWORD:
word_separators =
- options_get_string(&sess->options, "word-separators");
+ options_get_string(sess->options, "word-separators");
for (; np != 0; np--)
window_copy_cursor_previous_word(wp, word_separators);
break;
return;
input_on:
- keys = options_get_number(&wp->window->options, "mode-keys");
+ keys = options_get_number(wp->window->options, "mode-keys");
if (keys == MODEKEY_EMACS)
mode_key_init(&data->mdata, &mode_key_tree_emacs_edit);
else
return;
input_off:
- keys = options_get_number(&wp->window->options, "mode-keys");
+ keys = options_get_number(wp->window->options, "mode-keys");
if (keys == MODEKEY_EMACS)
mode_key_init(&data->mdata, &mode_key_tree_emacs_copy);
else
if (*searchstr == '\0')
return;
- utf8flag = options_get_number(&wp->window->options, "utf8");
- wrapflag = options_get_number(&wp->window->options, "wrap-search");
+ utf8flag = options_get_number(wp->window->options, "utf8");
+ wrapflag = options_get_number(wp->window->options, "wrap-search");
searchlen = screen_write_strlen(utf8flag, "%s", searchstr);
screen_init(&ss, searchlen, 1, 0);
if (*searchstr == '\0')
return;
- utf8flag = options_get_number(&wp->window->options, "utf8");
- wrapflag = options_get_number(&wp->window->options, "wrap-search");
+ utf8flag = options_get_number(wp->window->options, "utf8");
+ wrapflag = options_get_number(wp->window->options, "wrap-search");
searchlen = screen_write_strlen(utf8flag, "%s", searchstr);
screen_init(&ss, searchlen, 1, 0);
{
struct window_copy_mode_data *data = wp->modedata;
struct screen *s = &data->screen;
- struct options *oo = &wp->window->options;
+ struct options *oo = wp->window->options;
struct grid_cell gc;
char hdr[512];
size_t last, xoff = 0, size = 0, limit;
{
struct window_copy_mode_data *data = wp->modedata;
struct screen *s = &data->screen;
- struct options *oo = &wp->window->options;
+ struct options *oo = wp->window->options;
struct grid_cell gc;
u_int sx, sy, ty, cy;
* bottom-right-most, regardless of copy direction. If it is vi, also
* keep bottom-right-most character.
*/
- keys = options_get_number(&wp->window->options, "mode-keys");
+ keys = options_get_number(wp->window->options, "mode-keys");
if (data->rectflag) {
/*
* Need to ignore the column with the cursor in it, which for
{
struct screen_write_ctx ctx;
- if (options_get_number(&global_options, "set-clipboard")) {
+ if (options_get_number(global_options, "set-clipboard")) {
screen_write_start(&ctx, wp, NULL);
screen_write_setselection(&ctx, buf, len);
screen_write_stop(&ctx);
if (buf == NULL)
return;
- if (options_get_number(&global_options, "set-clipboard")) {
+ if (options_get_number(global_options, "set-clipboard")) {
screen_write_start(&ctx, wp, NULL);
screen_write_setselection(&ctx, buf, len);
screen_write_stop(&ctx);
const char *separators)
{
struct window_copy_mode_data *data = wp->modedata;
- struct options *oo = &wp->window->options;
+ struct options *oo = wp->window->options;
struct screen *back_s = data->backing;
u_int px, py, xx, yy;
int keys, expected = 1;
-/* $OpenBSD: window.c,v 1.145 2015/09/14 11:34:50 nicm Exp $ */
+/* $OpenBSD: window.c,v 1.146 2015/10/27 15:58:43 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
w->sx = sx;
w->sy = sy;
- options_init(&w->options, &global_w_options);
+ w->options = options_create(global_w_options);
w->references = 0;
w->active = TAILQ_FIRST(&w->panes);
if (name != NULL) {
w->name = xstrdup(name);
- options_set_number(&w->options, "automatic-rename", 0);
+ options_set_number(w->options, "automatic-rename", 0);
} else
w->name = default_window_name(w);
if (event_initialized(&w->alerts_timer))
evtimer_del(&w->alerts_timer);
- options_free(&w->options);
+ options_free(w->options);
window_destroy_panes(w);
* active or inactive pane do not have a custom style, they will need
* to be redrawn.
*/
- agc = options_get_style(&w->options, "window-active-style");
- wgc = options_get_style(&w->options, "window-style");
+ agc = options_get_style(w->options, "window-active-style");
+ wgc = options_get_style(w->options, "window-style");
if (style_equal(agc, wgc))
return;
if (style_equal(&grid_default_cell, &w->active->colgc))
struct window_pane *wp;
u_int n;
- n = options_get_number(&w->options, "pane-base-index");
+ n = options_get_number(w->options, "pane-base-index");
TAILQ_FOREACH(wp, &w->panes, entry) {
if (n == idx)
return (wp);
struct window_pane *wq;
struct window *w = wp->window;
- *i = options_get_number(&w->options, "pane-base-index");
+ *i = options_get_number(w->options, "pane-base-index");
TAILQ_FOREACH(wq, &w->panes, entry) {
if (wp == wq) {
return (0);
if (wp->saved_grid != NULL)
return;
- if (!options_get_number(&wp->window->options, "alternate-screen"))
+ if (!options_get_number(wp->window->options, "alternate-screen"))
return;
sx = screen_size_x(s);
sy = screen_size_y(s);
if (wp->saved_grid == NULL)
return;
- if (!options_get_number(&wp->window->options, "alternate-screen"))
+ if (!options_get_number(wp->window->options, "alternate-screen"))
return;
sx = screen_size_x(s);
sy = screen_size_y(s);
if (KEYC_IS_MOUSE(key))
return;
- if (options_get_number(&wp->window->options, "synchronize-panes")) {
+ if (options_get_number(wp->window->options, "synchronize-panes")) {
TAILQ_FOREACH(wp2, &wp->window->panes, entry) {
if (wp2 == wp || wp2->mode != NULL)
continue;