fn fileTryLock(userdata: ?*anyopaque, file: File, lock: File.Lock) File.LockError!bool
fn fileTryLock(userdata: ?*anyopaque, file: File, lock: File.Lock) File.LockError!bool { const ev: *Evented = @ptrCast(@alignCast(userdata)); var sync: CancelRegion.Sync = try .init(ev); defer sync.deinit(ev); ev.flock(&sync, file.handle, lock, switch (lock) { .none => .blocking, .shared, .exclusive => .nonblocking, }) catch |err| switch (err) { error.WouldBlock => return false, else => |e| return e, }; return true; }