From 5c83759364272b19ceafbef46d057f0430a12698 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 8 Mar 2017 17:23:31 +0100 Subject: [PATCH] wks: Put stdout into binary mode for Windows. * tools/send-mail.c (send_mail_to_file): Call es_set_binary. -- Without that, output to stdout via --send is mangled: The "\r\n" is translated to "\r\r\n" which is bad because other software (e.g. Thunderbird) translates this again to "\n\n" and thus put all mail header liens after the first into the body. Signed-off-by: Werner Koch --- tools/send-mail.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/tools/send-mail.c b/tools/send-mail.c index 34d47c16d..fb1a9d0c9 100644 --- a/tools/send-mail.c +++ b/tools/send-mail.c @@ -71,13 +71,23 @@ send_mail_to_file (estream_t fp, const char *fname) if (!buffer) return gpg_error_from_syserror (); - outfp = !strcmp (fname,"-")? es_stdout : es_fopen (fname, "wb"); - if (!outfp) + + if (!strcmp (fname,"-")) { - err = gpg_error_from_syserror (); - log_error ("error creating '%s': %s\n", fname, gpg_strerror (err)); - goto leave; + outfp = es_stdout; + es_set_binary (es_stdout); } + else + { + outfp = es_fopen (fname, "wb"); + if (!outfp) + { + err = gpg_error_from_syserror (); + log_error ("error creating '%s': %s\n", fname, gpg_strerror (err)); + goto leave; + } + } + for (;;) { if (es_read (fp, buffer, sizeof buffer, &nbytes))