Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › Io › Dispatch › fileTryLock Private Function fileTryLock Doc Source Private Function std.Io.Dispatch.fileTryLock
fn fileTryLock (userdata : ?*anyopaque , file : File , lock : File .Lock ) File .LockError !bool Params userdata : ?*anyopaque file : File lock : File .Lock File Io/Dispatch.zig: 3728
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746 fn fileTryLock (userdata : ?*anyopaque , file : File , lock : File .Lock ) File .LockError !bool {
const ev : *Evented = @ptrCast (@alignCast (userdata ));
_ = ev ;
const operation : i32 = switch (lock ) {
.none => c .LOCK .UN ,
.shared => c .LOCK .SH | c .LOCK .NB ,
.exclusive => c .LOCK .EX | c .LOCK .NB ,
};
while (true ) switch (c .errno (c .flock (file .handle , operation ))) {
.SUCCESS => return true ,
.INTR => {},
.AGAIN => return false ,
.BADF => |err | return errnoBug (err ),
.INVAL => |err | return errnoBug (err ), // invalid parameters
.NOLCK => return error .SystemResources ,
.OPNOTSUPP => return error .FileLocksUnsupported ,
else => |err | return unexpectedErrno (err ),
};
}