int n_items; /* Number of items output so far. */
};
+static const struct output_driver_class csv_driver_class;
+
static struct csv_driver *
csv_driver_cast (struct output_driver *driver)
{
- assert (driver->class == &csv_class);
+ assert (driver->class == &csv_driver_class);
return UP_CAST (driver, struct csv_driver, driver);
}
}
static struct output_driver *
-csv_create (const char *name, enum output_device_type device_type,
+csv_create (const char *file_name, enum settings_output_devices device_type,
struct string_map *o)
{
struct output_driver *d;
csv = xzalloc (sizeof *csv);
d = &csv->driver;
- output_driver_init (&csv->driver, &csv_class, name, device_type);
+ output_driver_init (&csv->driver, &csv_driver_class, file_name, device_type);
csv->separator = parse_string (opt (d, o, "separator", ","));
csv->file_name = parse_string (opt (d, o, "output-file", "pspp.csv"));
{
struct csv_driver *csv = csv_driver_cast (driver);
+ if (csv->file != NULL)
+ fn_close (csv->file_name, csv->file);
+
free (csv->separator);
free (csv->file_name);
- if (csv->file != NULL)
- fclose (csv->file);
free (csv);
}
}
}
-const struct output_driver_class csv_class =
+struct output_driver_factory csv_driver_factory = { "csv", csv_create };
+
+static const struct output_driver_class csv_driver_class =
{
"csv",
- csv_create,
csv_destroy,
csv_submit,
csv_flush,