File tree Expand file tree Collapse file tree 1 file changed +22
-0
lines changed Expand file tree Collapse file tree 1 file changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -2194,8 +2194,10 @@ pub const Discarding = struct {
2194
2194
const d : * Discarding = @alignCast (@fieldParentPtr ("writer" , w ));
2195
2195
d .count += w .end ;
2196
2196
w .end = 0 ;
2197
+ if (limit == .nothing ) return 0 ;
2197
2198
if (file_reader .getSize ()) | size | {
2198
2199
const n = limit .minInt64 (size - file_reader .pos );
2200
+ if (n == 0 ) return error .EndOfStream ;
2199
2201
file_reader .seekBy (@intCast (n )) catch return error .Unimplemented ;
2200
2202
w .end = 0 ;
2201
2203
d .count += n ;
@@ -2522,3 +2524,23 @@ pub const Allocating = struct {
2522
2524
try testing .expectEqualSlices (u8 , "x: 42\n y: 1234\n " , a .getWritten ());
2523
2525
}
2524
2526
};
2527
+
2528
+ test sendFile {
2529
+ var tmp_dir = testing .tmpDir (.{});
2530
+ defer tmp_dir .cleanup ();
2531
+
2532
+ const file = try tmp_dir .dir .createFile ("input.txt" , .{ .read = true });
2533
+ defer file .close ();
2534
+ var r_buffer : [256 ]u8 = undefined ;
2535
+ var file_writer : std.fs.File.Writer = .init (file , & r_buffer );
2536
+ try file_writer .interface .writeByte ('h' );
2537
+ try file_writer .interface .flush ();
2538
+
2539
+ var file_reader = file_writer .moveToReader ();
2540
+ try file_reader .seekTo (0 );
2541
+
2542
+ var w_buffer : [256 ]u8 = undefined ;
2543
+ var discarding : std.io.Writer.Discarding = .init (& w_buffer );
2544
+
2545
+ _ = try file_reader .interface .streamRemaining (& discarding .writer );
2546
+ }
You can’t perform that action at this time.
0 commit comments