From b4d34c7a0e4c67d71dd3d5f948d22a0ff727cf38 Mon Sep 17 00:00:00 2001 From: hanzhijian Date: Mon, 29 Jun 2026 19:21:51 +0800 Subject: [PATCH] nshlib/nsh_fscmds: Display modification time in ls -l output Fixes #17063 Add modification time display to ls -l long format output. The timestamp is shown as 'YYYY-MM-DD HH:MM' between the permission string and the file size, following the ISO long-iso format. Files with st_mtime == 0 (e.g., procfs, tmpfs pseudo-entries) skip the timestamp display to avoid showing a meaningless epoch time. Signed-off-by: hanzhijian --- nshlib/nsh_fscmds.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/nshlib/nsh_fscmds.c b/nshlib/nsh_fscmds.c index 797048f6c39..952556ce185 100644 --- a/nshlib/nsh_fscmds.c +++ b/nshlib/nsh_fscmds.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -599,6 +600,19 @@ static int ls_handler(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath, nsh_output(vtbl, "%12" PRIdOFF, buf.st_size); } } + + /* Display modification time in long format */ + + if ((lsflags & LSFLAGS_LONG) != 0 && buf.st_mtime != 0) + { + struct tm tm; + char timebuf[20]; + time_t mtime = (time_t)buf.st_mtime; + + gmtime_r(&mtime, &tm); + strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M", &tm); + nsh_output(vtbl, " %s", timebuf); + } } /* Then provide the filename that is common to normal and verbose output */