This is the mail archive of the cygwin mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Cygwin, zsh forces stdin to be text-mode. By this, some commands don't work correctly on zsh. For example, when you encode stdin with base64 on zsh, there is a possibility that base64 produces an incorrect result. I wrote a test case. Save the script below as 'test.sh': ---- printf '\x0D\x0A' > crlf-src base64 < crlf-src | base64 -d > crlf-dst if cmp crlf-src crlf-dst >/dev/null; then echo "OK" else echo "NG" fi ---- And try this: $ /bin/bash test.sh OK $ /bin/zsh test.sh NG Many commands, such as cat and gzip, explicitly call freopen() or setmode() to set stdin as binary-mode. So, such commands work well even on zsh. But, base64 doesn't take such measures and doesn't work well on zsh. Some other commands might have the same problem. To fix the problem, it is the easiest way to simply erase cygwin_premain0() in main.c of zsh, and recompile zsh. If you don't mount any filesystem as text-mode, there will be no problem. But it seems that cygwin_premain0() is introduced for text-mode users. So, the solution I mentioned might not work well for text-mode users.
Attachment:
cygcheck.out
Description: Text document
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |