From 8e92df15b512d108901ce1762e917518553a8aaf Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 16 Feb 2015 15:36:25 +0100 Subject: ls: fix year 9999 bug :) Signed-off-by: Denys Vlasenko --- coreutils/ls.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'coreutils') diff --git a/coreutils/ls.c b/coreutils/ls.c index 1b63be56d..a30422a8c 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -581,12 +581,15 @@ static NOINLINE unsigned display_single(const struct dnode *dn) } else { /* LIST_DATE_TIME */ /* G.current_time_t ~== time(NULL) */ time_t age = G.current_time_t - ttime; - printf("%.6s ", filetime + 4); /* "Jun 30" */ if (age < 3600L * 24 * 365 / 2 && age > -15 * 60) { - /* hh:mm if less than 6 months old */ - printf("%.5s ", filetime + 11); - } else { /* year. buggy if year > 9999 ;) */ - printf(" %.4s ", filetime + 20); + /* less than 6 months old */ + /* "mmm dd hh:mm " */ + printf("%.12s ", filetime + 4); + } else { + /* "mmm dd yyyy " */ + /* "mmm dd yyyyy " after year 9999 :) */ + strchr(filetime + 20, '\n')[0] = ' '; + printf("%.7s%6s", filetime + 4, filetime + 20); } column += 13; } -- cgit v1.2.3