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 library itself.
Zig › std/ › Io/ › Dispatch.zig › realPath
realPath
Dispatch.realPath
fn realPath (ev : *Evented , fd : c .fd_t , out_buffer : []u8 ) File .RealPathError !usize
File
Code
fn realPath (ev : *Evented , fd : c .fd_t , out_buffer : []u8 ) File .RealPathError !usize {
_ = ev ;
var buffer : [c .PATH_MAX ]u8 = undefined ;
@memset (&buffer , 0 );
while (true ) {
switch (c .errno (c .fcntl (fd , c .F .GETPATH , &buffer ))) {
.SUCCESS => break ,
.INTR => {},
.ACCES => return error .AccessDenied ,
.BADF => return error .FileNotFound ,
.NOENT => return error .FileNotFound ,
.NOMEM => return error .SystemResources ,
.NOSPC => return error .NameTooLong ,
.RANGE => return error .NameTooLong ,
else => |err | return unexpectedErrno (err ),
}
}
const n = std .mem .indexOfScalar (u8 , &buffer , 0 ) orelse buffer .len ;
if (n > out_buffer .len ) return error .NameTooLong ;
@memcpy (out_buffer [0 ..n ], buffer [0 ..n ]);
return n ;
}