...

Source file src/github.com/mattn/go-tty/tty_plan9.go

Documentation: github.com/mattn/go-tty

     1  package tty
     2  
     3  import (
     4  	"bufio"
     5  	"errors"
     6  	"os"
     7  	"syscall"
     8  )
     9  
    10  type TTY struct {
    11  	in  *os.File
    12  	bin *bufio.Reader
    13  	out *os.File
    14  }
    15  
    16  func open(path string) (*TTY, error) {
    17  	tty := new(TTY)
    18  
    19  	in, err := os.Open("/dev/cons")
    20  	if err != nil {
    21  		return nil, err
    22  	}
    23  	tty.in = in
    24  	tty.bin = bufio.NewReader(in)
    25  
    26  	out, err := os.OpenFile("/dev/cons", syscall.O_WRONLY, 0)
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  	tty.out = out
    31  
    32  	return tty, nil
    33  }
    34  
    35  func (tty *TTY) buffered() bool {
    36  	return tty.bin.Buffered() > 0
    37  }
    38  
    39  func (tty *TTY) readRune() (rune, error) {
    40  	r, _, err := tty.bin.ReadRune()
    41  	return r, err
    42  }
    43  
    44  func (tty *TTY) close() (err error) {
    45  	if err2 := tty.in.Close(); err2 != nil {
    46  		err = err2
    47  	}
    48  	if err2 := tty.out.Close(); err2 != nil {
    49  		err = err2
    50  	}
    51  	return
    52  }
    53  
    54  func (tty *TTY) size() (int, int, error) {
    55  	return 80, 24, nil
    56  }
    57  
    58  func (tty *TTY) sizePixel() (int, int, int, int, error) {
    59  	x, y, _ := tty.size()
    60  	return x, y, -1, -1, errors.New("no implemented method for querying size in pixels on Plan 9")
    61  }
    62  
    63  func (tty *TTY) input() *os.File {
    64  	return tty.in
    65  }
    66  
    67  func (tty *TTY) output() *os.File {
    68  	return tty.out
    69  }
    70  

View as plain text