Don't assume that the output of strftime for "%c" ("national

representation of time and date") won't change in time.  Instead
of hard coding the locations of the time elements and hoping that
they don't move use strftime to generate the desired formats in
the first place.

PR:	bin/7826
This commit is contained in:
joe 2000-06-18 22:18:04 +00:00
parent 2be2bf630e
commit 52bc7db3a0

View File

@ -293,30 +293,25 @@ static void
printtime(ftime)
time_t ftime;
{
int i;
char longstring[80];
static time_t now;
const char *format;
if (now == 0)
now = time(NULL);
strftime(longstring, sizeof(longstring), "%c", localtime(&ftime));
for (i = 4; i < 11; ++i)
(void)putchar(longstring[i]);
#define SIXMONTHS ((365 / 2) * 86400)
if (f_sectime)
for (i = 11; i < 24; i++)
(void)putchar(longstring[i]);
/* Mmm dd hh:mm:ss yyyy */
format = "%b %e %T %Y ";
else if (ftime + SIXMONTHS > now && ftime < now + SIXMONTHS)
for (i = 11; i < 16; ++i)
(void)putchar(longstring[i]);
else {
(void)putchar(' ');
for (i = 20; i < 24; ++i)
(void)putchar(longstring[i]);
}
(void)putchar(' ');
/* Mmm dd hh:mm */
format = "%b %e %R ";
else
/* Mmm dd yyyy */
format = "%b %e %Y ";
strftime(longstring, sizeof(longstring), format, localtime(&ftime));
fputs(longstring, stdout);
}
static int