| ... | ... | @@ -1219,6 +1219,7 @@ pub const Reader = struct { |
| 1219 | 1219 | r.size = st.size; |
| 1220 | 1220 | return st.size; |
| 1221 | 1221 | } else { |
| 1222 | r.mode = r.mode.toStreaming(); |
| 1222 | 1223 | r.size_err = error.Streaming; |
| 1223 | 1224 | return error.Streaming; |
| 1224 | 1225 | } |
| ... | ... | @@ -1419,13 +1420,8 @@ pub const Reader = struct { |
| 1419 | 1420 | const pos = r.pos; |
| 1420 | 1421 | switch (r.mode) { |
| 1421 | 1422 | .positional, .positional_reading => { |
| 1422 | | const size = r.size orelse { |
| 1423 | | if (file.getEndPos()) |size| { |
| 1424 | | r.size = size; |
| 1425 | | } else |err| { |
| 1426 | | r.size_err = err; |
| 1427 | | r.mode = r.mode.toStreaming(); |
| 1428 | | } |
| 1423 | const size = r.getSize() catch { |
| 1424 | r.mode = r.mode.toStreaming(); |
| 1429 | 1425 | return 0; |
| 1430 | 1426 | }; |
| 1431 | 1427 | const delta = @min(@intFromEnum(limit), size - pos); |
| ... | ... | @@ -1472,14 +1468,7 @@ pub const Reader = struct { |
| 1472 | 1468 | r.pos = pos + n; |
| 1473 | 1469 | return n; |
| 1474 | 1470 | } |
| 1475 | | const size = r.size orelse { |
| 1476 | | if (file.getEndPos()) |size| { |
| 1477 | | r.size = size; |
| 1478 | | } else |err| { |
| 1479 | | r.size_err = err; |
| 1480 | | } |
| 1481 | | return 0; |
| 1482 | | }; |
| 1471 | const size = r.getSize() catch return 0; |
| 1483 | 1472 | const n = @min(size - pos, maxInt(i64), @intFromEnum(limit)); |
| 1484 | 1473 | file.seekBy(n) catch |err| { |
| 1485 | 1474 | r.seek_err = err; |
| ... | ... | @@ -1912,15 +1901,7 @@ pub const Writer = struct { |
| 1912 | 1901 | var off: std.os.linux.off_t = undefined; |
| 1913 | 1902 | const off_ptr: ?*std.os.linux.off_t, const count: usize = switch (file_reader.mode) { |
| 1914 | 1903 | .positional => o: { |
| 1915 | | const size = file_reader.size orelse { |
| 1916 | | if (file_reader.file.getEndPos()) |size| { |
| 1917 | | file_reader.size = size; |
| 1918 | | } else |err| { |
| 1919 | | file_reader.size_err = err; |
| 1920 | | file_reader.mode = .streaming; |
| 1921 | | } |
| 1922 | | return 0; |
| 1923 | | }; |
| 1904 | const size = file_reader.getSize() catch return 0; |
| 1924 | 1905 | off = std.math.cast(std.os.linux.off_t, file_reader.pos) orelse return error.ReadFailed; |
| 1925 | 1906 | break :o .{ &off, @min(@intFromEnum(limit), size - file_reader.pos, max_count) }; |
| 1926 | 1907 | }, |