(parse_rank_function) Fix msg() bug found by -Wformat.
[pspp] / src / pfm-read.c
index 50b15c5433be2f78b64f20e9b625294fd0a26312..4d95eba22ae3a05b7ff716c3d7dfb96c9fcb2025 100644 (file)
@@ -16,8 +16,8 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA. */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
 
 #include <config.h>
 #include "pfm-read.h"
@@ -408,7 +408,7 @@ read_header (struct pfm_reader *r)
 static void
 read_version_data (struct pfm_reader *r, struct pfm_read_info *info)
 {
-  char *date, *time, *product, *subproduct;
+  char *date, *time, *product, *author, *subproduct;
   int i;
 
   /* Read file. */
@@ -417,6 +417,7 @@ read_version_data (struct pfm_reader *r, struct pfm_read_info *info)
   date = read_pool_string (r);
   time = read_pool_string (r);
   product = match (r, '1') ? read_pool_string (r) : (unsigned char *) "";
+  author = match (r, '2') ? read_pool_string (r) : (unsigned char *) "";
   subproduct
     = match (r, '3') ? read_pool_string (r) : (unsigned char *) "";
 
@@ -448,8 +449,8 @@ read_version_data (struct pfm_reader *r, struct pfm_read_info *info)
       info->creation_time[8] = 0;
 
       /* Product. */
-      st_trim_copy (info->product, product, sizeof info->product);
-      st_trim_copy (info->subproduct, subproduct, sizeof info->subproduct);
+      str_copy_trunc (info->product, sizeof info->product, product);
+      str_copy_trunc (info->subproduct, sizeof info->subproduct, subproduct);
     }
 }
 
@@ -497,7 +498,7 @@ read_variables (struct pfm_reader *r, struct dictionary *dict)
   if (match (r, '6'))
     {
       weight_name = read_pool_string (r);
-      if (strlen (weight_name) > 8
+      if (strlen (weight_name) > SHORT_NAME_LEN
         error (r, _("Weight variable name (%s) truncated."), weight_name);
     }
   
@@ -521,9 +522,9 @@ read_variables (struct pfm_reader *r, struct dictionary *dict)
       for (j = 0; j < 6; j++)
         fmt[j] = read_int (r);
 
-      if (!var_is_valid_name (name, false) || *name == '#'
-        error (r, _("position %d: Invalid variable name `%s'."), name);
-      st_uppercase (name);
+      if (!var_is_valid_name (name, false) || *name == '#' || *name == '$')
+        error (r, _("position %d: Invalid variable name `%s'."), i, name);
+      str_uppercase (name);
 
       if (width < 0 || width > 255)
        error (r, "Bad width %d for variable %s.", width, name);
@@ -605,7 +606,7 @@ parse_value (struct pfm_reader *r, struct variable *vv)
     {
       char string[256];
       read_string (r, string);
-      st_bare_pad_copy (v.s, string, 8); 
+      buf_copy_str_rpad (v.s, 8, string); 
     }
   else
     v.f = read_float (r);
@@ -699,7 +700,7 @@ pfm_read_case (struct pfm_reader *r, struct ccase *c)
         {
           char string[256];
           read_string (r, string);
-          st_bare_pad_copy (case_data_rw (c, idx)->s, string, width);
+          buf_copy_str_rpad (case_data_rw (c, idx)->s, width, string);
           idx += DIV_RND_UP (width, MAX_SHORT_STRING);
         }
     }