X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fany-writer.c;h=7043b65e55e7305ae2c7b27b35de7dd048224167;hb=888d0f91d57e0c3c5a4206c30ac71eb87bf44227;hp=93d2817019c2c0afd1bdc0fb3d78b6babc542f7c;hpb=dcf9b154cbcaa35c3d8459a201b77eec8bcb30bd;p=pspp-builds.git diff --git a/src/data/any-writer.c b/src/data/any-writer.c index 93d28170..7043b65e 100644 --- a/src/data/any-writer.c +++ b/src/data/any-writer.c @@ -24,12 +24,13 @@ #include #include #include -#include "message.h" +#include +#include #include "file-handle-def.h" -#include "filename.h" +#include "file-name.h" #include "por-file-writer.h" #include "sys-file-writer.h" -#include "str.h" +#include #include "scratch-writer.h" #include "xalloc.h" @@ -62,7 +63,7 @@ any_writer_open (struct file_handle *handle, struct dictionary *dict) struct any_writer *writer; char *extension; - extension = fn_extension (fh_get_filename (handle)); + extension = fn_extension (fh_get_file_name (handle)); str_lowercase (extension); if (!strcmp (extension, ".por")) @@ -85,7 +86,7 @@ any_writer_open (struct file_handle *handle, struct dictionary *dict) dict)); } - abort (); + NOT_REACHED (); } /* If PRIVATE is non-null, creates and returns a new any_writer, @@ -162,7 +163,7 @@ any_writer_write (struct any_writer *writer, const struct ccase *c) case SCRATCH_FILE: return scratch_writer_write_case (writer->private, c); } - abort (); + NOT_REACHED (); } /* Returns true if an I/O error has occurred on WRITER, false @@ -181,7 +182,7 @@ any_writer_error (const struct any_writer *writer) case SCRATCH_FILE: return scratch_writer_error (writer->private); } - abort (); + NOT_REACHED (); } /* Closes WRITER. @@ -189,21 +190,29 @@ any_writer_error (const struct any_writer *writer) bool any_writer_close (struct any_writer *writer) { + bool ok; + if (writer == NULL) return true; switch (writer->type) { case SYSTEM_FILE: - return sfm_close_writer (writer->private); + ok = sfm_close_writer (writer->private); + break; case PORTABLE_FILE: - return pfm_close_writer (writer->private); + ok = pfm_close_writer (writer->private); + break; case SCRATCH_FILE: - return scratch_writer_close (writer->private); - + ok = scratch_writer_close (writer->private); + break; + default: - abort (); + NOT_REACHED (); } + + free (writer); + return ok; }