Voxelmanip Forums
ROllerozxa ROllerozxa
Site Admin
Posted on 2023-08-16 21:43 Link | ID: 677
Carriage Return, also known as CR, also known as \r, also known as 0x0D, is the bane of every developer working on both Unix-like and Windows systems, as well as the bane of every web developer working with forms.

It all started in 1960 when Cary Returno tried to send a letter without a postage stamp, and getting it swiftly returned to sender. On that day, Mr. Returno swore to curse every computer developer with endless misery. 15 years later this became a reality.

When making a new line, programs have the choice of representing the newline as one or two characters. Either simply \n (LF), or \r\n (CRLF). The latter is preferred by individuals who have been damaged by the dangers of Windows, the former is preferred by those who look beyond anything with CP/M legacy. Most programs are destined to have to deal with both, or convert to one or the other transparently.

However, some programs aim to make a political statement. Windows' batchfiles treat \n as simply thin air if it is not preceded by an \r beforehand, Notepad also behaved in this manner up until recently. On the other side, the Bourne Again Shell and others make a statement in favour of LF. This is especially disturbing if you run the Bourne Again Shell on enemy turf inside the MSYS2 environment, watching in real time both sides colliding in the comfort of your computer.



In a moment of brilliance by whoever decided on the web standards, they felt that web developers aren't suffering enough and decided that CRLF is the default form of newline in HTTP. It is used for newlines in HTTP headers, and it is used for form data, to the horror of any web developer who has to watch in terror as their backend parses these cursed line endings.

Many code functions have been written to solve one problem - strip those damn \r characters. This code snippets originates from a mentally ill PHP developer's codebase (The illness caused either by CRLF or PHP, doctors are still uncertain about the cause):

function normalise($text) {
// I HATE CRLF I HATE CRLF
return trim(str_replace("\r", "", $text));
}

It is still unclear who will win in the line ending wars... Just kidding LF has already won, fuck CRLF.
Compa Compa
please just get off the internet already jamie
Posted on 2023-08-17 05:58 (edited 2023-08-17 05:59) Link | ID: 678
I always just presumed Windows did CRLF simply in a miserly attempt to break interoperability of sending .txt files and the like between Unix-based systems and WIndows-based systems. That or it was meant as some sort of compatibility hack that doesn't actually work and never did work properly.

And then don't some oddball OSes only use CR endings? Maybe some early MacOS versions?
olive olive
Posted on 2023-08-27 21:13 (edited 2023-08-27 21:14) Link | ID: 690
iirc some early Macs did LFCR, which is technically also correct from an ASCII/typewriter POV.
Don't forget Unicode throwing some new newline chars in the mix intended to replace both CR & LF
ROllerozxa ROllerozxa
Site Admin
Posted on 2023-08-27 21:34 Link | ID: 691
I always just presumed Windows did CRLF simply in a miserly attempt to break interoperability of sending .txt files and the like between Unix-based systems and WIndows-based systems. That or it was meant as some sort of compatibility hack that doesn't actually work and never did work properly.
CRLF originates from typewriters, CR moves the typewriter's position to the very left and LF moves down a line. I believe that the reason Windows uses it is because MS-DOS uses it (and in turn, CP/M), while Unix and its descendants would simply use LF for newlines.

Also indeed, old Macintosh pre-OS X used to use only CR for newlines, but with OS X they dragged in the Unix standard LF alongside their new BSD-based operating system.
olive olive
Posted on 2023-09-28 12:08 Link | ID: 705
The easy solution is clearly to have everything on a single line!