nt

A sensible note-taking program
git clone git://git.laack.co/nt.git
Log | Files | Refs | README

nonblock_unix.go (1264B)


      1 // Copyright 2021 The TCell Authors
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use file except in compliance with the License.
      5 // You may obtain a copy of the license at
      6 //
      7 //    http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 //go:build linux || aix || zos || solaris
     16 // +build linux aix zos solaris
     17 
     18 package tcell
     19 
     20 import (
     21 	"syscall"
     22 
     23 	"golang.org/x/sys/unix"
     24 )
     25 
     26 // tcSetBufParams is used by the tty driver on UNIX systems to configure the
     27 // buffering parameters (minimum character count and minimum wait time in msec.)
     28 // This also waits for output to drain first.
     29 func tcSetBufParams(fd int, vMin uint8, vTime uint8) error {
     30 	_ = syscall.SetNonblock(fd, true)
     31 	tio, err := unix.IoctlGetTermios(fd, unix.TCGETS)
     32 	if err != nil {
     33 		return err
     34 	}
     35 	tio.Cc[unix.VMIN] = vMin
     36 	tio.Cc[unix.VTIME] = vTime
     37 	if err = unix.IoctlSetTermios(fd, unix.TCSETSW, tio); err != nil {
     38 		return err
     39 	}
     40 	return nil
     41 }