[git commit] ls: fix year 9999 bug :)

Denys Vlasenko vda.linux at googlemail.com
Mon Feb 16 14:36:25 UTC 2015


commit: http://git.busybox.net/busybox/commit/?id=8e92df15b512d108901ce1762e917518553a8aaf
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/ls.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/coreutils/ls.c b/coreutils/ls.c
index 1b63be5..a30422a 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;
 		}


More information about the busybox-cvs mailing list