Just show the raw time in seconds since the UNIX epoch instead.

Reproducible image (base64-encoded gzipped blob):
H4sICACa02gAA3JlcHJvAGNgGAWjYBSMVPDo4dcHvU4WITpANg+DCgM7VPwFM0INE5L6OzNL
tafaus7ZdHvpkTy+2l3o5rGjCxAAIGsOODIzlDD8/v//P0gEQsKACphkZAG5QgUqFgpka0LZ
4QyMDKpQdgJQPAzKTgWKR0LZWUjsfE4oIydVLzk/JyUtMyfVAEQYgggjEGGMbD/QYoa3jYwM
KUCaA+y6//8ZkeSLK6uyE3NyUovQGaz/YfZgSJHKwBd+YPc5MjHYQvkg94HiK6KjuRHE14OK
GyCFnyGQbQhlGwPDJhjKtgDGnp6eHiJIkPwvxYIwHylpoPmfiQq+RWcwk69dUJcG7hllDHUG
I7oIKEPDRcTe7jqNqesp5bYzYs0ydGCACy4gwJC6xEWZyWxQH2FVgyifQKW3OlL5xMLAAi8/
9EtyC/SBGnQzcxPTU9NT84yMjM0MTAwMTI30wQURhMQo9/7Ayz8OcPnEhWQ+K46yko2RjaEi
saSkyLCCgQFIwvlGEBKpxA3elv8GrIcJXP4xMWgoQ8wARSLY2zgqOkYoZgLTIJYGM3aVo2AU
jIJRMLAAABdVKPsAEAAA

Signed-off-by: Gao Xiang <[email protected]>
---
 dump/main.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/dump/main.c b/dump/main.c
index 58d489c..f685799 100644
--- a/dump/main.c
+++ b/dump/main.c
@@ -379,6 +379,7 @@ static void erofsdump_show_fileinfo(bool show_extent)
        char access_mode_str[] = "rwxrwxrwx";
        char timebuf[128] = {0};
        unsigned int extent_count = 0;
+       struct tm *tm;
        struct erofs_map_blocks map = {
                .buf = __EROFS_BUF_INITIALIZER,
                .m_la = 0,
@@ -411,8 +412,11 @@ static void erofsdump_show_fileinfo(bool show_extent)
                path[sizeof(path) - 1] = '\0';
        }
 
-       strftime(timebuf, sizeof(timebuf),
-                "%Y-%m-%d %H:%M:%S", localtime((time_t *)&inode.i_mtime));
+       tm = localtime((time_t *)&inode.i_mtime);
+       if (!tm)
+               sprintf(timebuf, "%lld", (s64)inode.i_mtime | 0LL);
+       else
+               strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm);
        access_mode = inode.i_mode & 0777;
        for (i = 8; i >= 0; i--)
                if (((access_mode >> i) & 1) == 0)
-- 
2.43.0


Reply via email to