sys-file-reader: Break reading a system file into two stages.
[pspp] / src / language / dictionary / sys-file-info.c
index f719ba2fb1e8c0b9e508c49017fc0f3811120faa..6b74f75a6622d0860b8679496063bbfd02df0806 100644 (file)
@@ -68,6 +68,7 @@ static int describe_variable (const struct variable *v, struct tab_table *t,
 int
 cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED)
 {
+  struct sfm_reader *sfm_reader;
   struct file_handle *h;
   struct dictionary *d;
   struct tab_table *t;
@@ -113,7 +114,11 @@ cmd_sysfile_info (struct lexer *lexer, struct dataset *ds UNUSED)
       goto error;
     }
 
-  reader = sfm_open_reader (h, encoding, &d, &info);
+  sfm_reader = sfm_open (h);
+  if (sfm_reader == NULL)
+    goto error;
+
+  reader = sfm_decode (sfm_reader, encoding, &d, &info);
   if (!reader)
     goto error;