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 › dirCreateDirPath
dirCreateDirPath
Dispatch.dirCreateDirPath
fn dirCreateDirPath (
userdata : ?*anyopaque ,
dir : Dir ,
sub_path : []const u8 ,
permissions : Dir .Permissions ,
) Dir .CreateDirPathError !Dir .CreatePathStatus
File
Code
fn dirCreateDirPath (
userdata : ?*anyopaque ,
dir : Dir ,
sub_path : []const u8 ,
permissions : Dir .Permissions ,
) Dir .CreateDirPathError !Dir .CreatePathStatus {
const ev : *Evented = @ptrCast (@alignCast (userdata ));
var it = Dir .path .componentIterator (sub_path );
var status : Dir .CreatePathStatus = .existed ;
var component = it .last () orelse return error .BadPathName ;
while (true ) {
if (dirCreateDir (ev , dir , component .path , permissions )) |_ | {
status = .created ;
} else |err | switch (err ) {
error .PathAlreadyExists => {
// because otherwise a dangling symlink could cause an infinite
// loop.
const fstat = try dirStatFile (ev , dir , component .path , .{});
if (fstat .kind != .directory ) return error .NotDir ;
},
error .FileNotFound => |e | {
component = it .previous () orelse return e ;
continue ;
},
else => |e | return e ,
}
component = it .next () orelse return status ;
}
}