www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1998/10/30/17:01:30

From: cgf AT cygnus DOT com (Christopher G. Faylor)
Subject: Re: When is \n converted to \r\n? and why?
30 Oct 1998 17:01:30 GMT :
Message-ID: <71crda$qn4$1@cronkite.cygnus.com>
References: <Pine DOT GSO DOT 3 DOT 96 DOT 981028153437 DOT 966D-100000 DOT cygnus DOT gnu-win32 AT fungus>
X-Newsreader: trn 4.0-test63 (15 March 1998)

In article <Pine DOT GSO DOT 3 DOT 96 DOT 981028153437 DOT 966D-100000 DOT cygnus DOT gnu-win32 AT fungus>,
Urban Widmark <urban AT svenskatest DOT 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 AT cygnus DOT com
http://www.cygnus.com/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019