driver: New function output_driver_parse_option().
[pspp] / src / output / driver.c
index 653aa8d9c30031e86d271ce6d7734738aad9024e..f2d581cfe4558d5e1171b937f7f7ad72eb12bbeb 100644 (file)
@@ -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);
+}