zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 6a549a7f0cc337634c5dca6abf20eca53b572f21 (tree)
parent 518197080748b3804d76030ad9f02969b01a679a
Author: LemonBoy <thatlemon@gmail.com>
Date:   Sat, 12 Oct 2019 12:21:20 +0200

Fix compilation of updateTimes on 32bit platforms

Add a test to avoid regressions.

Fixes #3412

Diffstat:
Mlib/std/fs/file.zig | 8++++----
Mlib/std/io/test.zig | 18++++++++++++++++++
2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/lib/std/fs/file.zig b/lib/std/fs/file.zig @@ -279,12 +279,12 @@ pub const File = struct { } const times = [2]os.timespec{ os.timespec{ - .tv_sec = @divFloor(atime, std.time.ns_per_s), - .tv_nsec = @mod(atime, std.time.ns_per_s), + .tv_sec = math.cast(isize, @divFloor(atime, std.time.ns_per_s)) catch maxInt(isize), + .tv_nsec = math.cast(isize, @mod(atime, std.time.ns_per_s)) catch maxInt(isize), }, os.timespec{ - .tv_sec = @divFloor(mtime, std.time.ns_per_s), - .tv_nsec = @mod(mtime, std.time.ns_per_s), + .tv_sec = math.cast(isize, @divFloor(mtime, std.time.ns_per_s)) catch maxInt(isize), + .tv_nsec = math.cast(isize, @mod(mtime, std.time.ns_per_s)) catch maxInt(isize), }, }; try os.futimens(self.handle, &times); diff --git a/lib/std/io/test.zig b/lib/std/io/test.zig @@ -629,3 +629,21 @@ test "File seek ops" { try file.seekTo(1234); std.testing.expect((try file.getPos()) == 1234); } + +test "updateTimes" { + const tmp_file_name = "just_a_temporary_file.txt"; + var file = try File.openWrite(tmp_file_name); + defer { + file.close(); + std.fs.deleteFile(tmp_file_name) catch {}; + } + var stat_old = try file.stat(); + // Set atime and mtime to 5s before + try file.updateTimes( + stat_old.atime - 5 * std.time.ns_per_s, + stat_old.mtime - 5 * std.time.ns_per_s, + ); + var stat_new = try file.stat(); + std.testing.expect(stat_new.atime < stat_old.atime); + std.testing.expect(stat_new.mtime < stat_old.mtime); +}