Line endings when redirecting output to file on windows.
Bastiaan Veelo
Bastiaan at Veelo.net
Sun Jun 3 16:24:14 UTC 2018
On Sunday, 3 June 2018 at 15:42:48 UTC, rikki cattermole wrote:
> On 04/06/2018 3:24 AM, Bastiaan Veelo wrote:
>> I need some help understanding where extra '\r' come from when
>> output is redirected to file on Windows.
>>
>> First, this works correctly:
>> rdmd --eval="(\"hello\" ~ newline).toFile(\"out.txt\");"
>> As expected, out.txt contains "hello\r\n".
>>
>> I would expect the following to do the same, but it doesn't:
>> rdmd --eval="write(\"hello\" ~ newline);" > out.txt
>> Now out.txt contains "hello\r\r\n".
>>
>> Who is doing the extra conversion here, and how do I stop it?
>>
>> Thanks!
>> Bastiaan.
>
> That would be cmd. Not sure you can stop it without piping it
> after rdmd to remove the \r.
Thanks. It is starting to dawn on me that I shouldn't use
`newline` and `toFile` to write text files, but rather always use
"\n" as line ending and use `write` for both writing to stdout
and file.
rdmd --eval="File(\"out.txt\", \"w\").write(\"hello\n\");"
and
rdmd --eval="write(\"hello\n\");" > out.txt
both produce "hello\r\n" on Windows.
Am I correct, or is there a more idiomatic way of writing strings
to text files?
More information about the Digitalmars-d-learn
mailing list