* aggregate.c: (parse_aggregate_functions) Fix N_NO_VARS format.
[pspp-builds.git] / src / split-file.c
index 29fc432ef0902b4be4bb104f02d68f7e7b6fd1b1..4ff62e178b7ef8a0156c34adad449f6bf1ccad2e 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
+#include "dictionary.h"
 #include "error.h"
 #include "lexer.h"
 #include "str.h"
 int
 cmd_split_file (void)
 {
-  lex_match_id ("SPLIT");
-  lex_match_id ("FILE");
-
   if (lex_match_id ("OFF"))
-    {
-      default_dict.n_splits = 0;
-      free (default_dict.splits);
-      default_dict.splits = NULL;
-    }
+    dict_set_split_vars (default_dict, NULL, 0);
   else
     {
       struct variable **v;
       int n;
 
+      /* For now, ignore SEPARATE and LAYERED. */
+      lex_match_id ("SEPARATE") || lex_match_id ("LAYERED");
+      
       lex_match (T_BY);
-      if (!parse_variables (NULL, &v, &n, PV_NO_DUPLICATE))
+      if (!parse_variables (default_dict, &v, &n, PV_NO_DUPLICATE))
        return CMD_FAILURE;
 
-      default_dict.n_splits = n;
-      default_dict.splits = v = xrealloc (v, sizeof *v * (n + 1));
-      v[n] = NULL;
+      dict_set_split_vars (default_dict, v, n);
+      free (v);
     }
 
   return lex_end_of_command ();