|
Unix Programming - The Elements of Operating-System Style - File Attributes and Record Structures
File Attributes and Record Structures
Unix files have neither record structure nor attributes. In
some operating systems, files have an associated record structure; the
operating system (or its service libraries) knows about files with a
fixed record length, or about text line termination and whether CR/LF
is to be read as a single logical character.
In other operating systems, files and directories can have
name/attribute pairs associated with them — out-of-band data
used (for example) to associate a document file with an application
that understands it. (The classic Unix way to handle these associations is
to have applications recognize ‘magic numbers’, or other
type data within the file itself.)
OS-level record structures are generally an optimization
hack, and do
little more than complicate APIs and programmers' lives. They
encourage the use of opaque record-oriented file formats that generic
tools like text editors cannot read properly.
File attributes can be useful, but (as we will see in Chapter20) can raise some awkward semantic issues in a
world of byte-stream-oriented tools and
pipes. When file
attributes are supported at the operating-system level, they
predispose programmers to use opaque formats and lean on the file
attributes to tie them to the specific applications that interpret
them.
To design the perfect anti-Unix, have a cumbersome set of record
structures that make it a hit-or-miss proposition whether any given
tool will be able to even read a file as the writer intended it. Add
file attributes and have the system depend on them heavily, so that
the semantics of a file will not be determinable by looking at the
data within it.
[an error occurred while processing this directive]
|