feature. See also
. The project being documented here (as the example) is the Zig library itself.
LibCInstallation.findNativeIncludeDirWindows
fn findNativeIncludeDirWindows(
self: *LibCInstallation,
gpa: Allocator,
io: Io,
sdk: std.zig.WindowsSdk,
) FindError!void
File
Code
fn findNativeIncludeDirWindows(
self: *LibCInstallation,
gpa: Allocator,
io: Io,
sdk: std.zig.WindowsSdk,
) FindError!void {
var install_buf: [2]std.zig.WindowsSdk.Installation = undefined;
const installs = fillInstallations(&install_buf, sdk);
var result_buf = std.array_list.Managed(u8).init(gpa);
defer result_buf.deinit();
for (installs) |install| {
result_buf.shrinkAndFree(0);
try result_buf.print("{s}\\Include\\{s}\\ucrt", .{ install.path, install.version });
var dir = Io.Dir.cwd().openDir(io, result_buf.items, .{}) catch |err| switch (err) {
error.FileNotFound,
error.NotDir,
error.NoDevice,
=> continue,
else => return error.FileSystem,
};
defer dir.close(io);
dir.access(io, "stdlib.h", .{}) catch |err| switch (err) {
error.FileNotFound => continue,
else => return error.FileSystem,
};
self.include_dir = try result_buf.toOwnedSlice();
return;
}
return error.LibCStdLibHeaderNotFound;
}