X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fscratch-reader.c;h=8cce42f2081758075221fa9f4196a8b0c98ff2b4;hb=65e61cc92b48297625bc71cf31b8a19e301eb6c1;hp=e329d1c8184b04e2420712b92ac7c6330b2420dd;hpb=a19b858e0ac3c69e4a28c0ca6d8674427268a863;p=pspp diff --git a/src/data/scratch-reader.c b/src/data/scratch-reader.c index e329d1c818..8cce42f208 100644 --- a/src/data/scratch-reader.c +++ b/src/data/scratch-reader.c @@ -18,13 +18,18 @@ 02110-1301, USA. */ #include + #include "scratch-reader.h" + #include + #include "casefile.h" #include "dictionary.h" -#include #include "file-handle-def.h" #include "scratch-handle.h" +#include +#include + #include "xalloc.h" #include "gettext.h" @@ -66,16 +71,26 @@ scratch_reader_open (struct file_handle *fh, struct dictionary **dict) *dict = dict_clone (sh->dictionary); reader = xmalloc (sizeof *reader); reader->fh = fh; - reader->casereader = casefile_get_reader (sh->casefile); + reader->casereader = casefile_get_reader (sh->casefile, NULL); return reader; } -/* Reads a case from READER into C. +/* Reads a case from READER and copies it into C. Returns true if successful, false on error or at end of file. */ bool scratch_reader_read_case (struct scratch_reader *reader, struct ccase *c) { - return casereader_read (reader->casereader, c); + struct ccase tmp; + if (casereader_read (reader->casereader, &tmp)) + { + case_copy (c, 0, &tmp, 0, + casefile_get_value_cnt ( + casereader_get_casefile (reader->casereader))); + case_destroy (&tmp); + return true; + } + else + return false; } /* Returns true if an I/O error occurred on READER, false otherwise. */