lexer: Fix memory leak when macro expands as empty.
[pspp] / src / data / csv-file-writer.c
index c01cb342318e32d9e12ad78505dee4c26a113a7c..d8c3e000ef84031f824998be068bdf1c94e5f992 100644 (file)
@@ -87,19 +87,6 @@ static void write_var_names (struct csv_writer *, const struct dictionary *);
 static bool write_error (const struct csv_writer *);
 static bool close_writer (struct csv_writer *);
 
-/* Initializes OPTS with default options for writing a CSV file. */
-void
-csv_writer_options_init (struct csv_writer_options *opts)
-{
-  opts->recode_user_missing = false;
-  opts->include_var_names = false;
-  opts->use_value_labels = false;
-  opts->use_print_formats = false;
-  opts->decimal = settings_get_decimal_char (FMT_F);
-  opts->delimiter = ',';
-  opts->qualifier = '"';
-}
-
 /* Opens the CSV file designated by file handle FH for writing cases from
    dictionary DICT according to the given OPTS.
 
@@ -156,7 +143,7 @@ csv_writer_open (struct file_handle *fh, const struct dictionary *dict,
   w->rf = replace_file_start (fh, "w", 0666,  &w->file);
   if (w->rf == NULL)
     {
-      msg (ME, _("Error opening `%s' for writing as a system file: %s."),
+      msg (ME, _("Error opening `%s' for writing as a CSV file: %s."),
            fh_get_file_name (fh), strerror (errno));
       goto error;
     }
@@ -238,7 +225,8 @@ static void
 csv_output_format (struct csv_writer *w, const struct csv_var *cv,
                    const union value *value)
 {
-  char *s = data_out (value, w->encoding, &cv->format);
+  char *s = data_out (value, w->encoding, &cv->format,
+                      settings_get_fmt_settings ());
   struct substring ss = ss_cstr (s);
   if (cv->format.type != FMT_A)
     ss_trim (&ss, ss_cstr (" "));
@@ -337,6 +325,7 @@ csv_write_var__ (struct csv_writer *w, const struct csv_var *cv,
           break;
 
         case FMT_DATETIME:
+        case FMT_YMDHMS:
           if (value->f < 0)
             strcpy (s, " ");
           else
@@ -350,6 +339,7 @@ csv_write_var__ (struct csv_writer *w, const struct csv_var *cv,
             }
           break;
 
+        case FMT_MTIME:
         case FMT_TIME:
         case FMT_DTIME:
           {