Xref: utzoo comp.os.vms:8765 comp.unix.wizards:11213
Path: utzoo!attcan!uunet!husc6!mailrus!nrl-cmf!ames!oliveb!sun!gorodish!guy
From: guy@gorodish.Sun.COM (Guy Harris)
Newsgroups: comp.os.vms,comp.unix.wizards
Subject: Re: VMS vs. UNIX file system
Message-ID: <68855@sun.uucp>
Date: 19 Sep 88 03:43:59 GMT
References: <411@marob.MASA.COM> <3597@encore.UUCP> <3438@crash.cts.com>
Sender: news@sun.uucp
Lines: 37

> I disagree.  I much prefer VMS's variable-length-record text file format
> to Unix's byte-stream.  Why?  Because the Unix byte stream uses perfectly
> legitimate data as a record separator.  To make matters worse, the standard
> C method for dealing with strings uses a *different* character as a string
> terminator!  Unix has a lot of GREAT ideas in it, but this isn't one of them.

Umm, as others have already pointed out, UNIX doesn't use '\n' as a record
separator; it uses it as a *line* separator.  UNIX - like VMS - ultimately (at
the kernel level) implements files as a sequence of bytes (RMS sits on top of
QIOs that read virtual blocks of the file, *n'est ce pas?*).

One file format UNIX happens to implement atop this abstraction is the "text
file"; "text files" consist of "lines", which are sequences of bytes (not
containing '\0' - some applications can't handle them, since it's the C string
terminator) ending with '\n'.

Other file formats exist, such as executable images and archives, which are,
respectively, the UNIX equivalents of images (and object files - object files
and images use the same format) and library files.

However, UNIX doesn't come standard with any libraries that implement "record"
files.  Such libraries are available from third-party vendors (e.g., C-ISAM),
and I very much doubt that they use '\n' or any other particular byte value as
a record separator.

Some of the real differences between UNIX and VMS here are that:

	1) As already stated, VMS comes with libraries that implement "record"
	   files, while UNIX doesn't;

	2) Many UNIX utilities (e.g., "cp") deal with files at the byte-stream
	   level, so they don't care *what* format the file is in;

	3) Many more UNIX facilities use text files, rather than record files,
	   as their underlying file format; while one reason for this may be
	   the absence of a "record file" library, another reason is that you
	   can use the standard UNIX text file tools to manipulate those files.