From 9416056da18bb1cc731917a32d6a3c3e4fe613d5 Mon Sep 17 00:00:00 2001 From: Jason Lunz Date: Mon, 13 Dec 2021 15:18:32 -0700 Subject: [PATCH] allow combining os.Stdin and os.Stdout as an io.ReadWriteCloser --- pkg/cmd/codespace/ssh.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pkg/cmd/codespace/ssh.go b/pkg/cmd/codespace/ssh.go index 840386d5c..0a1425a87 100644 --- a/pkg/cmd/codespace/ssh.go +++ b/pkg/cmd/codespace/ssh.go @@ -277,3 +277,32 @@ func (fl *fileLogger) Name() string { func (fl *fileLogger) Close() error { return fl.f.Close() } + +type combinedReadWriteCloser struct { + reader *os.File + writer *os.File +} + +func newCombinedReadWriteCloser(reader *os.File, writer *os.File) (crwc *combinedReadWriteCloser) { + return &combinedReadWriteCloser{ + reader: reader, + writer: writer, + } +} + +func (crwc *combinedReadWriteCloser) Read(p []byte) (n int, err error) { + return crwc.reader.Read(p) +} + +func (crwc *combinedReadWriteCloser) Write(p []byte) (n int, err error) { + return crwc.writer.Write(p) +} + +func (crwc *combinedReadWriteCloser) Close() error { + werr := crwc.writer.Close() + rerr := crwc.reader.Close() + if werr != nil { + return werr + } + return rerr +}