Continue reforming error message support. In this phase, we divide
[pspp-builds.git] / src / data / sys-file-reader.c
index 71fd6814ba544dc120d87741c66894b6e05eedbf..ebf0a7b1bb7194f1cf1ea9ecaac61bbe7c4699fa 100644 (file)
    02110-1301, USA. */
 
 #include <config.h>
-#include "sys-file-reader.h"
-#include "sfm-private.h"
-#include "message.h"
+
 #include <stdlib.h>
-#include <ctype.h>
 #include <errno.h>
 #include <float.h>
-#include <setjmp.h>
-#include "alloc.h"
+#include <c-ctype.h>
+
+#include <libpspp/alloc.h>
+#include <libpspp/message.h>
+#include <libpspp/compiler.h>
+#include <libpspp/magic.h>
+#include <libpspp/misc.h>
+#include <libpspp/str.h>
+
+#include "sys-file-reader.h"
+#include "sfm-private.h"
 #include "case.h"
-#include "compiler.h"
 #include "dictionary.h"
-#include "message.h"
 #include "file-handle-def.h"
-#include "filename.h"
+#include "file-name.h"
 #include "format.h"
-#include "magic.h"
-#include "misc.h"
 #include "value-labels.h"
-#include "str.h"
 #include "variable.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
 
-#include "debug-print.h"
-
 /* System file reader. */
 struct sfm_reader
   {
@@ -98,7 +97,7 @@ bswap (char *a, char *b)
 
 /* Reverse the byte order of 32-bit integer *X. */
 static inline void
-bswap_int32 (int32 *x_)
+bswap_int32 (int32_t *x_)
 {
   char *x = (char *) x_;
   bswap (x + 0, x + 3);
@@ -127,8 +126,9 @@ corrupt_msg (int class, const char *format,...)
   struct error e;
   va_list args;
 
-  e.class = class;
-  e.where.filename = NULL;
+  e.category = msg_class_to_category (class);
+  e.severity = msg_class_to_severity (class);
+  e.where.file_name = NULL;
   e.where.line_number = 0;
   e.title = _("corrupt system file: ");
 
@@ -146,9 +146,9 @@ sfm_close_reader (struct sfm_reader *r)
 
   if (r->file)
     {
-      if (fn_close (fh_get_filename (r->fh), r->file) == EOF)
+      if (fn_close (fh_get_file_name (r->fh), r->file) == EOF)
         msg (ME, _("%s: Closing system file: %s."),
-             fh_get_filename (r->fh), strerror (errno));
+             fh_get_file_name (r->fh), strerror (errno));
       r->file = NULL;
     }
 
@@ -169,7 +169,7 @@ static void *buf_read (struct sfm_reader *, void *buf, size_t byte_cnt,
 
 static int read_header (struct sfm_reader *,
                         struct dictionary *, struct sfm_read_info *);
-static int parse_format_spec (struct sfm_reader *, int32,
+static int parse_format_spec (struct sfm_reader *, int32_t,
                              struct fmt_spec *, const struct variable *);
 static int read_value_labels (struct sfm_reader *, struct dictionary *,
                               struct variable **var_by_idx);
@@ -215,7 +215,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
   /* Create and initialize reader. */
   r = xmalloc (sizeof *r);
   r->fh = fh;
-  r->file = fn_open (fh_get_filename (fh), "rb");
+  r->file = fn_open (fh_get_file_name (fh), "rb");
 
   r->reverse_endian = 0;
   r->fix_specials = 0;
@@ -240,7 +240,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
     {
       msg (ME, _("An error occurred while opening \"%s\" for reading "
                  "as a system file: %s."),
-           fh_get_filename (r->fh), strerror (errno));
+           fh_get_file_name (r->fh), strerror (errno));
       goto error;
     }
 
@@ -257,7 +257,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
       if (r->weight_idx < 0 || r->weight_idx >= r->value_cnt)
        lose ((ME, _("%s: Index of weighting variable (%d) is not between 0 "
                     "and number of elements per case (%d)."),
-              fh_get_filename (r->fh), r->weight_idx, r->value_cnt));
+              fh_get_file_name (r->fh), r->weight_idx, r->value_cnt));
 
 
       weight_var = var_by_idx[r->weight_idx];
@@ -265,10 +265,10 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
       if (weight_var == NULL)
        lose ((ME,
                _("%s: Weighting variable may not be a continuation of "
-              "a long string variable."), fh_get_filename (fh)));
+              "a long string variable."), fh_get_file_name (fh)));
       else if (weight_var->type == ALPHA)
        lose ((ME, _("%s: Weighting variable may not be a string variable."),
-              fh_get_filename (fh)));
+              fh_get_file_name (fh)));
 
       dict_set_weight (*dict, weight_var);
     }
@@ -278,7 +278,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
   /* Read records of types 3, 4, 6, and 7. */
   for (;;)
     {
-      int32 rec_type;
+      int32_t rec_type;
 
       assertive_buf_read (r, &rec_type, sizeof rec_type, 0);
       if (r->reverse_endian)
@@ -295,7 +295,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
          lose ((ME, _("%s: Orphaned variable index record (type 4).  Type 4 "
                        "records must always immediately follow type 3 "
                        "records."),
-                fh_get_filename (r->fh)));
+                fh_get_file_name (r->fh)));
 
        case 6:
          if (!read_documents (r, *dict))
@@ -306,9 +306,9 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
          {
            struct
              {
-               int32 subtype P;
-               int32 size P;
-               int32 count P;
+               int32_t subtype P;
+               int32_t size P;
+               int32_t count P;
              }
            data;
             unsigned long bytes;
@@ -325,7 +325,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
             bytes = data.size * data.count;
             if (bytes < data.size || bytes < data.count)
               lose ((ME, "%s: Record type %d subtype %d too large.",
-                     fh_get_filename (r->fh), rec_type, data.subtype));
+                     fh_get_file_name (r->fh), rec_type, data.subtype));
 
            switch (data.subtype)
              {
@@ -352,7 +352,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
                    {
                      msg (MW, _("%s: Invalid subrecord length. "
                                 "Record: 7; Subrecord: 11"), 
-                          fh_get_filename (r->fh));
+                          fh_get_file_name (r->fh));
                      skip = 1;
                    }
 
@@ -360,9 +360,9 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
                    {
                      struct
                      {
-                       int32 measure P;
-                       int32 width P;
-                       int32 align P;
+                       int32_t measure P;
+                       int32_t width P;
+                       int32_t align P;
                      }
                      params;
 
@@ -406,14 +406,14 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
                         {
                           msg (MW, _("%s: Trailing garbage in long variable "
                                      "name map."),
-                               fh_get_filename (r->fh));
+                               fh_get_file_name (r->fh));
                           break;
                         }
                       if (!var_is_valid_name (long_name, false))
                         {
                           msg (MW, _("%s: Long variable mapping to invalid "
                                      "variable name `%s'."),
-                               fh_get_filename (r->fh), long_name);
+                               fh_get_file_name (r->fh), long_name);
                           break;
                         }
                       
@@ -423,7 +423,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
                         {
                           msg (MW, _("%s: Long variable mapping for "
                                      "nonexistent variable %s."),
-                               fh_get_filename (r->fh), short_name);
+                               fh_get_file_name (r->fh), short_name);
                           break;
                         }
 
@@ -432,7 +432,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
                          NULL != dict_lookup_var (*dict, long_name))
                         lose ((ME, _("%s: Duplicate long variable name `%s' "
                                      "within system file."),
-                               fh_get_filename (r->fh), long_name));
+                               fh_get_file_name (r->fh), long_name));
 
 
                       /* Set long name.
@@ -459,7 +459,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
              default:
                msg (MW, _("%s: Unrecognized record type 7, subtype %d "
                            "encountered in system file."),
-                     fh_get_filename (r->fh), data.subtype);
+                     fh_get_file_name (r->fh), data.subtype);
                skip = 1;
              }
 
@@ -475,7 +475,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
 
        case 999:
          {
-           int32 filler;
+           int32_t filler;
 
            assertive_buf_read (r, &filler, sizeof filler, 0);
            goto success;
@@ -483,7 +483,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict,
 
        default:
          corrupt_msg(MW, _("%s: Unrecognized record type %d."),
-                 fh_get_filename (r->fh), rec_type);
+                 fh_get_file_name (r->fh), rec_type);
        }
     }
 
@@ -508,15 +508,15 @@ error:
 static int
 read_machine_int32_info (struct sfm_reader *r, int size, int count)
 {
-  int32 data[8];
+  int32_t data[8];
   int file_bigendian;
 
   int i;
 
-  if (size != sizeof (int32) || count != 8)
+  if (size != sizeof (int32_t) || count != 8)
     lose ((ME, _("%s: Bad size (%d) or count (%d) field on record type 7, "
                  "subtype 3.   Expected size %d, count 8."),
-          fh_get_filename (r->fh), size, count, sizeof (int32)));
+          fh_get_file_name (r->fh), size, count, sizeof (int32_t)));
 
   assertive_buf_read (r, data, sizeof data, 0);
   if (r->reverse_endian)
@@ -528,7 +528,7 @@ read_machine_int32_info (struct sfm_reader *r, int size, int count)
     lose ((ME, _("%s: Floating-point representation in system file is not "
                  "IEEE-754.  PSPP cannot convert between floating-point "
                  "formats."),
-           fh_get_filename (r->fh)));
+           fh_get_file_name (r->fh)));
 #else
 #error Add support for your floating-point format.
 #endif
@@ -543,7 +543,7 @@ read_machine_int32_info (struct sfm_reader *r, int size, int count)
   if (file_bigendian ^ (data[6] == 1))
     lose ((ME, _("%s: File-indicated endianness (%s) does not match "
                  "endianness intuited from file header (%s)."),
-          fh_get_filename (r->fh),
+          fh_get_file_name (r->fh),
            file_bigendian ? _("big-endian") : _("little-endian"),
           data[6] == 1 ? _("big-endian") : (data[6] == 2 ? _("little-endian")
                                          : _("unknown"))));
@@ -552,7 +552,7 @@ read_machine_int32_info (struct sfm_reader *r, int size, int count)
   if (data[7] != 2 && data[7] != 3) 
     lose ((ME, _("%s: File-indicated character representation code (%s) is "
                  "not ASCII."),
-           fh_get_filename (r->fh),
+           fh_get_file_name (r->fh),
            (data[7] == 1 ? "EBCDIC"
             : (data[7] == 4 ? _("DEC Kanji") : _("Unknown")))));
 
@@ -572,7 +572,7 @@ read_machine_flt64_info (struct sfm_reader *r, int size, int count)
   if (size != sizeof (flt64) || count != 3)
     lose ((ME, _("%s: Bad size (%d) or count (%d) field on record type 7, "
                  "subtype 4.   Expected size %d, count 8."),
-          fh_get_filename (r->fh), size, count, sizeof (flt64)));
+          fh_get_file_name (r->fh), size, count, sizeof (flt64)));
 
   assertive_buf_read (r, data, sizeof data, 0);
   if (r->reverse_endian)
@@ -589,7 +589,7 @@ read_machine_flt64_info (struct sfm_reader *r, int size, int count)
                 "for at least one of the three system values.  SYSMIS: "
                 "indicated %g, expected %g; HIGHEST: %g, %g; LOWEST: "
                 "%g, %g."),
-          fh_get_filename (r->fh), (double) data[0], (double) SYSMIS,
+          fh_get_file_name (r->fh), (double) data[0], (double) SYSMIS,
           (double) data[1], (double) FLT64_MAX,
           (double) data[2], (double) second_lowest_flt64);
     }
@@ -614,15 +614,15 @@ read_header (struct sfm_reader *r,
   if (strncmp ("$FL2", hdr.rec_type, 4) != 0)
     lose ((ME, _("%s: Bad magic.  Proper system files begin with "
                 "the four characters `$FL2'. This file will not be read."),
-          fh_get_filename (r->fh)));
+          fh_get_file_name (r->fh)));
 
   /* Check eye-category.her string. */
   memcpy (prod_name, hdr.prod_name, sizeof hdr.prod_name);
   for (i = 0; i < 60; i++)
-    if (!isprint ((unsigned char) prod_name[i]))
+    if (!c_isprint ((unsigned char) prod_name[i]))
       prod_name[i] = ' ';
   for (i = 59; i >= 0; i--)
-    if (!isgraph ((unsigned char) prod_name[i]))
+    if (!c_isgraph ((unsigned char) prod_name[i]))
       {
        prod_name[i] = '\0';
        break;
@@ -656,7 +656,7 @@ read_header (struct sfm_reader *r,
       if (hdr.layout_code != 2)
        lose ((ME, _("%s: File layout code has unexpected value %d.  Value "
                      "should be 2, in big-endian or little-endian format."),
-              fh_get_filename (r->fh), hdr.layout_code));
+              fh_get_file_name (r->fh), hdr.layout_code));
 
       r->reverse_endian = 1;
       bswap_int32 (&hdr.case_size);
@@ -683,13 +683,13 @@ read_header (struct sfm_reader *r,
   if (r->case_cnt < -1 || r->case_cnt > INT_MAX / 2)
     lose ((ME,
            _("%s: Number of cases in file (%ld) is not between -1 and %d."),
-           fh_get_filename (r->fh), (long) r->case_cnt, INT_MAX / 2));
+           fh_get_file_name (r->fh), (long) r->case_cnt, INT_MAX / 2));
 
   r->bias = hdr.bias;
   if (r->bias != 100.0)
     corrupt_msg (MW, _("%s: Compression bias (%g) is not the usual "
                        "value of 100."),
-                 fh_get_filename (r->fh), r->bias);
+                 fh_get_file_name (r->fh), r->bias);
 
   /* Make a file label only on the condition that the given label is
      not all spaces or nulls. */
@@ -697,16 +697,18 @@ read_header (struct sfm_reader *r,
     int i;
 
     for (i = sizeof hdr.file_label - 1; i >= 0; i--)
-      if (!isspace ((unsigned char) hdr.file_label[i])
-         && hdr.file_label[i] != 0)
-       {
-          char *label = xmalloc (i + 2);
-         memcpy (label, hdr.file_label, i + 1);
-         label[i + 1] = 0;
-          dict_set_label (dict, label);
-          free (label);
-         break;
-       }
+      {
+       if (!c_isspace ((unsigned char) hdr.file_label[i])
+           && hdr.file_label[i] != 0)
+         {
+           char *label = xmalloc (i + 2);
+           memcpy (label, hdr.file_label, i + 1);
+           label[i + 1] = 0;
+           dict_set_label (dict, label);
+           free (label);
+           break;
+         }
+      }
   }
 
   if (info)
@@ -730,7 +732,7 @@ read_header (struct sfm_reader *r,
       info->case_cnt = hdr.case_cnt;
 
       for (cp = &prod_name[skip_amt]; cp < &prod_name[60]; cp++)
-       if (isgraph ((unsigned char) *cp))
+       if (c_isgraph ((unsigned char) *cp))
          break;
       strcpy (info->product, cp);
     }
@@ -812,7 +814,7 @@ read_variables (struct sfm_reader *r,
          if (sv.type != -1)
            lose ((ME, _("%s: position %d: String variable does not have "
                         "proper number of continuation records."),
-                   fh_get_filename (r->fh), i));
+                   fh_get_file_name (r->fh), i));
 
 
          r->vars[i].width = -1;
@@ -823,71 +825,49 @@ read_variables (struct sfm_reader *r,
       else if (sv.type == -1)
        lose ((ME, _("%s: position %d: Superfluous long string continuation "
                      "record."),
-               fh_get_filename (r->fh), i));
+               fh_get_file_name (r->fh), i));
 
       /* Check fields for validity. */
       if (sv.type < 0 || sv.type > 255)
        lose ((ME, _("%s: position %d: Bad variable type code %d."),
-              fh_get_filename (r->fh), i, sv.type));
+              fh_get_file_name (r->fh), i, sv.type));
       if (sv.has_var_label != 0 && sv.has_var_label != 1)
        lose ((ME, _("%s: position %d: Variable label indicator field is not "
-              "0 or 1."), fh_get_filename (r->fh), i));
+              "0 or 1."), fh_get_file_name (r->fh), i));
       if (sv.n_missing_values < -3 || sv.n_missing_values > 3
          || sv.n_missing_values == -1)
        lose ((ME, _("%s: position %d: Missing value indicator field is not "
-                    "-3, -2, 0, 1, 2, or 3."), fh_get_filename (r->fh), i));
+                    "-3, -2, 0, 1, 2, or 3."), fh_get_file_name (r->fh), i));
 
       /* Copy first character of variable name. */
-      if (!isalpha ((unsigned char) sv.name[0])
-         && sv.name[0] != '@' && sv.name[0] != '#')
+      if (sv.name[0] == '@' || sv.name[0] == '#')
        lose ((ME, _("%s: position %d: Variable name begins with invalid "
                      "character."),
-               fh_get_filename (r->fh), i));
-      if (islower ((unsigned char) sv.name[0]))
-       msg (MW, _("%s: position %d: Variable name begins with lowercase letter "
-                   "%c."),
-             fh_get_filename (r->fh), i, sv.name[0]);
-      if (sv.name[0] == '#')
-       msg (MW, _("%s: position %d: Variable name begins with octothorpe "
-                  "(`#').  Scratch variables should not appear in system "
-                  "files."),
-             fh_get_filename (r->fh), i);
-      name[0] = toupper ((unsigned char) (sv.name[0]));
+               fh_get_file_name (r->fh), i));
+
+      name[0] = sv.name[0];
 
       /* Copy remaining characters of variable name. */
       for (j = 1; j < SHORT_NAME_LEN; j++)
        {
          int c = (unsigned char) sv.name[j];
 
-         if (isspace (c))
+         if (c == ' ') 
            break;
-         else if (islower (c))
-           {
-             msg (MW, _("%s: position %d: Variable name character %d is "
-                         "lowercase letter %c."),
-                   fh_get_filename (r->fh), i, j + 1, sv.name[j]);
-             name[j] = toupper ((unsigned char) (c));
-           }
-         else if (isalnum (c) || c == '.' || c == '@'
-                  || c == '#' || c == '$' || c == '_')
+         else 
            name[j] = c;
-         else
-           lose ((ME, _("%s: position %d: character `\\%03o' (%c) is not valid in a "
-                         "variable name."),
-                   fh_get_filename (r->fh), i, c, c));
        }
       name[j] = 0;
 
-      if ( ! var_is_valid_name(name, false) ) 
+      if ( ! var_is_plausible_name(name, false) ) 
         lose ((ME, _("%s: Invalid variable name `%s' within system file."),
-               fh_get_filename (r->fh), name));
+               fh_get_file_name (r->fh), name));
 
       /* Create variable. */
-
       vv = (*var_by_idx)[i] = dict_create_var (dict, name, sv.type);
       if (vv == NULL) 
         lose ((ME, _("%s: Duplicate variable name `%s' within system file."),
-               fh_get_filename (r->fh), name));
+               fh_get_file_name (r->fh), name));
 
       var_set_short_name (vv, vv->name);
 
@@ -900,7 +880,7 @@ read_variables (struct sfm_reader *r,
       if (sv.has_var_label == 1)
        {
          /* Disk buffer. */
-         int32 len;
+         int32_t len;
 
          /* Read length of label. */
          assertive_buf_read (r, &len, sizeof len, 0);
@@ -911,12 +891,12 @@ read_variables (struct sfm_reader *r,
          if (len < 0 || len > 255)
            lose ((ME, _("%s: Variable %s indicates variable label of invalid "
                          "length %d."),
-                   fh_get_filename (r->fh), vv->name, len));
+                   fh_get_file_name (r->fh), vv->name, len));
 
          if ( len != 0 ) 
            {
              /* Read label into variable structure. */
-             vv->label = buf_read (r, NULL, ROUND_UP (len, sizeof (int32)), len + 1);
+             vv->label = buf_read (r, NULL, ROUND_UP (len, sizeof (int32_t)), len + 1);
              if (vv->label == NULL)
                goto error;
              vv->label[len] = '\0';
@@ -932,7 +912,7 @@ read_variables (struct sfm_reader *r,
          if (vv->width > MAX_SHORT_STRING)
            lose ((ME, _("%s: Long string variable %s may not have missing "
                          "values."),
-                   fh_get_filename (r->fh), vv->name));
+                   fh_get_file_name (r->fh), vv->name));
 
          assertive_buf_read (r, mv, sizeof *mv * mv_cnt, 0);
 
@@ -953,7 +933,7 @@ read_variables (struct sfm_reader *r,
              if (vv->type == ALPHA)
                lose ((ME, _("%s: String variable %s may not have missing "
                              "values specified as a range."),
-                       fh_get_filename (r->fh), vv->name));
+                       fh_get_file_name (r->fh), vv->name));
 
              if (mv[0] == r->lowest)
                 mv_add_num_range (&vv->miss, LOWEST, mv[1]);
@@ -980,12 +960,12 @@ read_variables (struct sfm_reader *r,
   if (long_string_count != 0)
     lose ((ME, _("%s: Long string continuation records omitted at end of "
                  "dictionary."),
-           fh_get_filename (r->fh)));
+           fh_get_file_name (r->fh)));
 
   if (next_value != r->value_cnt)
     corrupt_msg(MW, _("%s: System file header indicates %d variable positions but "
                  "%d were read from file."),
-           fh_get_filename (r->fh), r->value_cnt, next_value);
+           fh_get_file_name (r->fh), r->value_cnt, next_value);
 
 
   return 1;
@@ -997,19 +977,19 @@ error:
 /* Translates the format spec from sysfile format to internal
    format. */
 static int
-parse_format_spec (struct sfm_reader *r, int32 s,
+parse_format_spec (struct sfm_reader *r, int32_t s,
                    struct fmt_spec *f, const struct variable *v)
 {
   f->type = translate_fmt ((s >> 16) & 0xff);
   if (f->type == -1)
     lose ((ME, _("%s: Bad format specifier byte (%d)."),
-          fh_get_filename (r->fh), (s >> 16) & 0xff));
+          fh_get_file_name (r->fh), (s >> 16) & 0xff));
   f->w = (s >> 8) & 0xff;
   f->d = s & 0xff;
 
   if ((v->type == ALPHA) ^ ((formats[f->type].cat & FCAT_STRING) != 0))
     lose ((ME, _("%s: %s variable %s has %s format specifier %s."),
-          fh_get_filename (r->fh),
+          fh_get_file_name (r->fh),
            v->type == ALPHA ? _("String") : _("Numeric"),
           v->name,
           formats[f->type].cat & FCAT_STRING ? _("string") : _("numeric"),
@@ -1043,10 +1023,10 @@ read_value_labels (struct sfm_reader *r,
     };
 
   struct label *labels = NULL;
-  int32 n_labels;              /* Number of labels. */
+  int32_t n_labels;            /* Number of labels. */
 
   struct variable **var = NULL;        /* Associated variables. */
-  int32 n_vars;                        /* Number of associated variables. */
+  int32_t n_vars;                      /* Number of associated variables. */
 
   int i;
 
@@ -1059,10 +1039,10 @@ read_value_labels (struct sfm_reader *r,
   if (r->reverse_endian)
     bswap_int32 (&n_labels);
 
-  if ( n_labels >= ((int32) ~0) / sizeof *labels)
+  if ( n_labels >= ((int32_t) ~0) / sizeof *labels)
     {    
       corrupt_msg(MW, _("%s: Invalid number of labels: %d.  Ignoring labels."),
-                 fh_get_filename (r->fh), n_labels);
+                 fh_get_file_name (r->fh), n_labels);
       n_labels = 0;
     }
 
@@ -1096,7 +1076,7 @@ read_value_labels (struct sfm_reader *r,
 
   /* Read record type of type 4 record. */
   {
-    int32 rec_type;
+    int32_t rec_type;
     
     assertive_buf_read (r, &rec_type, sizeof rec_type, 0);
     if (r->reverse_endian)
@@ -1105,7 +1085,7 @@ read_value_labels (struct sfm_reader *r,
     if (rec_type != 4)
       lose ((ME, _("%s: Variable index record (type 4) does not immediately "
                    "follow value label record (type 3) as it should."),
-             fh_get_filename (r->fh)));
+             fh_get_file_name (r->fh)));
   }
 
   /* Read number of variables associated with value label from type 4
@@ -1116,13 +1096,13 @@ read_value_labels (struct sfm_reader *r,
   if (n_vars < 1 || n_vars > dict_get_var_cnt (dict))
     lose ((ME, _("%s: Number of variables associated with a value label (%d) "
                  "is not between 1 and the number of variables (%d)."),
-          fh_get_filename (r->fh), n_vars, dict_get_var_cnt (dict)));
+          fh_get_file_name (r->fh), n_vars, dict_get_var_cnt (dict)));
 
   /* Read the list of variables. */
   var = xnmalloc (n_vars, sizeof *var);
   for (i = 0; i < n_vars; i++)
     {
-      int32 var_idx;
+      int32_t var_idx;
       struct variable *v;
 
       /* Read variable index, check range. */
@@ -1132,7 +1112,7 @@ read_value_labels (struct sfm_reader *r,
       if (var_idx < 1 || var_idx > r->value_cnt)
        lose ((ME, _("%s: Variable index associated with value label (%d) is "
                      "not between 1 and the number of values (%d)."),
-              fh_get_filename (r->fh), var_idx, r->value_cnt));
+              fh_get_file_name (r->fh), var_idx, r->value_cnt));
 
       /* Make sure it's a real variable. */
       v = var_by_idx[var_idx - 1];
@@ -1140,11 +1120,11 @@ read_value_labels (struct sfm_reader *r,
        lose ((ME, _("%s: Variable index associated with value label (%d) "
                      "refers to a continuation of a string variable, not to "
                      "an actual variable."),
-               fh_get_filename (r->fh), var_idx));
+               fh_get_file_name (r->fh), var_idx));
       if (v->type == ALPHA && v->width > MAX_SHORT_STRING)
        lose ((ME, _("%s: Value labels are not allowed on long string "
                      "variables (%s)."),
-               fh_get_filename (r->fh), v->name));
+               fh_get_file_name (r->fh), v->name));
 
       /* Add it to the list of variables. */
       var[i] = v;
@@ -1156,7 +1136,7 @@ read_value_labels (struct sfm_reader *r,
       lose ((ME, _("%s: Variables associated with value label are not all of "
                    "identical type.  Variable %s has %s type, but variable "
                    "%s has %s type."),
-             fh_get_filename (r->fh),
+             fh_get_file_name (r->fh),
             var[0]->name, var[0]->type == ALPHA ? _("string") : _("numeric"),
             var[i]->name, var[i]->type == ALPHA ? _("string") : _("numeric")));
 
@@ -1196,11 +1176,11 @@ read_value_labels (struct sfm_reader *r,
          if (var[0]->type == NUMERIC)
            msg (MW, _("%s: File contains duplicate label for value %g for "
                        "variable %s."),
-                 fh_get_filename (r->fh), label->value.f, v->name);
+                 fh_get_file_name (r->fh), label->value.f, v->name);
          else
            msg (MW, _("%s: File contains duplicate label for value `%.*s' "
                        "for variable %s."),
-                 fh_get_filename (r->fh), v->width, label->value.s, v->name);
+                 fh_get_file_name (r->fh), v->width, label->value.s, v->name);
        }
     }
 
@@ -1241,10 +1221,10 @@ buf_read (struct sfm_reader *r, void *buf, size_t byte_cnt, size_t min_alloc)
     {
       if (ferror (r->file))
        msg (ME, _("%s: Reading system file: %s."),
-             fh_get_filename (r->fh), strerror (errno));
+             fh_get_file_name (r->fh), strerror (errno));
       else
        corrupt_msg (ME, _("%s: Unexpected end of file."),
-                     fh_get_filename (r->fh));
+                     fh_get_file_name (r->fh));
       r->ok = false;
       return NULL;
     }
@@ -1260,7 +1240,7 @@ buf_unread(struct sfm_reader *r, size_t byte_cnt)
   if ( 0 != fseek(r->file, -byte_cnt, SEEK_CUR))
     {
       msg (ME, _("%s: Seeking system file: %s."),
-          fh_get_filename (r->fh), strerror (errno));
+          fh_get_file_name (r->fh), strerror (errno));
     }
 }
 
@@ -1270,19 +1250,19 @@ buf_unread(struct sfm_reader *r, size_t byte_cnt)
 static int
 read_documents (struct sfm_reader *r, struct dictionary *dict)
 {
-  int32 line_cnt;
+  int32_t line_cnt;
   char *documents;
 
   if (dict_get_documents (dict) != NULL)
     lose ((ME, _("%s: System file contains multiple "
                  "type 6 (document) records."),
-          fh_get_filename (r->fh)));
+          fh_get_file_name (r->fh)));
 
   assertive_buf_read (r, &line_cnt, sizeof line_cnt, 0);
   if (line_cnt <= 0)
     lose ((ME, _("%s: Number of document lines (%ld) "
                  "must be greater than 0."),
-          fh_get_filename (r->fh), (long) line_cnt));
+          fh_get_file_name (r->fh), (long) line_cnt));
 
   documents = buf_read (r, NULL, 80 * line_cnt, line_cnt * 80 + 1);
   /* FIXME?  Run through asciify. */
@@ -1315,7 +1295,7 @@ buffer_input (struct sfm_reader *r)
   if (ferror (r->file))
     {
       msg (ME, _("%s: Error reading file: %s."),
-           fh_get_filename (r->fh), strerror (errno));
+           fh_get_file_name (r->fh), strerror (errno));
       r->ok = false;
       return 0;
     }
@@ -1355,14 +1335,14 @@ read_compressed_data (struct sfm_reader *r, flt64 *buf)
               return 0;
             lose ((ME, _("%s: Compressed data is corrupted.  Data ends "
                          "in partial case."),
-                   fh_get_filename (r->fh)));
+                   fh_get_file_name (r->fh)));
          case 253:
            /* Code 253 indicates that the value is stored explicitly
               following the instruction bytes. */
            if (r->ptr == NULL || r->ptr >= r->end)
              if (!buffer_input (r))
                 lose ((ME, _("%s: Unexpected end of file."),
-                       fh_get_filename (r->fh)));
+                       fh_get_file_name (r->fh)));
            memcpy (buf++, r->ptr++, sizeof *buf);
            if (buf >= buf_end)
              goto success;
@@ -1403,7 +1383,7 @@ read_compressed_data (struct sfm_reader *r, flt64 *buf)
            {
              if (buf_beg != buf)
                lose ((ME, _("%s: Unexpected end of file."),
-                      fh_get_filename (r->fh))); 
+                      fh_get_file_name (r->fh))); 
              else
                return 0;
            }
@@ -1524,13 +1504,13 @@ fread_ok (struct sfm_reader *r, void *buffer, size_t byte_cnt)
       if (ferror (r->file)) 
         {
           msg (ME, _("%s: Reading system file: %s."),
-               fh_get_filename (r->fh), strerror (errno));
+               fh_get_file_name (r->fh), strerror (errno));
           r->ok = false; 
         }
       else if (read_bytes != 0) 
         {
           msg (ME, _("%s: Partial record at end of system file."),
-               fh_get_filename (r->fh));
+               fh_get_file_name (r->fh));
           r->ok = false; 
         }
       return 0;
@@ -1558,3 +1538,4 @@ sfm_detect (FILE *file)
     return false;
   return true; 
 }
+