thomas@utah-gr.UUCP (Spencer W. Thomas) (01/16/84)
In general, most UNIX magtape drivers use the following conventions with the RAW device: read(fh, buf, nbytes) returns -1 when nbytes < physical record size otherwise, read(fh, buf, nbytes) returns the actual number of bytes in the record (i.e., it transfers only a single record, regardless of the byte count.) I have always ascribed the former behavior to a limitation of the controller; it transfers a full record or nothing. If you think about this, you will see that can't be the case - there is no way to know the record size without reading it! I think that most tape controllers will read a "partial" record, just dumping the "unread" bytes on the floor. They will probably set an error bit, too, indicating that you lost some data. In any case, you will usually not get anything but your buffer written on (although I recall some really interesting stories about early Vax tape controllers). =Spencer