From 6706543a7b6222b4ce0802e898d48cdb581af7c5 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 25 Nov 2018 16:58:02 -0800 Subject: [PATCH] driver: New function output_driver_parse_option(). This moves this function out of terminal-opts.c so that other code can use it too. --- src/output/driver.c | 23 +++++++++++++++++++++++ src/output/driver.h | 2 ++ src/ui/terminal/terminal-opts.c | 27 +-------------------------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/output/driver.c b/src/output/driver.c index 653aa8d9c3..f2d581cfe4 100644 --- a/src/output/driver.c +++ b/src/output/driver.c @@ -38,6 +38,7 @@ #include "output/output-item.h" #include "output/text-item.h" +#include "gl/error.h" #include "gl/xalloc.h" #include "gl/xmemdup0.h" @@ -403,3 +404,25 @@ output_driver_create (struct string_map *options) return driver; } + +void +output_driver_parse_option (const char *option, struct string_map *options) +{ + const char *equals = strchr (option, '='); + if (equals == NULL) + { + error (0, 0, _("%s: output option missing `='"), option); + return; + } + + char *key = xmemdup0 (option, equals - option); + if (string_map_contains (options, key)) + { + error (0, 0, _("%s: output option specified more than once"), key); + free (key); + return; + } + + char *value = xmemdup0 (equals + 1, strlen (equals + 1)); + string_map_insert_nocopy (options, key, value); +} diff --git a/src/output/driver.h b/src/output/driver.h index bc2b52183f..53dfde8b84 100644 --- a/src/output/driver.h +++ b/src/output/driver.h @@ -31,6 +31,8 @@ void output_engine_pop (void); void output_submit (struct output_item *); void output_flush (void); +void output_driver_parse_option (const char *option, + struct string_map *options); struct output_driver *output_driver_create (struct string_map *options); bool output_driver_is_registered (const struct output_driver *); diff --git a/src/ui/terminal/terminal-opts.c b/src/ui/terminal/terminal-opts.c index 4464296498..cd58f81e94 100644 --- a/src/ui/terminal/terminal-opts.c +++ b/src/ui/terminal/terminal-opts.c @@ -112,31 +112,6 @@ register_output_driver (struct terminal_opts *to) } } -static void -parse_output_option (struct terminal_opts *to, const char *option) -{ - const char *equals; - char *key, *value; - - equals = strchr (option, '='); - if (equals == NULL) - { - error (0, 0, _("%s: output option missing `='"), option); - return; - } - - key = xmemdup0 (option, equals - option); - if (string_map_contains (&to->options, key)) - { - error (0, 0, _("%s: output option specified more than once"), key); - free (key); - return; - } - - value = xmemdup0 (equals + 1, strlen (equals + 1)); - string_map_insert_nocopy (&to->options, key, value); -} - static char * get_supported_formats (void) { @@ -235,7 +210,7 @@ terminal_option_callback (int id, void *to_) break; case OPT_OUTPUT_OPTION: - parse_output_option (to, optarg); + output_driver_parse_option (optarg, &to->options); break; case OPT_NO_OUTPUT: -- 2.30.2