From 2034729c70161b16d99eee0503c4354df39cd49d Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 24 Jun 2021 07:21:38 -0700 Subject: file layout: moving share/txr/stdlib to stdlib. This affects run-time also. Txr installations where the executable is not in directory ending in ${bindir} will look for stdlib rather than share/txr/stdlib, relative to the determined installation directory. * txr.c (sysroot_init): If we detect relative to the short name, or fall back on the program directory, use stdlib rather than share/txr/stdlib as the stdlib_path. * INSTALL: Update some installation notes not to refer to share/txr/stdlib but stdlib. * Makefile (STDLIB_SRCS): Refer to stdlib, not share/txr/stdlib. (clean): In unconfigured mode, remove the old share/txr/stdlib entirely. Remove .tlo files from stdlib. (install): Install lib materials from stdlib. * txr.1: Updated documentation under Deployment Directory Structure. * share/txr/stdlib/{asm,awk,build,cadr}.tl: Renamed to stdlib/{asm,awk,build,cadr}.tl. * share/txr/stdlib/{compiler,conv,copy-file,debugger}.tl: Renamed to stdlib/{compiler,conv,copy-file,debugger}.tl. * share/txr/stdlib/{defset,doc-lookup,doc-syms,doloop}.tl: Renamed to stdlib/{defset,doc-lookup,doc-syms,doloop}.tl. * share/txr/stdlib/{each-prod,error,except,ffi}.tl: Renamed to stdlib/{each-prod,error,except,ffi}.tl. * share/txr/stdlib/{getopts,getput,hash,ifa}.tl: Renamed to stdlib/{getopts,getput,hash,ifa}.tl. * share/txr/stdlib/{keyparams,match,op,optimize}.tl: Renamed to stdlib/{keyparams,match,op,optimize}.tl. * share/txr/stdlib/{package,param,path-test,pic}.tl: Renamed to stdlib/{package,param,path-test,pic}.tl. * share/txr/stdlib/{place,pmac,quips,save-exe}.tl: Renamed to stdlib/{place,pmac,quips,save-exe}.tl. * share/txr/stdlib/{socket,stream-wrap,struct,tagbody}.tl: Renamed to stdlib/{socket,stream-wrap,struct,tagbody}.tl. * share/txr/stdlib/{termios,trace,txr-case,type}.tl: Renamed to stdlib/{termios,trace,txr-case,type}.tl. * share/txr/stdlib/{ver,vm-param,with-resources,with-stream}.tl: Renamed to stdlib/{ver,vm-param,with-resources,with-stream}.tl. * share/txr/stdlib/yield.tl: Renamed to stdlib/yield.tl. * share/txr/stdlib/{txr-case,ver}.txr: Renamed to stdlib/{txr-case,ver}.txr. * gencadr.txr: Update to stdlib/place.tl. * genman.txr: Update to stdlib/cadr.tl. --- stdlib/termios.tl | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 stdlib/termios.tl (limited to 'stdlib/termios.tl') diff --git a/stdlib/termios.tl b/stdlib/termios.tl new file mode 100644 index 00000000..5d2423dc --- /dev/null +++ b/stdlib/termios.tl @@ -0,0 +1,79 @@ +;; Copyright 2016-2021 +;; Kaz Kylheku +;; Vancouver, Canada +;; All rights reserved. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions are met: +;; +;; 1. Redistributions of source code must retain the above copyright notice, this +;; list of conditions and the following disclaimer. +;; +;; 2. Redistributions in binary form must reproduce the above copyright notice, +;; this list of conditions and the following disclaimer in the documentation +;; and/or other materials provided with the distribution. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +;; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +;; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +;; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +(defmeth termios set-iflags (tio . values) + (set tio.iflag (logior tio.iflag . values))) + +(defmeth termios set-oflags (tio . values) + (set tio.oflag (logior tio.oflag . values))) + +(defmeth termios set-cflags (tio . values) + (set tio.cflag (logior tio.cflag . values))) + +(defmeth termios set-lflags (tio . values) + (set tio.lflag (logior tio.lflag . values))) + +(defmeth termios clear-iflags (tio . values) + (set tio.iflag (logand tio.iflag (lognot (logior . values))))) + +(defmeth termios clear-oflags (tio . values) + (set tio.oflag (logand tio.oflag (lognot (logior . values))))) + +(defmeth termios clear-cflags (tio . values) + (set tio.cflag (logand tio.cflag (lognot (logior . values))))) + +(defmeth termios clear-lflags (tio . values) + (set tio.lflag (logand tio.lflag (lognot (logior . values))))) + +(defmeth termios go-raw (tio) + tio.(clear-iflags ignbrk brkint parmrk istrip inlcr igncr icrnl ixon) + tio.(clear-oflags opost) + tio.(clear-cflags csize parenb) + tio.(clear-lflags echo echonl icanon isig) + (if (boundp 'iexten) + tio.(clear-lflags iexten)) + tio.(set-cflags cs8) + (set [tio.cc vmin] 1) + (set [tio.cc vtime] 0)) + +(defmeth termios go-cbreak (tio) + tio.(clear-iflags icrnl) + tio.(clear-lflags icanon) + tio.(set-lflags isig) + (set [tio.cc vmin] 1) + (set [tio.cc vtime] 0)) + +(defmeth termios string-encode (tio) + (let ((*print-base* 16)) + tio.(sys:encode-speeds) + (downcase-str `@{tio.iflag}:@{tio.oflag}:@{tio.cflag}:@{tio.lflag}:\ + @{(list-vec tio.cc) ":"}`))) + +(defmeth termios string-decode (tio string) + (let ((vals (mapcar (op int-str @1 16) (split-str string ":")))) + (lset tio.iflag tio.oflag tio.cflag tio.lflag vals) + (set tio.cc (vec-list (cddddr vals))) + tio.(sys:decode-speeds))) -- cgit v1.2.3