From b1abce1a30c66a22766e3d4b8b4ff9ae852f150c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 5 Mar 2016 11:30:51 -0800 Subject: [PATCH] Restore leading space in movemail pop output MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * lib-src/movemail.c (movemail_strftime) [WINDOWSNT]: New function. (strftime) [WINDOWSNT]: New macro. (mbx_delimit_begin): Go back to previous version of this code, now that there’s a special-purpose WINDOWSNT implementation that should do the right thing. That way, the output continues to use leading space rather than leading zero for day of month. --- lib-src/movemail.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib-src/movemail.c b/lib-src/movemail.c index efa0219e587..873d85dfd77 100644 --- a/lib-src/movemail.c +++ b/lib-src/movemail.c @@ -799,6 +799,24 @@ mbx_write (char *line, int len, FILE *mbf) return fwrite (line, 1, len, mbf) == len && 0 <= fputc ('\n', mbf); } +#ifdef WINDOWSNT +/* Work around MS-Windows lack of support for %e or %T with a + special-purpose strftime that assumes the exact format that + movemail uses. */ +static size_t +movemail_strftime (char *s, size_t size, char const *format, + struct tm const *tm) +{ + size_t n = strftime (s, size, "From movemail %a %b %d %H:%M:%S %Y\n", tm); + char *mday = s + sizeof "From movemail Sun Jan " - 1; + if (*mday == '0') + *mday = ' '; + return n; +} +# undef strftime +# define strftime movemail_strftime +#endif + static bool mbx_delimit_begin (FILE *mbf) { @@ -809,7 +827,7 @@ mbx_delimit_begin (FILE *mbf) char fromline[100]; if (! strftime (fromline, sizeof fromline, - "From movemail %a %b %d %H:%M:%S %Y\n", ltime)) + "From movemail %a %b %e %T %Y\n", ltime)) { errno = EOVERFLOW; return false; -- 2.39.5