Skip to content

Commit 8f28196

Browse files
committed
allow combining os.Stdin and os.Stdout as an io.ReadWriteCloser
1 parent f588aec commit 8f28196

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

pkg/cmd/codespace/ssh.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,32 @@ func (fl *fileLogger) Name() string {
277277
func (fl *fileLogger) Close() error {
278278
return fl.f.Close()
279279
}
280+
281+
type combinedReadWriteCloser struct {
282+
reader *os.File
283+
writer *os.File
284+
}
285+
286+
func newCombinedReadWriteCloser(reader *os.File, writer *os.File) (crwc *combinedReadWriteCloser) {
287+
return &combinedReadWriteCloser{
288+
reader: reader,
289+
writer: writer,
290+
}
291+
}
292+
293+
func (crwc *combinedReadWriteCloser) Read(p []byte) (n int, err error) {
294+
return crwc.reader.Read(p)
295+
}
296+
297+
func (crwc *combinedReadWriteCloser) Write(p []byte) (n int, err error) {
298+
return crwc.writer.Write(p)
299+
}
300+
301+
func (crwc *combinedReadWriteCloser) Close() error {
302+
werr := crwc.writer.Close()
303+
rerr := crwc.reader.Close()
304+
if werr {
305+
return werr
306+
}
307+
return rerr
308+
}

0 commit comments

Comments
 (0)