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