/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
enum writer_type writer_type)
{
bool retain_unselected;
- struct variable *saved_filter_variable;
struct casewriter *output;
bool ok;
if (output == NULL)
return CMD_CASCADING_FAILURE;
- saved_filter_variable = dict_get_filter (dataset_dict (ds));
- if (retain_unselected)
- dict_set_filter (dataset_dict (ds), NULL);
-
- casereader_transfer (proc_open (ds), output);
+ casereader_transfer (proc_open_filtering (ds, !retain_unselected), output);
ok = casewriter_destroy (output);
ok = proc_commit (ds) && ok;
- dict_set_filter (dataset_dict (ds), saved_filter_variable);
-
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
}
return NULL;
}
-/* Writes case C to the system file specified on XSAVE or XEXPORT. */
+/* Writes case *C to the system file specified on XSAVE or XEXPORT. */
static int
-output_trns_proc (void *trns_, struct ccase *c, casenumber case_num UNUSED)
+output_trns_proc (void *trns_, struct ccase **c, casenumber case_num UNUSED)
{
struct output_trns *t = trns_;
- struct ccase tmp;
- case_clone (&tmp, c);
- casewriter_write (t->writer, &tmp);
+ casewriter_write (t->writer, case_ref (*c));
return TRNS_CONTINUE;
}