When is \n converted to \r\n? and why?
Christopher G. Faylor
cgf@cygnus.com
Fri Oct 30 09:06:00 GMT 1998
In article <Pine.GSO.3.96.981028153437.966D-100000.cygnus.gnu-win32@fungus>,
Urban Widmark <urban@svenskatest.se> wrote:
>(using cygwin32 19.3 & 19.1?)
>>If I create a small example file:
>>$ echo a > xx
>$ ls -l xx
>-rw-r--r-- 1 544 everyone 3 Oct 28 15:43 xx
>>it will contain "a\r\n" since I use the default (non-binary mounts)
>>But if I do:
>$ echo a | wc -c
> 2
>>I get only 2 chars ... ok, so the translation is done when writing to
>disk.
Depending on the shell you're using, pipes will default to
binary mode. That's obviously the case here.
>Then something like this will fail:
>>$ echo a | tr -d '\r' > yy
>$ ls -l yy
>-rw-r--r-- 1 544 everyone 3 Oct 28 15:48 yy
>>So how am I supposed to remove the \r from the echo output? Well, I know
>non-cygwin ways to remove the \r, the issue is if this is a tr bug, a
If you think that tr should operate on its input and output in a
binary fashion then it is a tr bug for not setting its stdout to
binary. Possibly, setting CYGWIN32=binmode will work.
>It's also strange that writing to a pipe is different from writing to
>disk, that seems very non-unix'ish. I think it would be better if
>conversion could be toggled by changing an environment variable, it should
>not depend on the destination of my output.
See above. How this operates also depends on whether the shell you're
using sets pipes to binmode or not.
--
cgf@cygnus.com
http://www.cygnus.com/
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".
More information about the Cygwin
mailing list