summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2020-08-31 14:55:54 +1000
committerDamien George <damien@micropython.org>2020-09-01 12:36:28 +1000
commit2a72e90ab8969b69304d84aa7070720d63c60d06 (patch)
tree93a48c852416f8797e688cc85b2afdf63295f056
parent0385b21597a3e5dc3d1a84cd37848fc2ac2a0e20 (diff)
extmod/vfs: Add option to use 1970 as Epoch.
By setting MICROPY_EPOCH_IS_1970 a port can opt to use 1970/1/1 as the Epoch for timestamps returned by stat(). And this setting is enabled on the unix and windows ports because that's what they use. Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--extmod/vfs_fat.c3
-rw-r--r--extmod/vfs_lfsx.c3
-rw-r--r--ports/unix/mpconfigport.h3
-rw-r--r--ports/windows/mpconfigport.h3
4 files changed, 12 insertions, 0 deletions
diff --git a/extmod/vfs_fat.c b/extmod/vfs_fat.c
index 79b0fc119..ace5ba5b6 100644
--- a/extmod/vfs_fat.c
+++ b/extmod/vfs_fat.c
@@ -319,6 +319,9 @@ STATIC mp_obj_t fat_vfs_stat(mp_obj_t vfs_in, mp_obj_t path_in) {
(fno.ftime >> 5) & 0x3f,
2 * (fno.ftime & 0x1f)
);
+ #if MICROPY_EPOCH_IS_1970
+ seconds += TIMEUTILS_SECONDS_1970_TO_2000;
+ #endif
t->items[0] = MP_OBJ_NEW_SMALL_INT(mode); // st_mode
t->items[1] = MP_OBJ_NEW_SMALL_INT(0); // st_ino
t->items[2] = MP_OBJ_NEW_SMALL_INT(0); // st_dev
diff --git a/extmod/vfs_lfsx.c b/extmod/vfs_lfsx.c
index 9f5d9ce6d..d00df5310 100644
--- a/extmod/vfs_lfsx.c
+++ b/extmod/vfs_lfsx.c
@@ -366,6 +366,9 @@ STATIC mp_obj_t MP_VFS_LFSx(stat)(mp_obj_t self_in, mp_obj_t path_in) {
ns = ns << 8 | mtime_buf[i - 1];
}
mtime = timeutils_seconds_since_2000_from_nanoseconds_since_1970(ns);
+ #if MICROPY_EPOCH_IS_1970
+ mtime += TIMEUTILS_SECONDS_1970_TO_2000;
+ #endif
}
#endif
diff --git a/ports/unix/mpconfigport.h b/ports/unix/mpconfigport.h
index f3c61c18f..08605842f 100644
--- a/ports/unix/mpconfigport.h
+++ b/ports/unix/mpconfigport.h
@@ -176,6 +176,9 @@
#define MICROPY_ERROR_PRINTER (&mp_stderr_print)
#define MICROPY_PY_STR_BYTES_CMP_WARN (1)
+// VFS stat functions should return time values relative to 1970/1/1
+#define MICROPY_EPOCH_IS_1970 (1)
+
extern const struct _mp_print_t mp_stderr_print;
#if !(defined(MICROPY_GCREGS_SETJMP) || defined(__x86_64__) || defined(__i386__) || defined(__thumb2__) || defined(__thumb__) || defined(__arm__))
diff --git a/ports/windows/mpconfigport.h b/ports/windows/mpconfigport.h
index fa09dda75..30389c700 100644
--- a/ports/windows/mpconfigport.h
+++ b/ports/windows/mpconfigport.h
@@ -123,6 +123,9 @@
#define MICROPY_WARNINGS (1)
#define MICROPY_PY_STR_BYTES_CMP_WARN (1)
+// VFS stat functions should return time values relative to 1970/1/1
+#define MICROPY_EPOCH_IS_1970 (1)
+
extern const struct _mp_print_t mp_stderr_print;
#ifdef _MSC_VER