mirror of https://github.com/gdamore/tcell.git
Permit a different device node to be used as /dev/tty.
This commit is contained in:
parent
d8ae9d764a
commit
dcf5866e16
12
tty_unix.go
12
tty_unix.go
|
@ -37,6 +37,7 @@ type devTty struct {
|
|||
sig chan os.Signal
|
||||
cb func()
|
||||
stopQ chan struct{}
|
||||
dev string
|
||||
wg sync.WaitGroup
|
||||
l sync.Mutex
|
||||
}
|
||||
|
@ -67,7 +68,7 @@ func (tty *devTty) Start() error {
|
|||
// we will have up to two separate file handles open on /dev/tty. (Note that when
|
||||
// using stdin/stdout instead of /dev/tty this problem is not observed.)
|
||||
var err error
|
||||
if tty.f, err = os.OpenFile("/dev/tty", os.O_RDWR, 0); err != nil {
|
||||
if tty.f, err = os.OpenFile(tty.dev, os.O_RDWR, 0); err != nil {
|
||||
return err
|
||||
}
|
||||
tty.fd = int(tty.of.Fd())
|
||||
|
@ -144,12 +145,19 @@ func (tty *devTty) NotifyResize(cb func()) {
|
|||
tty.l.Unlock()
|
||||
}
|
||||
|
||||
// NewDevTty opens a /dev/tty based Tty.
|
||||
func NewDevTty() (Tty, error) {
|
||||
return NewDevTtyFromDev("/dev/tty")
|
||||
}
|
||||
|
||||
// NewDevTtyFromDev opens a tty device given a path. This can be useful to bind to other nodes.
|
||||
func NewDevTtyFromDev(dev string) (Tty, error) {
|
||||
tty := &devTty{
|
||||
dev: dev,
|
||||
sig: make(chan os.Signal),
|
||||
}
|
||||
var err error
|
||||
if tty.of, err = os.OpenFile("/dev/tty", os.O_RDWR, 0); err != nil {
|
||||
if tty.of, err = os.OpenFile(dev, os.O_RDWR, 0); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
tty.fd = int(tty.of.Fd())
|
||||
|
|
Loading…
Reference in New Issue