X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fany-reader.c;h=8ece73f62bb85ffc50941f8983e6bc4fd235f062;hb=4045b0283a12c8fbc0211b0449cbd0e51f51470e;hp=aee034ce319ae8131669305e3e3fa6aa4fc9ec3b;hpb=0df9cdd3df66caf4353128feff3008289cda8115;p=pspp diff --git a/src/data/any-reader.c b/src/data/any-reader.c index aee034ce31..8ece73f62b 100644 --- a/src/data/any-reader.c +++ b/src/data/any-reader.c @@ -51,7 +51,7 @@ static const struct any_reader_class *classes[] = enum { N_CLASSES = sizeof classes / sizeof *classes }; int -any_reader_detect (const char *file_name, +any_reader_detect (const struct file_handle *file_handle, const struct any_reader_class **classp) { struct detector @@ -66,11 +66,11 @@ any_reader_detect (const char *file_name, if (classp) *classp = NULL; - file = fn_open (file_name, "rb"); + file = fn_open (file_handle, "rb"); if (file == NULL) { msg (ME, _("An error occurred while opening `%s': %s."), - file_name, strerror (errno)); + fh_get_file_name (file_handle), strerror (errno)); return -errno; } @@ -90,9 +90,9 @@ any_reader_detect (const char *file_name, } if (retval < 0) - msg (ME, _("Error reading `%s': %s."), file_name, strerror (-retval)); + msg (ME, _("Error reading `%s': %s."), fh_get_file_name (file_handle), strerror (-retval)); - fn_close (file_name, file); + fn_close (file_handle, file); return retval; } @@ -107,7 +107,7 @@ any_reader_open (struct file_handle *handle) const struct any_reader_class *class; int retval; - retval = any_reader_detect (fh_get_file_name (handle), &class); + retval = any_reader_detect (handle, &class); if (retval <= 0) { if (retval == 0) @@ -129,6 +129,10 @@ any_reader_open (struct file_handle *handle) NOT_REACHED (); } +/* gnulib on some systems defines "close" as something else, + which causes problems for this code. So undefine it here. */ +#undef close + bool any_reader_close (struct any_reader *any_reader) { @@ -222,7 +226,7 @@ static bool dataset_reader_close (struct any_reader *r_) { struct dataset_reader *r = dataset_reader_cast (r_); - dict_destroy (r->dict); + dict_unref (r->dict); casereader_destroy (r->reader); free (r);