github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/pkg/termios/var_unix.go (about) 1 // Copyright 2015-2017 the u-root Authors. All rights reserved 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build !plan9 6 // +build !plan9 7 8 package termios 9 10 import ( 11 "syscall" 12 13 "golang.org/x/sys/unix" 14 ) 15 16 // Termios is a struct for Termios operations. 17 type Termios struct { 18 unix.Termios 19 } 20 21 type bit struct { 22 word int 23 mask uint32 24 } 25 26 var ( 27 boolFields = map[string]*bit{ 28 // Input processing 29 "ignbrk": {word: I, mask: syscall.IGNBRK}, 30 "brkint": {word: I, mask: syscall.BRKINT}, 31 "ignpar": {word: I, mask: syscall.IGNPAR}, 32 "parmrk": {word: I, mask: syscall.PARMRK}, 33 "inpck": {word: I, mask: syscall.INPCK}, 34 "istrip": {word: I, mask: syscall.ISTRIP}, 35 "inlcr": {word: I, mask: syscall.INLCR}, 36 "igncr": {word: I, mask: syscall.IGNCR}, 37 "icrnl": {word: I, mask: syscall.ICRNL}, 38 "ixon": {word: I, mask: syscall.IXON}, 39 "ixany": {word: I, mask: syscall.IXANY}, 40 "ixoff": {word: I, mask: syscall.IXOFF}, 41 "imaxbel": {word: I, mask: syscall.IMAXBEL}, 42 43 // Outputprocessing 44 "opost": {word: O, mask: syscall.OPOST}, 45 "onlcr": {word: O, mask: syscall.ONLCR}, 46 "ocrnl": {word: O, mask: syscall.OCRNL}, 47 "onocr": {word: O, mask: syscall.ONOCR}, 48 "onlret": {word: O, mask: syscall.ONLRET}, 49 50 // Localprocessing 51 "isig": {word: L, mask: syscall.ISIG}, 52 "icanon": {word: L, mask: syscall.ICANON}, 53 "echo": {word: L, mask: syscall.ECHO}, 54 "echoe": {word: L, mask: syscall.ECHOE}, 55 "echok": {word: L, mask: syscall.ECHOK}, 56 "echonl": {word: L, mask: syscall.ECHONL}, 57 "noflsh": {word: L, mask: syscall.NOFLSH}, 58 "tostop": {word: L, mask: syscall.TOSTOP}, 59 "echoctl": {word: L, mask: syscall.ECHOCTL}, 60 "echoprt": {word: L, mask: syscall.ECHOPRT}, 61 "echoke": {word: L, mask: syscall.ECHOKE}, 62 "flusho": {word: L, mask: syscall.FLUSHO}, 63 "pendin": {word: L, mask: syscall.PENDIN}, 64 "iexten": {word: L, mask: syscall.IEXTEN}, 65 66 // Controlprocessing 67 68 "cstopb": {word: C, mask: syscall.CSTOPB}, 69 "cread": {word: C, mask: syscall.CREAD}, 70 "parenb": {word: C, mask: syscall.PARENB}, 71 "parodd": {word: C, mask: syscall.PARODD}, 72 "hupcl": {word: C, mask: syscall.HUPCL}, 73 "clocal": {word: C, mask: syscall.CLOCAL}, 74 } 75 cc = map[string]int{ 76 "min": 5, 77 "time": 0, 78 "lnext": syscall.VLNEXT, 79 //"flush": syscall.VFLUSH, 80 "intr": syscall.VINTR, 81 "quit": syscall.VQUIT, 82 "erase": syscall.VERASE, 83 "kill": syscall.VKILL, 84 "eof": syscall.VEOF, 85 "eol": syscall.VEOL, 86 "eol2": syscall.VEOL2, 87 //"swtch": syscall.VSWTCH, 88 "start": syscall.VSTART, 89 "stop": syscall.VSTOP, 90 "susp": syscall.VSUSP, 91 //"rprnt": syscall.VRPRNT, 92 "werase": syscall.VWERASE, 93 } 94 ) 95 96 // These consts describe the offsets into the termios struct of various elements. 97 const ( 98 I = iota // Input control 99 O // Output control 100 C // Control 101 L // Line control 102 )