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 › Threaded › fileSetPermissions Private Function fileSetPermissions Doc Source Private Function std.Io.Threaded.fileSetPermissions
fn fileSetPermissions (userdata : ?*anyopaque , file : File , permissions : File .Permissions ) File .SetPermissionsError !void Params userdata : ?*anyopaque file : File permissions : File .Permissions File Io/Threaded.zig: 9177
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212 fn fileSetPermissions (userdata : ?*anyopaque , file : File , permissions : File .Permissions ) File .SetPermissionsError !void {
if (@sizeOf (File .Permissions ) == 0 ) return ;
const t : *Threaded = @ptrCast (@alignCast (userdata ));
_ = t ;
switch (native_os ) {
.windows => {
var io_status_block : windows .IO_STATUS_BLOCK = undefined ;
var info : windows .FILE .BASIC_INFORMATION = .{
.CreationTime = 0 ,
.LastAccessTime = 0 ,
.LastWriteTime = 0 ,
.ChangeTime = 0 ,
.FileAttributes = permissions .toAttributes (),
};
const syscall : Syscall = try .start ();
while (true ) switch (windows .ntdll .NtSetInformationFile (
file .handle ,
&io_status_block ,
&info ,
@sizeOf (windows .FILE .BASIC_INFORMATION ),
.Basic ,
)) {
.SUCCESS => return syscall .finish (),
.CANCELLED => {
try syscall .checkCancel ();
continue ;
},
.INVALID_HANDLE => |err | return syscall .ntstatusBug (err ),
.ACCESS_DENIED => return syscall .fail (error .AccessDenied ),
else => |status | return syscall .unexpectedNtstatus (status ),
};
},
.wasi => return error .Unexpected , // Unsupported OS.
else => return setPermissionsPosix (file .handle , permissions .toMode ()),
}
}