From cd5f4de2a684ab0a3383ff328516243a6e850201 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 21 Nov 2019 20:34:55 -0500 Subject: [PATCH] std: remove O_LARGEFILE from OS bits when the OS does not define it --- lib/std/event/fs.zig | 9 ++++++--- lib/std/event/loop.zig | 3 ++- lib/std/fs/file.zig | 6 ++++-- lib/std/os/bits/darwin.zig | 1 - lib/std/os/bits/netbsd.zig | 1 - 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/std/event/fs.zig b/lib/std/event/fs.zig index 1035a51b81..eef5cfae7d 100644 --- a/lib/std/event/fs.zig +++ b/lib/std/event/fs.zig @@ -415,7 +415,8 @@ pub fn openPosix( pub fn openRead(loop: *Loop, path: []const u8) File.OpenError!fd_t { switch (builtin.os) { .macosx, .linux, .freebsd, .netbsd, .dragonfly => { - const flags = os.O_LARGEFILE | os.O_RDONLY | os.O_CLOEXEC; + const O_LARGEFILE = if (@hasDecl(os, "O_LARGEFILE")) os.O_LARGEFILE else 0; + const flags = O_LARGEFILE | os.O_RDONLY | os.O_CLOEXEC; return openPosix(loop, path, flags, File.default_mode); }, @@ -448,7 +449,8 @@ pub fn openWriteMode(loop: *Loop, path: []const u8, mode: File.Mode) File.OpenEr .netbsd, .dragonfly, => { - const flags = os.O_LARGEFILE | os.O_WRONLY | os.O_CREAT | os.O_CLOEXEC | os.O_TRUNC; + const O_LARGEFILE = if (@hasDecl(os, "O_LARGEFILE")) os.O_LARGEFILE else 0; + const flags = O_LARGEFILE | os.O_WRONLY | os.O_CREAT | os.O_CLOEXEC | os.O_TRUNC; return openPosix(loop, path, flags, File.default_mode); }, .windows => return windows.CreateFile( @@ -472,7 +474,8 @@ pub fn openReadWrite( ) File.OpenError!fd_t { switch (builtin.os) { .macosx, .linux, .freebsd, .netbsd, .dragonfly => { - const flags = os.O_LARGEFILE | os.O_RDWR | os.O_CREAT | os.O_CLOEXEC; + const O_LARGEFILE = if (@hasDecl(os, "O_LARGEFILE")) os.O_LARGEFILE else 0; + const flags = O_LARGEFILE | os.O_RDWR | os.O_CREAT | os.O_CLOEXEC; return openPosix(loop, path, flags, mode); }, diff --git a/lib/std/event/loop.zig b/lib/std/event/loop.zig index 8f01c19746..44174c862c 100644 --- a/lib/std/event/loop.zig +++ b/lib/std/event/loop.zig @@ -856,7 +856,8 @@ pub const Loop = struct { }, .Close => |*msg| noasync os.close(msg.fd), .WriteFile => |*msg| blk: { - const flags = os.O_LARGEFILE | os.O_WRONLY | os.O_CREAT | + const O_LARGEFILE = if (@hasDecl(os, "O_LARGEFILE")) os.O_LARGEFILE else 0; + const flags = O_LARGEFILE | os.O_WRONLY | os.O_CREAT | os.O_CLOEXEC | os.O_TRUNC; const fd = noasync os.openC(msg.path.ptr, flags, msg.mode) catch |err| { msg.result = err; diff --git a/lib/std/fs/file.zig b/lib/std/fs/file.zig index 28f047a1c3..b25403fa02 100644 --- a/lib/std/fs/file.zig +++ b/lib/std/fs/file.zig @@ -66,7 +66,8 @@ pub const File = struct { const path_w = try windows.cStrToPrefixedFileW(path); return openWriteModeW(&path_w, file_mode); } - const flags = os.O_LARGEFILE | os.O_WRONLY | os.O_CREAT | os.O_CLOEXEC | os.O_TRUNC; + const O_LARGEFILE = if (@hasDecl(os, "O_LARGEFILE")) os.O_LARGEFILE else 0; + const flags = O_LARGEFILE | os.O_WRONLY | os.O_CREAT | os.O_CLOEXEC | os.O_TRUNC; const fd = try os.openC(path, flags, file_mode); return openHandle(fd); } @@ -105,7 +106,8 @@ pub const File = struct { const path_w = try windows.cStrToPrefixedFileW(path); return openWriteNoClobberW(&path_w, file_mode); } - const flags = os.O_LARGEFILE | os.O_WRONLY | os.O_CREAT | os.O_CLOEXEC | os.O_EXCL; + const O_LARGEFILE = if (@hasDecl(os, "O_LARGEFILE")) os.O_LARGEFILE else 0; + const flags = O_LARGEFILE | os.O_WRONLY | os.O_CREAT | os.O_CLOEXEC | os.O_EXCL; const fd = try os.openC(path, flags, file_mode); return openHandle(fd); } diff --git a/lib/std/os/bits/darwin.zig b/lib/std/os/bits/darwin.zig index 335f296dd6..9451df6e19 100644 --- a/lib/std/os/bits/darwin.zig +++ b/lib/std/os/bits/darwin.zig @@ -267,7 +267,6 @@ pub const SA_USERTRAMP = 0x0100; /// signal handler with SA_SIGINFO args with 64bit regs information pub const SA_64REGSET = 0x0200; -pub const O_LARGEFILE = 0x0000; pub const O_PATH = 0x0000; pub const F_OK = 0; diff --git a/lib/std/os/bits/netbsd.zig b/lib/std/os/bits/netbsd.zig index 497c4a0344..de1d72eca2 100644 --- a/lib/std/os/bits/netbsd.zig +++ b/lib/std/os/bits/netbsd.zig @@ -292,7 +292,6 @@ pub const O_CLOEXEC = 0x00400000; pub const O_ASYNC = 0x0040; pub const O_DIRECT = 0x00080000; -pub const O_LARGEFILE = 0; pub const O_NOATIME = 0; pub const O_PATH = 0; pub const O_TMPFILE = 0;