func GetStdFile()

in winterm/ansi.go [164:196]


func GetStdFile(nFile int) (*os.File, uintptr) {
	var file *os.File

	// syscall uses negative numbers
	// windows package uses very big uint32
	// Keep these switches split so we don't have to convert ints too much.
	switch uint32(nFile) {
	case windows.STD_INPUT_HANDLE:
		file = os.Stdin
	case windows.STD_OUTPUT_HANDLE:
		file = os.Stdout
	case windows.STD_ERROR_HANDLE:
		file = os.Stderr
	default:
		switch nFile {
		case syscall.STD_INPUT_HANDLE:
			file = os.Stdin
		case syscall.STD_OUTPUT_HANDLE:
			file = os.Stdout
		case syscall.STD_ERROR_HANDLE:
			file = os.Stderr
		default:
			panic(fmt.Errorf("Invalid standard handle identifier: %v", nFile))
		}
	}

	fd, err := syscall.GetStdHandle(nFile)
	if err != nil {
		panic(fmt.Errorf("Invalid standard handle identifier: %v -- %v", nFile, err))
	}

	return file, uintptr(fd)
}