On 02/12/2017 05:32 AM, Corinna Vinschen wrote: > I understand the desire but it's s a pretty tricky problem. awk is > used to manipulate text input in the first place so it treats all > input, files as well as stdin, as text. So, shall we drop this > behaviour for files only? Or for stdin as well? How many existing > setups are bound to fail after a change? I think part of the confusion is that POSIX states that awk behavior is only well-defined on "text files" - but that is the POSIX definition of a text file (no invalid characters in multibyte encoding, no over-long lines, no NUL bytes, trailing newline), and not strictly related to the Windows definition of text file (one with CRLF line endings). But remember, just because POSIX says that awk is only required to be well-behaved on text files does not mean that awk cannot be usefully used on non-text files, and anything we do that silently converts binary data into corrupted text, when a binary mount was requested, gets in the way of that usage pattern. As long as we aren't using fopen("rb") to force binary mode, but rather just fopen("r") to let the mount mode rule, we should be okay for any file that we open. As for stdin, ideally stdin is either from a file (where the shell opened it according to mount mode) or from a pipeline (where presumably the other end of the pipe opened the file in the correct mount mode, or where the user can inject a d2u into the pipeline if they want CR stripped). Yes, it means that any existing users that were lazily relying on the forced text mode to automatically strip CRs will now have to fix their scripts to add a d2u invocation, but I already hit some of that fallout when I changed bash to quit forcing text mode. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org