On Sun, Sep 3, 2017 at 2:06 PM, Clem Cole <clemc@ccc.com> wrote:


On Sun, Sep 3, 2017 at 11:08 AM, Warner Losh <imp@bsdimp.com> wrote:


On Sat, Sep 2, 2017 at 8:54 PM, Dave Horsfall <dave@horsfall.org> wrote:
On Sat, 2 Sep 2017, Nemo wrote:

Hhhmmm... This begs the historical question:  When did LF replace CR/LF in UNIX?

Unix has always used NL as the terminator :-)

<CR><LF> was the line terminator in DEC operating systems that grew up around the same time as Unix. CP/M and MS-DOS inherited that from them since those systems were developed, in part, using cross compilers running on DEC gear with DEC OSes. Unix came from the Multics world where LF was used as the line terminator... Thankfully, neither CP/M nor MS-DOS picked up DEC's RMS...

Warner 
The fun story on that Warner is after years of dogged defense of RMS, when C was written for VMS, Cutler had to add Stream I/O.   The moment is was released, much (?most?) of customer base (including a lot of internal folks like the compiler runtime and DB folks) switched to using it.   It was so much easier.​  I never heard Dave back down, but it I used to smile when I saw the statistics.

We got the first release of VAX-C for VMS at school. It didn't have the Stream I/O mode and all kinds of software was totally broken. There were stern warnings in the release notes about this as well, IIRC. However, in the next release it required an upgrade to the next rev of VMS since the C runtime now depended on the Stream I/O features and all those programs that were broken mostly worked w/o change. Took another few releases before things liked exit() worked in a Unix-y way rather than as a thin wrapper for SYS$EXIT() and such...

Warner