base64 doesn't call freopen() nor setmode() against stdin, and doesn't give "rb" flag to fopen(). So, base64 sometimes fails to encode data correctly on some environment. For example, zsh on Cygwin forces stdin to be text-mode.
Test case (zsh on Cygwin, filesystems are mounted as binary-mode): $ printf '\x0D\x0A' > crlf-src $ base64 < crlf-src | base64 -d > crlf-dst $ cmp crlf-src crlf-dst crlf-src crlf-dst differ: char 1, line 1
