summaryrefslogtreecommitdiffstats
path: root/options.c
diff options
context:
space:
mode:
authornicm <nicm>2021-10-14 13:19:01 +0000
committernicm <nicm>2021-10-14 13:19:01 +0000
commitadd20637f256c0118d3c687d5d1446612d14389a (patch)
treecf546997fdd9cb96e0ace7dd385eb127d67aa448 /options.c
parentd0ab1a837a0ab3e26fe7195f14672f6feb43c4c4 (diff)
Add popup-border-lines option to set popup line style, from Alexis
Hildebrandt, GitHub issue 2930.
Diffstat (limited to 'options.c')
-rw-r--r--options.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/options.c b/options.c
index e32db774..65263fd0 100644
--- a/options.c
+++ b/options.c
@@ -989,28 +989,39 @@ options_from_string_flag(struct options *oo, const char *name,
return (0);
}
+int
+options_find_choice(const struct options_table_entry *oe, const char *value,
+ char **cause)
+{
+ const char **cp;
+ int n = 0, choice = -1;
+
+ for (cp = oe->choices; *cp != NULL; cp++) {
+ if (strcmp(*cp, value) == 0)
+ choice = n;
+ n++;
+ }
+ if (choice == -1) {
+ xasprintf(cause, "unknown value: %s", value);
+ return (-1);
+ }
+ return (choice);
+}
+
static int
options_from_string_choice(const struct options_table_entry *oe,
struct options *oo, const char *name, const char *value, char **cause)
{
- const char **cp;
- int n, choice = -1;
+ int choice = -1;
if (value == NULL) {
choice = options_get_number(oo, name);
if (choice < 2)
choice = !choice;
} else {
- n = 0;
- for (cp = oe->choices; *cp != NULL; cp++) {
- if (strcmp(*cp, value) == 0)
- choice = n;
- n++;
- }
- if (choice == -1) {
- xasprintf(cause, "unknown value: %s", value);
+ choice = options_find_choice(oe, value, cause);
+ if (choice < 0)
return (-1);
- }
}
options_set_number(oo, name, choice);
return (0);