Get rid of capacity argument to ds_init() and update all callers.
[pspp-builds.git] / src / data / por-file-reader.c
index 1ee598873ed89edff4d6b099a7ff6b2b21c74036..377241ef33b861fce3b773610030cef761660d8e 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <config.h>
 #include "por-file-reader.h"
-#include "message.h"
+#include <libpspp/message.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
 #include <math.h>
 #include <setjmp.h>
-#include "alloc.h"
+#include <libpspp/alloc.h>
 #include <stdbool.h>
 #include "case.h"
-#include "compiler.h"
+#include <libpspp/compiler.h>
 #include "dictionary.h"
 #include "file-handle-def.h"
 #include "format.h"
-#include "hash.h"
-#include "magic.h"
-#include "misc.h"
-#include "pool.h"
-#include "str.h"
+#include <libpspp/hash.h>
+#include <libpspp/magic.h>
+#include <libpspp/misc.h>
+#include <libpspp/pool.h>
+#include <libpspp/str.h>
 #include "value-labels.h"
 #include "variable.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
 
-#include "debug-print.h"
-
 /* portable_to_local[PORTABLE] translates the given portable
    character into the local character set. */
 static const char portable_to_local[256] =
@@ -79,30 +77,33 @@ struct pfm_reader
 
 static void
 error (struct pfm_reader *r, const char *msg,...)
-     PRINTF_FORMAT (2, 3);
+     PRINTF_FORMAT (2, 3)
+     NO_RETURN;
 
 /* Displays MSG as an error message and aborts reading the
    portable file via longjmp(). */
 static void
 error (struct pfm_reader *r, const char *msg, ...)
 {
-  struct error e;
-  const char *filename;
-  char *title;
+  struct msg m;
+  struct string text;
   va_list args;
 
-  e.class = ME;
-  e.where.filename = NULL;
-  e.where.line_number = 0;
-  filename = fh_get_filename (r->fh);
-  e.title = title = pool_alloc (r->pool, strlen (filename) + 80);
-  sprintf (title, _("portable file %s corrupt at offset %ld: "),
-           filename, ftell (r->file));
-
+  ds_init (&text);
+  ds_printf (&text, _("portable file %s corrupt at offset %ld: "),
+             fh_get_file_name (r->fh), ftell (r->file));
   va_start (args, msg);
-  err_vmsg (&e, msg, args);
+  ds_vprintf (&text, msg, args);
   va_end (args);
 
+  m.category = MSG_GENERAL;
+  m.severity = MSG_ERROR;
+  m.where.file_name = NULL;
+  m.where.line_number = 0;
+  m.text = ds_c_str (&text);
+  
+  msg_emit (&m);
+
   r->ok = false;
 
   longjmp (r->bail_out, 1);
@@ -173,7 +174,7 @@ pfm_open_reader (struct file_handle *fh, struct dictionary **dict,
   if (setjmp (r->bail_out))
     goto error;
   r->fh = fh;
-  r->file = pool_fopen (r->pool, fh_get_filename (r->fh), "rb");
+  r->file = pool_fopen (r->pool, fh_get_file_name (r->fh), "rb");
   r->weight_index = -1;
   r->trans = NULL;
   r->var_cnt = 0;
@@ -186,7 +187,7 @@ pfm_open_reader (struct file_handle *fh, struct dictionary **dict,
     {
       msg (ME, _("An error occurred while opening \"%s\" for reading "
                  "as a portable file: %s."),
-           fh_get_filename (r->fh), strerror (errno));
+           fh_get_file_name (r->fh), strerror (errno));
       goto error;
     }
   
@@ -404,7 +405,7 @@ read_header (struct pfm_reader *r)
   for (i = 0; i < 8; i++) 
     if (!match (r, "SPSSPORT"[i])) 
       {
-        msg (SE, _("%s: Not a portable file."), fh_get_filename (r->fh));
+        msg (SE, _("%s: Not a portable file."), fh_get_file_name (r->fh));
         longjmp (r->bail_out, 1);
       }
 }