Subject: Re: Possible ZSH bug with IO direction
From: m0viefreak <[email-masked]>
To: [email-masked]
Date: Sun, 24 Apr 2016 23:23:04 +0200
List-Id: Zsh Workers List <zsh-workers.zsh.org>

On 24.04.2016 21:01, Peter Stephenson wrote:
> On Sun, 24 Apr 2016 11:36:44 -0700
> Bart Schaefer <[email-masked]> wrote:
>> On Apr 24,  1:17pm, Peter Stephenson wrote:
>> }
>> } Mounting the filesystem within Cygwin as binary works here.
>>
>> Really?  That contradicts what the main.c comment asserts.
> 
> So it seems like "binary" isn't quite what it's cracked up to be.
> 
> The alternative might be to do something similar in the lower levels of
> zsh, i.e. map \r\n to \n when reading shell input.  If done in input.c
> it's no worse than doing it in the OS abstraction, and doesn't affect
> fd's used by othe programmes.

I think the cygwin_premain0 in main.c is very dangerous.

In fact, bash had the same problem years ago and the hook was removed.
See http://cygwin.com/ml/cygwin/2006-10/msg00989.html for details.

Another example I found:

$ zcat < mc.1.gz > /dev/null
gzip: stdin: invalid compressed data--crc error
gzip: stdin: invalid compressed data--length error

zcat is forced to use O_TEXT and fails to decompress the file whil using
$ zcat mc.1.gz'
directy works just fine.

IMHO cygwin_premain0 should be removed completely. As a result,of
course, scripts created in windows editors such as notepad, that contain
CRLF line endings, could lead to syntax errors, but surely that's less
of a problem and easily fixable using a proper editor.