Finish converting struct variable to an opaque type. In this
[pspp-builds.git] / src / data / any-writer.c
index 93d2817019c2c0afd1bdc0fb3d78b6babc542f7c..7043b65e55e7305ae2c7b27b35de7dd048224167 100644 (file)
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include "message.h"
+#include <libpspp/assertion.h>
+#include <libpspp/message.h>
 #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 <libpspp/str.h>
 #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;
 }