sys-file-reader: Avoid hanging forever if a system file has no variables.
[pspp] / doc / dev / system-file-format.texi
index 2d576733081d3018e402bf7072fae9a3ca63eb6d..4eb061580db5878b467fdbf4f6608f61d114972b 100644 (file)
@@ -178,7 +178,7 @@ contribute to this value beyond the first 255 bytes.   Further, system
 files written by some systems set this value to -1.  In general, it is
 unsafe for systems reading system files to rely upon this value.
 
-@item int32 compressed;
+@item int32 compression;
 Set to 0 if the data in the file is not compressed, 1 if the data is
 compressed with simple bytecode compression, 2 if the data is ZLIB
 compressed.  This field has value 2 if and only if @code{rec_type} is
@@ -262,6 +262,10 @@ wider than 255 bytes.  Such very long string variables are represented
 by a number of narrower string variables.  @xref{Very Long String
 Record}, for details.
 
+A system file should contain at least one variable and thus at least
+one variable record, but system files have been observed in the wild
+without any variables (thus, no data either).
+
 @example
 int32               rec_type;
 int32               type;
@@ -328,7 +332,7 @@ This field is present only if @code{has_var_label} is set to 1.  It is
 set to the length, in characters, of the variable label.  The
 documented maximum length varies from 120 to 255 based on SPSS
 version, but some files have been seen with longer labels.  PSPP
-accepts longer labels and truncates them to 255 bytes on input.
+accepts labels of any length.
 
 @item char label[];
 This field is present only if @code{has_var_label} is set to 1.  It has
@@ -352,6 +356,7 @@ in the range.  When a range plus a value are present, the third
 element denotes the additional discrete missing value.
 @end table
 
+@anchor{System File Output Formats}
 The @code{print} and @code{write} members of sysfile_variable are output
 formats coded into @code{int32} types.  The least-significant byte
 of the @code{int32} represents the number of decimal places, and the