fix: Use stdin/out defined in command (#3199)

This commit is contained in:
Mathias Fredriksson
2022-07-26 17:23:32 +03:00
committed by GitHub
parent 9fe260d5ea
commit 159137dc10
8 changed files with 14 additions and 21 deletions
+6 -5
View File
@@ -127,7 +127,7 @@ func ssh() *cobra.Command {
ipv6 := peerwg.UUIDToNetaddr(uuid.New())
wgn, err := peerwg.New(
slog.Make(sloghuman.Sink(os.Stderr)),
slog.Make(sloghuman.Sink(cmd.ErrOrStderr())),
[]netaddr.IPPrefix{netaddr.IPPrefixFrom(ipv6, 128)},
)
if err != nil {
@@ -192,14 +192,15 @@ func ssh() *cobra.Command {
}
}
stdoutFile, valid := cmd.OutOrStdout().(*os.File)
if valid && isatty.IsTerminal(stdoutFile.Fd()) {
state, err := term.MakeRaw(int(os.Stdin.Fd()))
stdoutFile, validOut := cmd.OutOrStdout().(*os.File)
stdinFile, validIn := cmd.InOrStdin().(*os.File)
if validOut && validIn && isatty.IsTerminal(stdoutFile.Fd()) {
state, err := term.MakeRaw(int(stdinFile.Fd()))
if err != nil {
return err
}
defer func() {
_ = term.Restore(int(os.Stdin.Fd()), state)
_ = term.Restore(int(stdinFile.Fd()), state)
}()
windowChange := listenWindowSize(cmd.Context())