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/ › Threaded.zig › dirCreateDirPath
dirCreateDirPath
Threaded.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 t : *Threaded = @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 (t , dir , component .path , permissions )) |_ | {
status = .created ;
} else |err | switch (err ) {
error .PathAlreadyExists => {
// because otherwise a dangling symlink could cause an infinite
// loop.
const kind = try filePathKind (t , dir , component .path );
if (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 ;
}
}