aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Io
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/Io')
-rw-r--r--lib/std/Io/File.zig8
-rw-r--r--lib/std/Io/Threaded.zig9
-rw-r--r--lib/std/Io/Writer.zig6
-rw-r--r--lib/std/Io/net/test.zig2
-rw-r--r--lib/std/Io/test.zig10
5 files changed, 20 insertions, 15 deletions
diff --git a/lib/std/Io/File.zig b/lib/std/Io/File.zig
index 8e71f648e2..a9b4775772 100644
--- a/lib/std/Io/File.zig
+++ b/lib/std/Io/File.zig
@@ -527,6 +527,14 @@ pub fn writerStreaming(file: File, io: Io, buffer: []u8) Writer {
return .initStreaming(file, io, buffer);
}
+/// Equivalent to creating a streaming writer, writing `bytes`, and then flushing.
+pub fn writeStreamingAll(file: File, io: Io, bytes: []const u8) Writer.Error!void {
+ var index: usize = 0;
+ while (index < bytes.len) {
+ index += try io.vtable.fileWriteStreaming(io.userdata, file, &.{}, &.{bytes[index..]}, 1);
+ }
+}
+
pub const LockError = error{
SystemResources,
FileLocksUnsupported,
diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig
index fb76002201..124f886515 100644
--- a/lib/std/Io/Threaded.zig
+++ b/lib/std/Io/Threaded.zig
@@ -2361,7 +2361,7 @@ fn dirCreateFilePosix(
.NFILE => return error.SystemFdQuotaExceeded,
.NODEV => return error.NoDevice,
.NOENT => return error.FileNotFound,
- .SRCH => return error.ProcessNotFound,
+ .SRCH => return error.FileNotFound, // Linux when accessing procfs.
.NOMEM => return error.SystemResources,
.NOSPC => return error.NoSpaceLeft,
.NOTDIR => return error.NotDir,
@@ -2670,7 +2670,7 @@ fn dirOpenFilePosix(
.NFILE => return error.SystemFdQuotaExceeded,
.NODEV => return error.NoDevice,
.NOENT => return error.FileNotFound,
- .SRCH => return error.ProcessNotFound,
+ .SRCH => return error.FileNotFound, // Linux when opening procfs files.
.NOMEM => return error.SystemResources,
.NOSPC => return error.NoSpaceLeft,
.NOTDIR => return error.NotDir,
@@ -3287,7 +3287,7 @@ fn dirRealPathPosix(userdata: ?*anyopaque, dir: Dir, sub_path: []const u8, out_b
.NFILE => return error.SystemFdQuotaExceeded,
.NODEV => return error.NoDevice,
.NOENT => return error.FileNotFound,
- .SRCH => return error.ProcessNotFound,
+ .SRCH => return error.FileNotFound, // Linux when accessing procfs.
.NOMEM => return error.SystemResources,
.NOSPC => return error.NoSpaceLeft,
.NOTDIR => return error.NotDir,
@@ -5548,7 +5548,6 @@ fn fileReadStreamingPosix(userdata: ?*anyopaque, file: File, data: [][]u8) File.
switch (e) {
.INVAL => |err| return errnoBug(err),
.FAULT => |err| return errnoBug(err),
- .SRCH => return error.ProcessNotFound,
.AGAIN => return error.WouldBlock,
.BADF => |err| {
if (native_os == .wasi) return error.NotOpenForReading; // File operation on directory.
@@ -5672,7 +5671,6 @@ fn fileReadPositionalPosix(userdata: ?*anyopaque, file: File, data: [][]u8, offs
switch (e) {
.INVAL => |err| return errnoBug(err),
.FAULT => |err| return errnoBug(err),
- .SRCH => return error.ProcessNotFound,
.AGAIN => return error.WouldBlock,
.BADF => |err| {
if (native_os == .wasi) return error.NotOpenForReading; // File operation on directory.
@@ -6312,7 +6310,6 @@ fn fileWriteStreaming(
switch (e) {
.INVAL => return error.InvalidArgument,
.FAULT => |err| return errnoBug(err),
- .SRCH => return error.ProcessNotFound,
.AGAIN => return error.WouldBlock,
.BADF => return error.NotOpenForWriting, // Can be a race condition.
.DESTADDRREQ => |err| return errnoBug(err), // `connect` was never called.
diff --git a/lib/std/Io/Writer.zig b/lib/std/Io/Writer.zig
index 3f25bc6a26..63ae6d93a0 100644
--- a/lib/std/Io/Writer.zig
+++ b/lib/std/Io/Writer.zig
@@ -2835,7 +2835,7 @@ test "discarding sendFile" {
var tmp_dir = testing.tmpDir(.{});
defer tmp_dir.cleanup();
- const file = try tmp_dir.dir.createFile("input.txt", .{ .read = true });
+ const file = try tmp_dir.dir.createFile(io, "input.txt", .{ .read = true });
defer file.close(io);
var r_buffer: [256]u8 = undefined;
var file_writer: File.Writer = .init(file, &r_buffer);
@@ -2857,7 +2857,7 @@ test "allocating sendFile" {
var tmp_dir = testing.tmpDir(.{});
defer tmp_dir.cleanup();
- const file = try tmp_dir.dir.createFile("input.txt", .{ .read = true });
+ const file = try tmp_dir.dir.createFile(io, "input.txt", .{ .read = true });
defer file.close(io);
var r_buffer: [2]u8 = undefined;
var file_writer: File.Writer = .init(file, &r_buffer);
@@ -2881,7 +2881,7 @@ test sendFileReading {
var tmp_dir = testing.tmpDir(.{});
defer tmp_dir.cleanup();
- const file = try tmp_dir.dir.createFile("input.txt", .{ .read = true });
+ const file = try tmp_dir.dir.createFile(io, "input.txt", .{ .read = true });
defer file.close(io);
var r_buffer: [2]u8 = undefined;
var file_writer: File.Writer = .init(file, &r_buffer);
diff --git a/lib/std/Io/net/test.zig b/lib/std/Io/net/test.zig
index 5818f6c3f7..c9ed0d3284 100644
--- a/lib/std/Io/net/test.zig
+++ b/lib/std/Io/net/test.zig
@@ -278,7 +278,7 @@ test "listen on a unix socket, send bytes, receive bytes" {
defer testing.allocator.free(socket_path);
const socket_addr = try net.UnixAddress.init(socket_path);
- defer std.fs.cwd().deleteFile(socket_path) catch {};
+ defer Io.Dir.cwd().deleteFile(socket_path) catch {};
var server = try socket_addr.listen(io, .{});
defer server.socket.close(io);
diff --git a/lib/std/Io/test.zig b/lib/std/Io/test.zig
index 9f21fe50e7..e731dc18d7 100644
--- a/lib/std/Io/test.zig
+++ b/lib/std/Io/test.zig
@@ -27,7 +27,7 @@ test "write a file, read it, then delete it" {
random.bytes(data[0..]);
const tmp_file_name = "temp_test_file.txt";
{
- var file = try tmp.dir.createFile(tmp_file_name, .{});
+ var file = try tmp.dir.createFile(io, tmp_file_name, .{});
defer file.close(io);
var file_writer = file.writer(&.{});
@@ -40,7 +40,7 @@ test "write a file, read it, then delete it" {
{
// Make sure the exclusive flag is honored.
- try expectError(File.OpenError.PathAlreadyExists, tmp.dir.createFile(tmp_file_name, .{ .exclusive = true }));
+ try expectError(File.OpenError.PathAlreadyExists, tmp.dir.createFile(io, tmp_file_name, .{ .exclusive = true }));
}
{
@@ -70,7 +70,7 @@ test "File seek ops" {
const io = testing.io;
const tmp_file_name = "temp_test_file.txt";
- var file = try tmp.dir.createFile(tmp_file_name, .{});
+ var file = try tmp.dir.createFile(io, tmp_file_name, .{});
defer file.close(io);
try file.writeAll(&([_]u8{0x55} ** 8192));
@@ -96,7 +96,7 @@ test "setEndPos" {
defer tmp.cleanup();
const tmp_file_name = "temp_test_file.txt";
- var file = try tmp.dir.createFile(tmp_file_name, .{});
+ var file = try tmp.dir.createFile(io, tmp_file_name, .{});
defer file.close(io);
// Verify that the file size changes and the file offset is not moved
@@ -121,7 +121,7 @@ test "updateTimes" {
defer tmp.cleanup();
const tmp_file_name = "just_a_temporary_file.txt";
- var file = try tmp.dir.createFile(tmp_file_name, .{ .read = true });
+ var file = try tmp.dir.createFile(io, tmp_file_name, .{ .read = true });
defer file.close(io);
const stat_old = try file.stat();