diff --git a/core/commands/files/files.go b/core/commands/files/files.go index 9099167d5..786728a72 100644 --- a/core/commands/files/files.go +++ b/core/commands/files/files.go @@ -374,7 +374,7 @@ Examples: res.SetError(err, cmds.ErrNormal) return } - var r io.Reader = fi + var r io.Reader = &contextReaderWrapper{R: fi, ctx: req.Context()} count, found, err := req.Option("count").Int() if err != nil { res.SetError(err, cmds.ErrNormal) @@ -392,6 +392,19 @@ Examples: }, } +type contextReader interface { + CtxReadFull(context.Context, []byte) (int, error) +} + +type contextReaderWrapper struct { + R contextReader + ctx context.Context +} + +func (crw *contextReaderWrapper) Read(b []byte) (int, error) { + return crw.R.CtxReadFull(crw.ctx, b) +} + var FilesMvCmd = &cmds.Command{ Helptext: cmds.HelpText{ Tagline: "Move files.",