summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2009-09-21 14:46:48 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2009-09-21 14:46:48 +0000
commit246df1c63ff3d86e8277eccfea3f3a999f2f4171 (patch)
tree84f8197637ee362eefab3181f8f64d1b23608702
parentcb849aca5e5c27b2383cb38bb4d0ab53d24765f8 (diff)
Move common code from show-options and show-window-options into a function.
-rw-r--r--usr.bin/tmux/cmd-show-options.c48
-rw-r--r--usr.bin/tmux/cmd-show-window-options.c48
-rw-r--r--usr.bin/tmux/options-cmd.c42
-rw-r--r--usr.bin/tmux/tmux.h4
4 files changed, 56 insertions, 86 deletions
diff --git a/usr.bin/tmux/cmd-show-options.c b/usr.bin/tmux/cmd-show-options.c
index b3bd820f04d..ae92f60a4f7 100644
--- a/usr.bin/tmux/cmd-show-options.c
+++ b/usr.bin/tmux/cmd-show-options.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-show-options.c,v 1.5 2009/07/26 12:58:44 nicm Exp $ */
+/* $OpenBSD: cmd-show-options.c,v 1.6 2009/09/21 14:46:47 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -46,9 +46,9 @@ cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx)
struct cmd_target_data *data = self->data;
struct session *s;
struct options *oo;
+ struct options_entry *o;
const struct set_option_entry *entry;
- char *vs;
- long long vn;
+ const char *optval;
if (data->chflags & CMD_CHFLAG('g'))
oo = &global_s_options;
@@ -59,46 +59,10 @@ cmd_show_options_exec(struct cmd *self, struct cmd_ctx *ctx)
}
for (entry = set_option_table; entry->name != NULL; entry++) {
- if (options_find1(oo, entry->name) == NULL)
+ if ((o = options_find1(oo, entry->name)) == NULL)
continue;
-
- switch (entry->type) {
- case SET_OPTION_STRING:
- vs = options_get_string(oo, entry->name);
- ctx->print(ctx, "%s \"%s\"", entry->name, vs);
- break;
- case SET_OPTION_NUMBER:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %lld", entry->name, vn);
- break;
- case SET_OPTION_KEY:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, key_string_lookup_key(vn));
- break;
- case SET_OPTION_COLOUR:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, colour_tostring(vn));
- break;
- case SET_OPTION_ATTRIBUTES:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, attributes_tostring(vn));
- break;
- case SET_OPTION_FLAG:
- vn = options_get_number(oo, entry->name);
- if (vn)
- ctx->print(ctx, "%s on", entry->name);
- else
- ctx->print(ctx, "%s off", entry->name);
- break;
- case SET_OPTION_CHOICE:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, entry->choices[vn]);
- break;
- }
+ optval = set_option_print(entry, o);
+ ctx->print(ctx, "%s %s", entry->name, optval);
}
return (0);
diff --git a/usr.bin/tmux/cmd-show-window-options.c b/usr.bin/tmux/cmd-show-window-options.c
index 7674f20305a..66ae1573a83 100644
--- a/usr.bin/tmux/cmd-show-window-options.c
+++ b/usr.bin/tmux/cmd-show-window-options.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd-show-window-options.c,v 1.5 2009/07/26 12:58:44 nicm Exp $ */
+/* $OpenBSD: cmd-show-window-options.c,v 1.6 2009/09/21 14:46:47 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -46,9 +46,9 @@ cmd_show_window_options_exec(struct cmd *self, struct cmd_ctx *ctx)
struct cmd_target_data *data = self->data;
struct winlink *wl;
struct options *oo;
+ struct options_entry *o;
const struct set_option_entry *entry;
- char *vs;
- long long vn;
+ const char *optval;
if (data->chflags & CMD_CHFLAG('g'))
oo = &global_w_options;
@@ -59,46 +59,10 @@ cmd_show_window_options_exec(struct cmd *self, struct cmd_ctx *ctx)
}
for (entry = set_window_option_table; entry->name != NULL; entry++) {
- if (options_find1(oo, entry->name) == NULL)
+ if ((o = options_find1(oo, entry->name)) == NULL)
continue;
-
- switch (entry->type) {
- case SET_OPTION_STRING:
- vs = options_get_string(oo, entry->name);
- ctx->print(ctx, "%s \"%s\"", entry->name, vs);
- break;
- case SET_OPTION_NUMBER:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %lld", entry->name, vn);
- break;
- case SET_OPTION_KEY:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, key_string_lookup_key(vn));
- break;
- case SET_OPTION_COLOUR:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, colour_tostring(vn));
- break;
- case SET_OPTION_ATTRIBUTES:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, attributes_tostring(vn));
- break;
- case SET_OPTION_FLAG:
- vn = options_get_number(oo, entry->name);
- if (vn)
- ctx->print(ctx, "%s on", entry->name);
- else
- ctx->print(ctx, "%s off", entry->name);
- break;
- case SET_OPTION_CHOICE:
- vn = options_get_number(oo, entry->name);
- ctx->print(ctx, "%s %s",
- entry->name, entry->choices[vn]);
- break;
- }
+ optval = set_option_print(entry, o);
+ ctx->print(ctx, "%s %s", entry->name, optval);
}
return (0);
diff --git a/usr.bin/tmux/options-cmd.c b/usr.bin/tmux/options-cmd.c
index 747f8219756..4b3ab171878 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.2 2009/08/04 18:45:57 nicm Exp $ */
+/* $OpenBSD: options-cmd.c,v 1.3 2009/09/21 14:46:47 nicm Exp $ */
/*
* Copyright (c) 2008 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -23,6 +23,46 @@
#include "tmux.h"
+const char *
+set_option_print(const struct set_option_entry *entry, struct options_entry *o)
+{
+ static char out[BUFSIZ];
+ const char *s;
+
+ *out = '\0';
+ switch (entry->type) {
+ case SET_OPTION_STRING:
+ xsnprintf(out, sizeof out, "\"%s\"", o->str);
+ break;
+ case SET_OPTION_NUMBER:
+ xsnprintf(out, sizeof out, "%lld", o->num);
+ break;
+ case SET_OPTION_KEY:
+ s = key_string_lookup_key(o->num);
+ xsnprintf(out, sizeof out, "%s", s);
+ break;
+ case SET_OPTION_COLOUR:
+ s = colour_tostring(o->num);
+ xsnprintf(out, sizeof out, "%s", s);
+ break;
+ case SET_OPTION_ATTRIBUTES:
+ s = attributes_tostring(o->num);
+ xsnprintf(out, sizeof out, "%s", s);
+ break;
+ case SET_OPTION_FLAG:
+ if (o->num)
+ strlcpy(out, "on", sizeof out);
+ else
+ strlcpy(out, "off", sizeof out);
+ break;
+ case SET_OPTION_CHOICE:
+ s = entry->choices[o->num];
+ xsnprintf(out, sizeof out, "%s", s);
+ break;
+ }
+ return (out);
+}
+
void
set_option_string(struct cmd_ctx *ctx, struct options *oo,
const struct set_option_entry *entry, char *value, int append)
diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h
index 03bfd32dc6b..651eebdb850 100644
--- a/usr.bin/tmux/tmux.h
+++ b/usr.bin/tmux/tmux.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.109 2009/09/21 07:00:09 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.110 2009/09/21 14:46:47 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -1238,6 +1238,8 @@ void tty_keys_free(struct tty *);
int tty_keys_next(struct tty *, int *, u_char *);
/* options-cmd.c */
+const char *set_option_print(
+ const struct set_option_entry *, struct options_entry *);
void set_option_string(struct cmd_ctx *,
struct options *, const struct set_option_entry *, char *, int);
void set_option_number(struct cmd_ctx *,