From a479f5cbd8a5f1b171e1003341c9b6cc50c787ed Mon Sep 17 00:00:00 2001 From: "Guillaume J. Charmes" Date: Thu, 4 Apr 2013 18:52:03 -0700 Subject: [PATCH] Use io.WriteCloser instead of *os.File in DockerLocalConn so we can use it with standard writers and pipes Upstream-commit: e6e9c1cd62bf78e66623950a9f76ef76c6f0f792 Component: engine --- components/engine/rcli/types.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/components/engine/rcli/types.go b/components/engine/rcli/types.go index 500e020194..2cb398783c 100644 --- a/components/engine/rcli/types.go +++ b/components/engine/rcli/types.go @@ -33,24 +33,28 @@ type DockerConn interface { } type DockerLocalConn struct { - file *os.File + writer io.WriteCloser savedState *term.State } -func NewDockerLocalConn(output *os.File) *DockerLocalConn { - return &DockerLocalConn{file: output} +func NewDockerLocalConn(w io.WriteCloser) *DockerLocalConn { + return &DockerLocalConn{ + writer: w, + } } -func (c *DockerLocalConn) Read(b []byte) (int, error) { return c.file.Read(b) } +func (c *DockerLocalConn) Read(b []byte) (int, error) { + return 0, fmt.Errorf("DockerLocalConn does not implement Read()") +} -func (c *DockerLocalConn) Write(b []byte) (int, error) { return c.file.Write(b) } +func (c *DockerLocalConn) Write(b []byte) (int, error) { return c.writer.Write(b) } func (c *DockerLocalConn) Close() error { if c.savedState != nil { RestoreTerminal(c.savedState) c.savedState = nil } - return c.file.Close() + return c.writer.Close() } func (c *DockerLocalConn) CloseWrite() error { return nil }