Restore leading space in movemail pop output

* 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.
This commit is contained in:
Paul Eggert 2016-03-05 11:30:51 -08:00
parent 98b8d44892
commit b1abce1a30

View file

@ -799,6 +799,24 @@ mbx_write (char *line, int len, FILE *mbf)
return fwrite (line, 1, len, mbf) == len && 0 <= fputc ('\n', 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 static bool
mbx_delimit_begin (FILE *mbf) mbx_delimit_begin (FILE *mbf)
{ {
@ -809,7 +827,7 @@ mbx_delimit_begin (FILE *mbf)
char fromline[100]; char fromline[100];
if (! strftime (fromline, sizeof fromline, 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; errno = EOVERFLOW;
return false; return false;