+ char *quote_s = parse_string (opt (o, "quote", "\""));
+ int quote = quote_s[0];
+ free (quote_s);
+
+ char *separator = parse_string (opt (o, "separator", ","));
+
+ struct csv_driver *csv = xmalloc (sizeof *csv);
+ *csv = (struct csv_driver) {
+ .driver = {
+ .class = &csv_driver_class,
+ .name = xstrdup (fh_get_file_name (fh)),
+ .device_type = device_type,
+ },
+ .separator = separator,
+ .quote = quote,
+ .quote_set = xasprintf ("\n\r\t%s%c", separator, quote),
+ .titles = parse_boolean (opt (o, "titles", "true")),
+ .captions = parse_boolean (opt (o, "captions", "true")),
+ .handle = fh,
+ .file = file,
+ };
+
+ return &csv->driver;