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 › Uring › dirCreateDirPath Private Function dirCreateDirPath Doc Source Private Function std.Io.Uring.dirCreateDirPath
fn dirCreateDirPath (
userdata : ?*anyopaque ,
dir : Dir ,
sub_path : []const u8 ,
permissions : Dir .Permissions ,
) Dir .CreateDirPathError !Dir .CreatePathStatus Params userdata : ?*anyopaque dir : Dir sub_path : []const u8 permissions : Dir .Permissions File Io/Uring.zig: 2637
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667 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 => {
// stat the file and return an error if it's not a directory
// this is important because otherwise a dangling symlink
// could cause an infinite loop
const kind = try ev .filePathKind (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 ;
}
}