commit d680b9e9b2320612a4e988763f5090c4ae8f9a8f (tree)
parent 539808239ecae050e383dd11f395a363b4404e21
Author: Andrew Kelley <andrew@ziglang.org>
Date: Mon, 13 Oct 2025 19:04:02 -0700
std.Io.File: add WouldBlock to the error set
Even in an asynchronous world, the concept of a non-blocking flag is
useful because it determines under what conditions the operation
completes.
Diffstat:
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/lib/std/Io/File.zig b/lib/std/Io/File.zig
@@ -139,6 +139,8 @@ pub const OpenError = error{
/// kernel (e.g., for module/firmware loading), and write access was
/// requested.
FileBusy,
+ /// Non-blocking was requested and the operation cannot return immediately.
+ WouldBlock,
} || Io.Dir.PathNameError || Io.Cancelable || Io.UnexpectedError;
pub fn close(file: File, io: Io) void {
diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig
@@ -1039,7 +1039,7 @@ fn dirCreateFilePosix(
.EXIST => return error.PathAlreadyExists,
.BUSY => return error.DeviceBusy,
.OPNOTSUPP => return error.FileLocksNotSupported,
- //.AGAIN => return error.WouldBlock,
+ .AGAIN => return error.WouldBlock,
.TXTBSY => return error.FileBusy,
.NXIO => return error.NoDevice,
.ILSEQ => return error.BadPathName,
@@ -1064,7 +1064,7 @@ fn dirCreateFilePosix(
.BADF => |err| return errnoBug(err),
.INVAL => |err| return errnoBug(err), // invalid parameters
.NOLCK => return error.SystemResources,
- //.AGAIN => return error.WouldBlock,
+ .AGAIN => return error.WouldBlock,
.OPNOTSUPP => return error.FileLocksNotSupported,
else => |err| return posix.unexpectedErrno(err),
}
@@ -1168,7 +1168,7 @@ fn dirOpenFile(
.EXIST => return error.PathAlreadyExists,
.BUSY => return error.DeviceBusy,
.OPNOTSUPP => return error.FileLocksNotSupported,
- //.AGAIN => return error.WouldBlock,
+ .AGAIN => return error.WouldBlock,
.TXTBSY => return error.FileBusy,
.NXIO => return error.NoDevice,
.ILSEQ => return error.BadPathName,
@@ -1193,7 +1193,7 @@ fn dirOpenFile(
.BADF => |err| return errnoBug(err),
.INVAL => |err| return errnoBug(err), // invalid parameters
.NOLCK => return error.SystemResources,
- //.AGAIN => return error.WouldBlock,
+ .AGAIN => return error.WouldBlock,
.OPNOTSUPP => return error.FileLocksNotSupported,
else => |err| return posix.unexpectedErrno(err),
}