X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fflexifile.c;h=9ed760b254a7def3c016aa946380fa07e9413552;hb=a37754c18dee3d5941e5fe041b2c1fa1a3370157;hp=756f67a10b2f07c8f056fe2632d4a4953e4d1c1d;hpb=e16d30a43af6ada7b8846f48a55eb3cb8f4e5f22;p=pspp-builds.git diff --git a/src/ui/flexifile.c b/src/ui/flexifile.c index 756f67a1..9ed760b2 100644 --- a/src/ui/flexifile.c +++ b/src/ui/flexifile.c @@ -212,6 +212,24 @@ flexifile_get_reader (const struct casefile *cf_) return reader; } + +static struct casereader * +flexifilereader_clone (const struct casereader *cr) +{ + const struct flexifilereader *ffr = (const struct flexifilereader *) cr; + struct flexifilereader *new_ffr = xzalloc (sizeof *new_ffr); + struct casereader *new_reader = (struct casereader *) new_ffr; + struct casefile *cf = casereader_get_casefile (cr); + + casereader_register (cf, new_reader, CLASS_CASEREADER(&class_reader)); + + new_ffr->case_idx = ffr->case_idx ; + new_ffr->destructive = ffr->destructive ; + + return new_reader; +} + + static bool flexifile_in_core(const struct casefile *cf UNUSED) { @@ -268,7 +286,8 @@ static const struct class_flexifilereader class_reader = { flexifilereader_get_next_case, 0, /* cnum */ - flexifilereader_destroy + flexifilereader_destroy, + flexifilereader_clone } };