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  )