diff options
Diffstat (limited to 'options-table.c')
-rw-r--r-- | options-table.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/options-table.c b/options-table.c index 8f525161..57896fc5 100644 --- a/options-table.c +++ b/options-table.c @@ -731,3 +731,36 @@ options_table_print_entry( } return (out); } + +/* Find an option. */ +int +options_table_find( + const char *optstr, const struct options_table_entry **table, + const struct options_table_entry **oe) +{ + static const struct options_table_entry *tables[] = { + server_options_table, + window_options_table, + session_options_table + }; + const struct options_table_entry *oe_loop; + u_int i; + + for (i = 0; i < nitems(tables); i++) { + for (oe_loop = tables[i]; oe_loop->name != NULL; oe_loop++) { + if (strncmp(oe_loop->name, optstr, strlen(optstr)) != 0) + continue; + + /* If already found, ambiguous. */ + if (*oe != NULL) + return (-1); + *oe = oe_loop; + *table = tables[i]; + + /* Bail now if an exact match. */ + if (strcmp((*oe)->name, optstr) == 0) + break; + } + } + return (0); +} |