X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fsave.c;h=91fbc2fd3bfcb6f6a55ff202698f9c237f52e853;hb=8d8d3ba512d7986d79f1edfdac409ad1c039bcc9;hp=e94c020b168d3a59473b396c0c64aa405bcf1877;hpb=354747add9edd5203365db70f7ffa282621a0a08;p=pspp diff --git a/src/language/data-io/save.c b/src/language/data-io/save.c index e94c020b16..91fbc2fd3b 100644 --- a/src/language/data-io/save.c +++ b/src/language/data-io/save.c @@ -1,5 +1,5 @@ /* 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 @@ -105,7 +105,6 @@ parse_output_proc (struct lexer *lexer, struct dataset *ds, enum writer_type writer_type) { bool retain_unselected; - struct variable *saved_filter_variable; struct casewriter *output; bool ok; @@ -114,16 +113,10 @@ parse_output_proc (struct lexer *lexer, struct dataset *ds, 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; } @@ -326,14 +319,12 @@ parse_write_command (struct lexer *lexer, struct dataset *ds, 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; }