X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fany-writer.c;h=de44df4682788b8bc4d380ccb181b8a2221be204;hb=0498114186f126d786cc0f3cf6686a43b8513e62;hp=c5d741a28a800d92efeed76d151492ebbfc7d321;hpb=a19b858e0ac3c69e4a28c0ca6d8674427268a863;p=pspp-builds.git diff --git a/src/data/any-writer.c b/src/data/any-writer.c index c5d741a2..de44df46 100644 --- a/src/data/any-writer.c +++ b/src/data/any-writer.c @@ -1,6 +1,5 @@ /* PSPP - computes sample statistics. Copyright (C) 2006 Free Software Foundation, Inc. - Written by Ben Pfaff . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -24,9 +23,10 @@ #include #include #include +#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 @@ -62,7 +62,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 +85,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 +162,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 +181,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 +189,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; }