Commit 83e4ff6f4c
Changed files (4)
lib
lib/std/Io/Dir.zig
@@ -93,6 +93,10 @@ pub fn openDir(dir: Dir, io: Io, sub_path: []const u8, options: OpenOptions) Ope
return io.vtable.dirOpenDir(io.userdata, dir, sub_path, options);
}
+pub fn close(dir: Dir, io: Io) void {
+ return io.vtable.dirClose(io.userdata, dir);
+}
+
pub fn openFile(dir: Dir, io: Io, sub_path: []const u8, flags: File.OpenFlags) File.OpenError!File {
return io.vtable.dirOpenFile(io.userdata, dir, sub_path, flags);
}
lib/std/Io/net.zig
@@ -1033,9 +1033,8 @@ pub const Socket = struct {
};
/// Leaves `address` in a valid state.
- pub fn close(s: *Socket, io: Io) void {
+ pub fn close(s: *const Socket, io: Io) void {
io.vtable.netClose(io.userdata, s.handle);
- s.handle = undefined;
}
pub const SendError = error{
@@ -1163,13 +1162,7 @@ pub const Stream = struct {
const max_iovecs_len = 8;
- pub fn close(s: *Stream, io: Io) void {
- io.vtable.netClose(io.userdata, s.socket.handle);
- s.* = undefined;
- }
-
- /// Same as `close` but doesn't try to set `Stream` to `undefined`.
- pub fn closeConst(s: *const Stream, io: Io) void {
+ pub fn close(s: *const Stream, io: Io) void {
io.vtable.netClose(io.userdata, s.socket.handle);
}
lib/std/Io/Threaded.zig
@@ -203,6 +203,7 @@ pub fn io(t: *Threaded) Io {
.wasi => dirOpenDirWasi,
else => dirOpenDirPosix,
},
+ .dirClose = dirClose,
.fileClose = fileClose,
.fileWriteStreaming = fileWriteStreaming,
.fileWritePositional = fileWritePositional,
@@ -1685,6 +1686,12 @@ fn dirOpenDirPosix(
@panic("TODO");
}
+fn dirClose(userdata: ?*anyopaque, dir: Io.Dir) void {
+ const t: *Threaded = @ptrCast(@alignCast(userdata));
+ _ = t;
+ posix.close(dir.handle);
+}
+
fn dirOpenDirWasi(
userdata: ?*anyopaque,
dir: Io.Dir,
lib/std/Io.zig
@@ -667,6 +667,7 @@ pub const VTable = struct {
dirCreateFile: *const fn (?*anyopaque, Dir, sub_path: []const u8, File.CreateFlags) File.OpenError!File,
dirOpenFile: *const fn (?*anyopaque, Dir, sub_path: []const u8, File.OpenFlags) File.OpenError!File,
dirOpenDir: *const fn (?*anyopaque, Dir, sub_path: []const u8, Dir.OpenOptions) Dir.OpenError!Dir,
+ dirClose: *const fn (?*anyopaque, Dir) void,
fileStat: *const fn (?*anyopaque, File) File.StatError!File.Stat,
fileClose: *const fn (?*anyopaque, File) void,
fileWriteStreaming: *const fn (?*anyopaque, File, buffer: [][]const u8) File.WriteStreamingError!usize,