dictionary: Always compact immediately upon deletion of a variable.
[pspp] / utilities / pspp-convert.c
index a381a98746e6c95442f45cd42f28bb60337c0096..6599ba3fc80ce474903a12c7bea55ed4b2c6f323 100644 (file)
@@ -23,6 +23,7 @@
 #include <unistd.h>
 
 #include "data/any-reader.h"
+#include "data/case-map.h"
 #include "data/casereader.h"
 #include "data/casewriter.h"
 #include "data/csv-file-writer.h"
@@ -294,6 +295,7 @@ main (int argc, char *argv[])
   if (reader == NULL)
     goto error;
 
+  struct case_map_stage *stage = case_map_stage_create (dict);
   if (keep)
     {
       struct variable **keep_vars;
@@ -316,6 +318,10 @@ main (int argc, char *argv[])
       free (drop_vars);
     }
 
+  reader = case_map_create_input_translator (
+    case_map_stage_get_case_map (stage), reader);
+  case_map_stage_destroy (stage);
+
   if (!strcmp (output_format, "csv") || !strcmp (output_format, "txt"))
     {
       if (!csv_opts.delimiter)