summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/xstatconv.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common/xstatconv.c')
-rw-r--r--libc/sysdeps/linux/common/xstatconv.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/common/xstatconv.c b/libc/sysdeps/linux/common/xstatconv.c
index d50fbf9c3..4b0a7424e 100644
--- a/libc/sysdeps/linux/common/xstatconv.c
+++ b/libc/sysdeps/linux/common/xstatconv.c
@@ -37,12 +37,21 @@ void __xstat_conv(struct kernel_stat *kbuf, struct stat *buf)
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
+#if defined(__UCLIBC_USE_TIME64__)
+ buf->st_atim.tv_sec = kbuf->__st_atim32.tv_sec;
+ buf->st_atim.tv_nsec = kbuf->__st_atim32.tv_nsec;
+ buf->st_mtim.tv_sec = kbuf->__st_mtim32.tv_sec;
+ buf->st_mtim.tv_nsec = kbuf->__st_mtim32.tv_nsec;
+ buf->st_ctim.tv_sec = kbuf->__st_ctim32.tv_sec;
+ buf->st_ctim.tv_nsec = kbuf->__st_ctim32.tv_nsec;
+#else
buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
+#endif
}
void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf)
@@ -59,12 +68,21 @@ void __xstat32_conv(struct kernel_stat64 *kbuf, struct stat *buf)
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
+#if defined(__UCLIBC_USE_TIME64__)
+ buf->st_atim.tv_sec = kbuf->__st_atim32.tv_sec;
+ buf->st_atim.tv_nsec = kbuf->__st_atim32.tv_nsec;
+ buf->st_mtim.tv_sec = kbuf->__st_mtim32.tv_sec;
+ buf->st_mtim.tv_nsec = kbuf->__st_mtim32.tv_nsec;
+ buf->st_ctim.tv_sec = kbuf->__st_ctim32.tv_sec;
+ buf->st_ctim.tv_nsec = kbuf->__st_ctim32.tv_nsec;
+#else
buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
+#endif
}
void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf)
@@ -84,10 +102,19 @@ void __xstat64_conv(struct kernel_stat64 *kbuf, struct stat64 *buf)
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
+#if defined(__UCLIBC_USE_TIME64__)
+ buf->st_atim.tv_sec = kbuf->__st_atim32.tv_sec;
+ buf->st_atim.tv_nsec = kbuf->__st_atim32.tv_nsec;
+ buf->st_mtim.tv_sec = kbuf->__st_mtim32.tv_sec;
+ buf->st_mtim.tv_nsec = kbuf->__st_mtim32.tv_nsec;
+ buf->st_ctim.tv_sec = kbuf->__st_ctim32.tv_sec;
+ buf->st_ctim.tv_nsec = kbuf->__st_ctim32.tv_nsec;
+#else
buf->st_atim.tv_sec = kbuf->st_atim.tv_sec;
buf->st_atim.tv_nsec = kbuf->st_atim.tv_nsec;
buf->st_mtim.tv_sec = kbuf->st_mtim.tv_sec;
buf->st_mtim.tv_nsec = kbuf->st_mtim.tv_nsec;
buf->st_ctim.tv_sec = kbuf->st_ctim.tv_sec;
buf->st_ctim.tv_nsec = kbuf->st_ctim.tv_nsec;
+#endif
}