From 97e4e97bd1d7e665a045fcb4dca3bed3602dd229 Mon Sep 17 00:00:00 2001 From: Josef Karthauser Date: Sun, 18 Jun 2000 22:18:04 +0000 Subject: [PATCH] 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 --- bin/ls/print.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/bin/ls/print.c b/bin/ls/print.c index 596825c7d7d..d397c1c7773 100644 --- a/bin/ls/print.c +++ b/bin/ls/print.c @@ -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