[Issue 5378] New: File.byLine terminator string

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Dec 26 07:13:53 PST 2010


http://d.puremagic.com/issues/show_bug.cgi?id=5378

           Summary: File.byLine terminator string
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Keywords: rejects-valid
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody at puremagic.com
        ReportedBy: bearophile_hugs at eml.cc


--- Comment #0 from bearophile_hugs at eml.cc 2010-12-26 07:11:51 PST ---
This is the signature of File.byLine:

ByLine!(Char,Terminator) byLine(Terminator = char, Char = char)
(KeepTerminator keepTerminator = KeepTerminator.no, Terminator terminator =
'\x0a'); 

But on Windows the line terminators are 2 chars long (CR+LF), see:
http://en.wikipedia.org/wiki/Newline#Representations

So I think the second argument of argument byLine() needs to be a string.

This is code I expected to use, that currently is not accepted:

import std.stdio;
void main() {
    auto lines = File("test.txt").byLine(File.KeepTerminator.no, "\r\n");
}

----------------

After that bug report, a little enhancement request: generally on Windows I
usually open files with Windows-style line terminators, while on Linux I open
files with Unix-style line terminators, so if possible a better default for the
second argument of byLine() is a string constant that changes according to the
operating system.

----------------

A workaround is to open the file in text mode, but I don't know if this works
well if you want to open a Windows-style file on Linux:


import std.stdio;
void main() {
    auto lines = File("test.txt", "r").byLine();
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list