// +build !windows

package tui

import (

"io/ioutil"
"os"
"syscall"

)

var devPrefixes = […]string{“/dev/pts/”, “/dev/”}

func ttyname() string {

var stderr syscall.Stat_t
if syscall.Fstat(2, &stderr) != nil {
        return ""
}

for _, prefix := range devPrefixes {
        files, err := ioutil.ReadDir(prefix)
        if err != nil {
                continue
        }

        for _, file := range files {
                if stat, ok := file.Sys().(*syscall.Stat_t); ok && stat.Rdev == stderr.Rdev {
                        return prefix + file.Name()
                }
        }
}
return ""

}

// TtyIn returns terminal device to be used as STDIN, falls back to os.Stdin func TtyIn() *os.File {

in, err := os.OpenFile(consoleDevice, syscall.O_RDONLY, 0)
if err != nil {
        tty := ttyname()
        if len(tty) > 0 {
                if in, err := os.OpenFile(tty, syscall.O_RDONLY, 0); err == nil {
                        return in
                }
        }
        return os.Stdin
}
return in

}