mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
std.fs.File.Writer: break up seekTo
- introduce seekToUnbuffered which asserts no buffered data and does not have WriteFailed in the error set - remove WriteFailed from SeekError - make seekTo based on calling flush and then seekToUnbuffered - revert the change to reset seek_err since the error sets are compatible again
This commit is contained in:
parent
d94e061ade
commit
f78f70dbd8
@ -1527,7 +1527,7 @@ pub const Writer = struct {
|
|||||||
Unexpected,
|
Unexpected,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const SeekError = File.SeekError || std.Io.Writer.Error;
|
pub const SeekError = File.SeekError;
|
||||||
|
|
||||||
/// Number of slices to store on the stack, when trying to send as many byte
|
/// Number of slices to store on the stack, when trying to send as many byte
|
||||||
/// vectors through the underlying write calls as possible.
|
/// vectors through the underlying write calls as possible.
|
||||||
@ -1572,7 +1572,7 @@ pub const Writer = struct {
|
|||||||
.mode = w.mode,
|
.mode = w.mode,
|
||||||
.pos = w.pos,
|
.pos = w.pos,
|
||||||
.interface = Reader.initInterface(w.interface.buffer),
|
.interface = Reader.initInterface(w.interface.buffer),
|
||||||
.seek_err = null,
|
.seek_err = w.seek_err,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2002,8 +2002,14 @@ pub const Writer = struct {
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn seekTo(w: *Writer, offset: u64) Writer.SeekError!void {
|
pub fn seekTo(w: *Writer, offset: u64) (Writer.SeekError || std.Io.Writer.Error)!void {
|
||||||
try w.interface.flush();
|
try w.interface.flush();
|
||||||
|
try seekToUnbuffered(w, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Asserts that no data is currently buffered.
|
||||||
|
pub fn seekToUnbuffered(w: *Writer, offset: u64) Writer.SeekError!void {
|
||||||
|
assert(w.interface.buffered().len == 0);
|
||||||
switch (w.mode) {
|
switch (w.mode) {
|
||||||
.positional, .positional_reading => {
|
.positional, .positional_reading => {
|
||||||
w.pos = offset;
|
w.pos = offset;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user