summaryrefslogtreecommitdiff
path: root/cli/rt/30_fs.js
diff options
context:
space:
mode:
Diffstat (limited to 'cli/rt/30_fs.js')
-rw-r--r--cli/rt/30_fs.js41
1 files changed, 27 insertions, 14 deletions
diff --git a/cli/rt/30_fs.js b/cli/rt/30_fs.js
index 750c3c1ba..df91d767f 100644
--- a/cli/rt/30_fs.js
+++ b/cli/rt/30_fs.js
@@ -264,8 +264,25 @@
await sendAsync("op_link_async", { oldpath, newpath });
}
- function toSecondsFromEpoch(v) {
- return v instanceof Date ? Math.trunc(v.valueOf() / 1000) : v;
+ function toUnixTimeFromEpoch(value) {
+ if (value instanceof Date) {
+ const time = value.valueOf();
+ const seconds = Math.trunc(time / 1e3);
+ const nanoseconds = Math.trunc(time - (seconds * 1e3)) * 1e6;
+
+ return [
+ seconds,
+ nanoseconds,
+ ];
+ }
+
+ const seconds = value;
+ const nanoseconds = 0;
+
+ return [
+ seconds,
+ nanoseconds,
+ ];
}
function futimeSync(
@@ -275,9 +292,8 @@
) {
sendSync("op_futime_sync", {
rid,
- // TODO(caspervonb) split atime, mtime into [seconds, nanoseconds] tuple
- atime: toSecondsFromEpoch(atime),
- mtime: toSecondsFromEpoch(mtime),
+ atime: toUnixTimeFromEpoch(atime),
+ mtime: toUnixTimeFromEpoch(mtime),
});
}
@@ -288,9 +304,8 @@
) {
await sendAsync("op_futime_async", {
rid,
- // TODO(caspervonb) split atime, mtime into [seconds, nanoseconds] tuple
- atime: toSecondsFromEpoch(atime),
- mtime: toSecondsFromEpoch(mtime),
+ atime: toUnixTimeFromEpoch(atime),
+ mtime: toUnixTimeFromEpoch(mtime),
});
}
@@ -301,9 +316,8 @@
) {
sendSync("op_utime_sync", {
path,
- // TODO(ry) split atime, mtime into [seconds, nanoseconds] tuple
- atime: toSecondsFromEpoch(atime),
- mtime: toSecondsFromEpoch(mtime),
+ atime: toUnixTimeFromEpoch(atime),
+ mtime: toUnixTimeFromEpoch(mtime),
});
}
@@ -314,9 +328,8 @@
) {
await sendAsync("op_utime_async", {
path,
- // TODO(ry) split atime, mtime into [seconds, nanoseconds] tuple
- atime: toSecondsFromEpoch(atime),
- mtime: toSecondsFromEpoch(mtime),
+ atime: toUnixTimeFromEpoch(atime),
+ mtime: toUnixTimeFromEpoch(mtime),
});
}