ollama

Форк
0
/
term.go 
37 строк · 1.0 Кб
1
//go:build aix || darwin || dragonfly || freebsd || (linux && !appengine) || netbsd || openbsd || os400 || solaris
2

3
package readline
4

5
import (
6
	"syscall"
7
)
8

9
type Termios syscall.Termios
10

11
func SetRawMode(fd int) (*Termios, error) {
12
	termios, err := getTermios(fd)
13
	if err != nil {
14
		return nil, err
15
	}
16

17
	newTermios := *termios
18
	newTermios.Iflag &^= syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK | syscall.ISTRIP | syscall.INLCR | syscall.IGNCR | syscall.ICRNL | syscall.IXON
19
	newTermios.Lflag &^= syscall.ECHO | syscall.ECHONL | syscall.ICANON | syscall.ISIG | syscall.IEXTEN
20
	newTermios.Cflag &^= syscall.CSIZE | syscall.PARENB
21
	newTermios.Cflag |= syscall.CS8
22
	newTermios.Cc[syscall.VMIN] = 1
23
	newTermios.Cc[syscall.VTIME] = 0
24

25
	return termios, setTermios(fd, &newTermios)
26
}
27

28
func UnsetRawMode(fd int, termios any) error {
29
	t := termios.(*Termios)
30
	return setTermios(fd, t)
31
}
32

33
// IsTerminal returns true if the given file descriptor is a terminal.
34
func IsTerminal(fd int) bool {
35
	_, err := getTermios(fd)
36
	return err == nil
37
}
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.