QUICK CLUSTER: Improve error messages and coding style.
[pspp] / src / data / por-file-reader.c
index 8d008b1dd610a30574be726f7edc74ff54c80b39..125d7be2598a37bb516c80b35d3839a794c3811a 100644 (file)
@@ -77,7 +77,7 @@ struct pfm_reader
     int line_length;            /* Number of characters so far on this line. */
     char cc;                   /* Current character. */
     char *trans;                /* 256-byte character set translation table. */
-    int var_cnt;                /* Number of variables. */
+    int n_vars;                 /* Number of variables. */
     int weight_index;          /* 0-based index of weight variable, or -1. */
     struct caseproto *proto;    /* Format of output cases. */
     bool ok;                    /* Set false on I/O error. */
@@ -215,7 +215,7 @@ advance (struct pfm_reader *r)
       r->line_length = 0;
     }
   if (c == EOF)
-    error (r, _("unexpected end of file"));
+    error (r, _("Unexpected end of file"));
 
   if (r->trans != NULL)
     c = r->trans[c];
@@ -265,7 +265,7 @@ pfm_open (struct file_handle *fh)
   r->line_length = 0;
   r->weight_index = -1;
   r->trans = NULL;
-  r->var_cnt = 0;
+  r->n_vars = 0;
   r->proto = NULL;
   r->ok = true;
   if (setjmp (r->bail_out))
@@ -588,7 +588,7 @@ read_version_data (struct pfm_reader *r, struct any_read_info *info)
       info->float_format = FLOAT_NATIVE_DOUBLE;
       info->integer_format = INTEGER_NATIVE;
       info->compression = ANY_COMP_NONE;
-      info->case_cnt = -1;
+      info->n_cases = -1;
 
       /* Date. */
       info->creation_date = xmalloc (11);
@@ -623,28 +623,19 @@ static struct fmt_spec
 convert_format (struct pfm_reader *r, const int portable_format[3],
                 struct variable *v, bool *report_error)
 {
-  struct fmt_spec format;
-  bool ok;
-
-  if (!fmt_from_io (portable_format[0], &format.type))
+  enum fmt_type type;
+  if (fmt_from_io (portable_format[0], &type))
     {
-      if (*report_error)
-        warning (r, _("%s: Bad format specifier byte (%d).  Variable "
-                      "will be assigned a default format."),
-                 var_get_name (v), portable_format[0]);
-      goto assign_default;
-    }
-
-  format.w = portable_format[1];
-  format.d = portable_format[2];
+      struct fmt_spec format = {
+        .type = type,
+        .w = portable_format[1],
+        .d = portable_format[2],
+      };
 
-  msg_disable ();
-  ok = (fmt_check_output (&format)
-        && fmt_check_width_compat (&format, var_get_width (v)));
-  msg_enable ();
+      if (fmt_check_output (&format)
+          && fmt_check_width_compat (&format, var_get_width (v)))
+        return format;
 
-  if (!ok)
-    {
       if (*report_error)
         {
           char fmt_string[FMT_STRING_LEN_MAX + 1];
@@ -658,12 +649,15 @@ convert_format (struct pfm_reader *r, const int portable_format[3],
                           "invalid format specifier %s."),
                      var_get_name (v), var_get_width (v), fmt_string);
         }
-      goto assign_default;
+    }
+  else
+    {
+      if (*report_error)
+        warning (r, _("%s: Bad format specifier byte (%d).  Variable "
+                      "will be assigned a default format."),
+                 var_get_name (v), portable_format[0]);
     }
 
-  return format;
-
-assign_default:
   *report_error = false;
   return fmt_default_for_width (var_get_width (v));
 }
@@ -680,9 +674,9 @@ read_variables (struct pfm_reader *r, struct dictionary *dict)
   if (!match (r, '4'))
     error (r, _("Expected variable count record."));
 
-  r->var_cnt = read_int (r);
-  if (r->var_cnt <= 0)
-    error (r, _("Invalid number of variables %d."), r->var_cnt);
+  r->n_vars = read_int (r);
+  if (r->n_vars <= 0)
+    error (r, _("Invalid number of variables %d."), r->n_vars);
 
   if (match (r, '5'))
     read_int (r);
@@ -694,7 +688,7 @@ read_variables (struct pfm_reader *r, struct dictionary *dict)
         error (r, _("Weight variable name (%s) truncated."), weight_name);
     }
 
-  for (i = 0; i < r->var_cnt; i++)
+  for (i = 0; i < r->n_vars; i++)
     {
       int width;
       char name[256];
@@ -716,8 +710,7 @@ read_variables (struct pfm_reader *r, struct dictionary *dict)
       for (j = 0; j < 6; j++)
         fmt[j] = read_int (r);
 
-      if (!dict_id_is_valid (dict, name, false)
-          || *name == '#' || *name == '$')
+      if (!dict_id_is_valid (dict, name) || *name == '#' || *name == '$')
         error (r, _("Invalid variable name `%s' in position %d."), name, i);
       str_uppercase (name);
 
@@ -859,11 +852,8 @@ read_value_label (struct pfm_reader *r, struct dictionary *dict)
 static void
 read_documents (struct pfm_reader *r, struct dictionary *dict)
 {
-  int line_cnt;
-  int i;
-
-  line_cnt = read_int (r);
-  for (i = 0; i < line_cnt; i++)
+  int n_lines = read_int (r);
+  for (int i = 0; i < n_lines; i++)
     {
       char line[256];
       read_string (r, line);
@@ -896,12 +886,12 @@ por_file_casereader_read (struct casereader *reader, void *r_)
       return NULL;
     }
 
-  for (i = 0; i < r->var_cnt; i++)
+  for (i = 0; i < r->n_vars; i++)
     {
       int width = caseproto_get_width (r->proto, i);
 
       if (width == 0)
-        case_data_rw_idx (c, i)->f = read_float (r);
+        *case_num_rw_idx (c, i) = read_float (r);
       else
         {
           uint8_t buf[256];
@@ -920,28 +910,28 @@ pfm_detect (FILE *file)
 {
   unsigned char header[464];
   char trans[256];
-  int cooked_cnt, raw_cnt, line_len;
+  int n_cooked, n_raws, line_len;
   int i;
 
-  cooked_cnt = raw_cnt = 0;
+  n_cooked = n_raws = 0;
   line_len = 0;
-  while (cooked_cnt < sizeof header)
+  while (n_cooked < sizeof header)
     {
       int c = getc (file);
-      if (c == EOF || raw_cnt++ > 512)
+      if (c == EOF || n_raws++ > 512)
         return ferror (file) ? -errno : 0;
       else if (c == '\n')
         {
-          while (line_len < 80 && cooked_cnt < sizeof header)
+          while (line_len < 80 && n_cooked < sizeof header)
             {
-              header[cooked_cnt++] = ' ';
+              header[n_cooked++] = ' ';
               line_len++;
             }
           line_len = 0;
         }
       else if (c != '\r')
         {
-          header[cooked_cnt++] = c;
+          header[n_cooked++] = c;
           line_len++;
         }
     }