@@ -1202,12 +1202,26 @@ pub const Reader = struct {
|
||||
};
|
||||
}
|
||||
|
||||
pub fn getSize(r: *Reader) GetEndPosError!u64 {
|
||||
pub fn getSize(r: *Reader) SizeError!u64 {
|
||||
return r.size orelse {
|
||||
if (r.size_err) |err| return err;
|
||||
if (r.file.getEndPos()) |size| {
|
||||
r.size = size;
|
||||
return size;
|
||||
if (is_windows) {
|
||||
if (windows.GetFileSizeEx(r.file.handle)) |size| {
|
||||
r.size = size;
|
||||
return size;
|
||||
} else |err| {
|
||||
r.size_err = err;
|
||||
return err;
|
||||
}
|
||||
}
|
||||
if (stat(r.file)) |st| {
|
||||
if (st.kind == .file) {
|
||||
r.size = st.size;
|
||||
return st.size;
|
||||
} else {
|
||||
r.size_err = error.Streaming;
|
||||
return error.Streaming;
|
||||
}
|
||||
} else |err| {
|
||||
r.size_err = err;
|
||||
return err;
|
||||
|
||||
@@ -36,7 +36,7 @@ pub fn writeDir(w: *Writer, sub_path: []const u8, options: Options) Error!void {
|
||||
try w.writeHeader(.directory, sub_path, "", 0, options);
|
||||
}
|
||||
|
||||
pub const WriteFileError = std.Io.Writer.FileError || Error || std.fs.File.GetEndPosError;
|
||||
pub const WriteFileError = std.Io.Writer.FileError || Error || std.fs.File.Reader.SizeError;
|
||||
|
||||
pub fn writeFile(
|
||||
w: *Writer,
|
||||
|
||||
@@ -115,7 +115,7 @@ pub const EndRecord = extern struct {
|
||||
return record;
|
||||
}
|
||||
|
||||
pub const FindFileError = File.GetEndPosError || File.SeekError || File.ReadError || error{
|
||||
pub const FindFileError = File.Reader.SizeError || File.SeekError || File.ReadError || error{
|
||||
ZipNoEndRecord,
|
||||
EndOfStream,
|
||||
ReadFailed,
|
||||
|
||||
Reference in New Issue
Block a user