summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorjoe <joe@FreeBSD.org>2000-06-18 22:18:04 +0000
committerjoe <joe@FreeBSD.org>2000-06-18 22:18:04 +0000
commit52bc7db3a0ceaee4389cf1aa5a5721b7bf2ee5c1 (patch)
tree4c3762e4bacd92232abab0308b43362c35b7d9d9 /bin
parent2be2bf630e2ac589096459b976c068ab57cb075c (diff)
downloadFreeBSD-src-52bc7db3a0ceaee4389cf1aa5a5721b7bf2ee5c1.zip
FreeBSD-src-52bc7db3a0ceaee4389cf1aa5a5721b7bf2ee5c1.tar.gz
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
Diffstat (limited to 'bin')
-rw-r--r--bin/ls/print.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/bin/ls/print.c b/bin/ls/print.c
index 596825c..d397c1c 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
OpenPOWER on IntegriCloud