From bd130e72a06dc3e8de521ce365bf4933f36b2417 Mon Sep 17 00:00:00 2001 From: unclejack Date: Wed, 20 Aug 2014 23:50:42 +0300 Subject: [PATCH] pkg/ioutils: add ReaderErrWrapper to readers Docker-DCO-1.1-Signed-off-by: Cristian Staretu (github: unclejack) --- pkg/ioutils/readers.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pkg/ioutils/readers.go b/pkg/ioutils/readers.go index f059bb1666..22f46fbd92 100644 --- a/pkg/ioutils/readers.go +++ b/pkg/ioutils/readers.go @@ -22,6 +22,26 @@ func NewReadCloserWrapper(r io.Reader, closer func() error) io.ReadCloser { } } +type readerErrWrapper struct { + reader io.Reader + closer func() +} + +func (r *readerErrWrapper) Read(p []byte) (int, error) { + n, err := r.reader.Read(p) + if err != nil { + r.closer() + } + return n, err +} + +func NewReaderErrWrapper(r io.Reader, closer func()) io.Reader { + return &readerErrWrapper{ + reader: r, + closer: closer, + } +} + type bufReader struct { sync.Mutex buf *bytes.Buffer