Why does readln include the line terminator?

Georg Wrede georg.wrede at iki.fi
Tue Apr 14 09:09:41 PDT 2009


Walter Bright wrote:
> Daniel Keep wrote:
>> Because if it stripped it, there's no way to know what it was.  If you
>> want to do per-line processing but don't want to clobber the line
>> endings, readln has to return the line terminator.

Who wants to receive a line with varying line endings anyway???

> That's right; there are currently at least 6 different line terminators:
> 
> CR
> LF
> CRLF
> FF
> PS
> LS

So the programmer who wants to write portable code, has to implement 
awareness for all of these cases, in each of his programs?

This seems a bit laborious. Replacing stuff at the end of the string 
forces him to check, for *each* line, the length of the terminator, and 
then use ...$-1 and at other times ...$-2, etc. in his code.

In 25 years of computing, I have yet to see a file where variation of 
line termintators in the file contained some /deliberate/ information. 
And the only purpose for keeping the line endings would be to edit files 
while preserving the particular line terminator for each line. Which 
raises the question, how do you decide which terminator to use if you've 
inserted a line?

So the whole point is absurd. A reasonable default behavior for a file 
mongering program would be to output line terminators according to the 
operating system default. The case where one *wants* to preserve them, 
should be considered the exception.


I'm simply asking for the default to be to strip the terminator, thus 
relieving the programmer from, imho, gratuituos labor. You can still 
preserve the current functionality as an option.



More information about the Digitalmars-d mailing list