mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-26 17:01:04 -06:00
fd36b548c5
Fixes #10266 panicwrap was using Extrafiles to get the original standard streams for `terraform console`. This doesn't work on Windows. Instead, we must use the Win32 APIs to get the exact handles.
53 lines
978 B
Go
53 lines
978 B
Go
// Package wrappedstreams provides access to the standard OS streams
|
|
// (stdin, stdout, stderr) even if wrapped under panicwrap.
|
|
package wrappedstreams
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/mitchellh/panicwrap"
|
|
)
|
|
|
|
// Stdin returns the true stdin of the process.
|
|
func Stdin() *os.File {
|
|
stdin := os.Stdin
|
|
if panicwrap.Wrapped(nil) {
|
|
stdin = wrappedStdin
|
|
}
|
|
|
|
return stdin
|
|
}
|
|
|
|
// Stdout returns the true stdout of the process.
|
|
func Stdout() *os.File {
|
|
stdout := os.Stdout
|
|
if panicwrap.Wrapped(nil) {
|
|
stdout = wrappedStdout
|
|
}
|
|
|
|
return stdout
|
|
}
|
|
|
|
// Stderr returns the true stderr of the process.
|
|
func Stderr() *os.File {
|
|
stderr := os.Stderr
|
|
if panicwrap.Wrapped(nil) {
|
|
stderr = wrappedStderr
|
|
}
|
|
|
|
return stderr
|
|
}
|
|
|
|
// These are the wrapped standard streams. These are setup by the
|
|
// platform specific code in initPlatform.
|
|
var (
|
|
wrappedStdin *os.File
|
|
wrappedStdout *os.File
|
|
wrappedStderr *os.File
|
|
)
|
|
|
|
func init() {
|
|
// Initialize the platform-specific code
|
|
initPlatform()
|
|
}
|