From 7f67199f509ccef894f65f968468c8f13f2bafec Mon Sep 17 00:00:00 2001 From: Gaius Mulley Date: Tue, 5 Jul 2022 14:49:05 +0100 Subject: Added gcc/m2/mc-boot-ch/Gtermios.cc. gcc/m2/ChangeLog: * mc-boot-ch/Gtermios.cc (New file). Replacing Gtermios.c. Signed-off-by: Gaius Mulley --- gcc/m2/mc-boot-ch/Gtermios.cc | 1947 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1947 insertions(+) create mode 100644 gcc/m2/mc-boot-ch/Gtermios.cc diff --git a/gcc/m2/mc-boot-ch/Gtermios.cc b/gcc/m2/mc-boot-ch/Gtermios.cc new file mode 100644 index 00000000000..5982b5f9ea2 --- /dev/null +++ b/gcc/m2/mc-boot-ch/Gtermios.cc @@ -0,0 +1,1947 @@ +/* Gtermios.c handwritten module for mc. + +Copyright (C) 2010-2022 Free Software Foundation, Inc. +Contributed by Gaius Mulley . + +This file is part of GNU Modula-2. + +GNU Modula-2 is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GNU Modula-2 is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Modula-2; see the file COPYING3. If not see +. */ + +#include "config.h" +#include "system.h" + +#include "gm2-libs-host.h" + +#ifdef HAVE_TERMIOS_H +# include +#endif + +#ifdef TERMIOS_NEEDS_XOPEN_SOURCE +#define _XOPEN_SOURCE +#endif + +#if defined(__cplusplus) +#define EXTERN extern "C" +#else +#define EXTERN +#endif + +#define EXPORT(X) termios##_##X + +typedef enum { + vintr, + vquit, + verase, + vkill, + veof, + vtime, + vmin, + vswtc, + vstart, + vstop, + vsusp, + veol, + vreprint, + vdiscard, + vwerase, + vlnext, + veol2 +} ControlChar; + +typedef enum { + /* input flag bits. */ + ignbrk, + ibrkint, + ignpar, + iparmrk, + inpck, + istrip, + inlcr, + igncr, + icrnl, + iuclc, + ixon, + ixany, + ixoff, + imaxbel, + /* output flag bits. */ + opost, + olcuc, + onlcr, + ocrnl, + onocr, + onlret, + ofill, + ofdel, + onl0, + onl1, + ocr0, + ocr1, + ocr2, + ocr3, + otab0, + otab1, + otab2, + otab3, + obs0, + obs1, + off0, + off1, + ovt0, + ovt1, + /* baud rate. */ + b0, + b50, + b75, + b110, + b135, + b150, + b200, + b300, + b600, + b1200, + b1800, + b2400, + b4800, + b9600, + b19200, + b38400, + b57600, + b115200, + b240400, + b460800, + b500000, + b576000, + b921600, + b1000000, + b1152000, + b1500000, + b2000000, + b2500000, + b3000000, + b3500000, + b4000000, + maxbaud, + crtscts, + /* character size. */ + cs5, + cs6, + cs7, + cs8, + cstopb, + cread, + parenb, + parodd, + hupcl, + clocal, + /* local flags. */ + lisig, + licanon, + lxcase, + lecho, + lechoe, + lechok, + lechonl, + lnoflsh, + ltopstop, + lechoctl, + lechoprt, + lechoke, + lflusho, + lpendin, + liexten +} Flag; + +int +doSetUnset (unsigned int *bitset, unsigned int mask, int value) +{ + if (value) + (*bitset) |= mask; + else + (*bitset) &= (~mask); + return 1; +} + + +#ifdef __cplusplus +extern "C" { +#endif + +/* InitTermios - new data structure. */ + +void * +EXPORT (InitTermios) (void) +{ + struct termios *p = (struct termios *)malloc (sizeof (struct termios)); + + memset (p, 0, sizeof (struct termios)); + return p; +} + +/* KillTermios - delete data structure. */ + +void * +EXPORT (KillTermios) (struct termios *p) +{ + free (p); + return NULL; +} + +/* tcsnow - return the value of TCSANOW. */ + +int +EXPORT (tcsnow) (void) +{ + return TCSANOW; +} + +/* tcsdrain - return the value of TCSADRAIN. */ + +int +EXPORT (tcsdrain) (void) +{ + return TCSADRAIN; +} + +/* tcsflush - return the value of TCSAFLUSH. */ + +int +EXPORT (tcsflush) (void) +{ + return TCSAFLUSH; +} + +/* cfgetospeed - return output baud rate. */ + +int +EXPORT (cfgetospeed) (struct termios *t) +{ + return cfgetospeed (t); +} + +/* cfgetispeed - return input baud rate. */ + +int +EXPORT (cfgetispeed) (struct termios *t) +{ + return cfgetispeed (t); +} + +/* cfsetospeed - set output baud rate. */ + +int +EXPORT (cfsetospeed) (struct termios *t, unsigned int b) +{ + return cfsetospeed (t, b); +} + +/* cfsetispeed - set input baud rate. */ + +int +EXPORT (cfsetispeed) (struct termios *t, unsigned int b) +{ + return cfsetispeed (t, b); +} + +/* cfsetspeed - set input and output baud rate. */ + +int +EXPORT (cfsetspeed) (struct termios *t, unsigned int b) +{ + int val = cfsetispeed (t, b); + if (val == 0) + return cfsetospeed (t, b); + cfsetospeed (t, b); + return val; +} + +/* tcgetattr - get state of, fd, into, t. */ + +int +EXPORT (tcgetattr) (int fd, struct termios *t) +{ + return tcgetattr (fd, t); +} + +/* tcsetattr - set state of, fd, to, t, using option. */ + +int +EXPORT (tcsetattr) (int fd, int option, struct termios *t) +{ + return tcsetattr (fd, option, t); +} + +/* cfmakeraw - sets the terminal to raw mode. */ + +void +EXPORT (cfmakeraw) (struct termios *t) +{ +#if defined(HAVE_CFMAKERAW) + return cfmakeraw (t); +#endif +} + +/* tcsendbreak - send zero bits for duration. */ + +int +EXPORT (tcsendbreak) (int fd, int duration) +{ + return tcsendbreak (fd, duration); +} + +/* tcdrain - waits for pending output to be written on, fd. */ + +int +EXPORT (tcdrain) (int fd) +{ + return tcdrain (fd); +} + +/* tcflushi - flush input. */ + +int +EXPORT (tcflushi) (int fd) +{ +#if defined(TCIFLUSH) + return tcflush (fd, TCIFLUSH); +#else + return 1; +#endif +} + +/* tcflusho - flush output. */ + +int +EXPORT (tcflusho) (int fd) +{ +#if defined(TCOFLUSH) + return tcflush (fd, TCOFLUSH); +#else + return 1; +#endif +} + +/* tcflushio - flush input and output. */ + +int +EXPORT (tcflushio) (int fd) +{ +#if defined(TCIOFLUSH) + return tcflush (fd, TCIOFLUSH); +#else + return 1; +#endif +} + +/* tcflowoni - restart input on, fd. */ + +int +EXPORT (tcflowoni) (int fd) +{ +#if defined(TCION) + return tcflow (fd, TCION); +#else + return 1; +#endif +} + +/* tcflowoffi - stop input on, fd. */ + +int +EXPORT (tcflowoffi) (int fd) +{ +#if defined(TCIOFF) + return tcflow (fd, TCIOFF); +#else + return 1; +#endif +} + +/* tcflowono - restart output on, fd. */ + +int +EXPORT (tcflowono) (int fd) +{ +#if defined(TCOON) + return tcflow (fd, TCOON); +#else + return 1; +#endif +} + +/* tcflowoffo - stop output on, fd. */ + +int +EXPORT (tcflowoffo) (int fd) +{ +#if defined(TCOOFF) + return tcflow (fd, TCOOFF); +#else + return 1; +#endif +} + +/* GetFlag - sets a flag value from, t, in, b, and returns TRUE if, + t, supports, f. */ + +int +EXPORT (GetFlag) (struct termios *t, Flag f, int *b) +{ + switch (f) + { + + case ignbrk: +#if defined(IGNBRK) + *b = ((t->c_iflag & IGNBRK) == IGNBRK); + return 1; +#else + return 0; +#endif + case ibrkint: +#if defined(BRKINT) + *b = ((t->c_iflag & BRKINT) == BRKINT); + return 1; +#else + return 0; +#endif + case ignpar: +#if defined(IGNPAR) + *b = ((t->c_iflag & IGNPAR) == IGNPAR); + return 1; +#else + return 0; +#endif + case iparmrk: +#if defined(PARMRK) + *b = ((t->c_iflag & PARMRK) == PARMRK); + return 1; +#else + return 0; +#endif + case inpck: +#if defined(INPCK) + *b = ((t->c_iflag & INPCK) == INPCK); + return 1; +#else + return 0; +#endif + case istrip: +#if defined(ISTRIP) + *b = ((t->c_iflag & ISTRIP) == ISTRIP); + return 1; +#else + return 0; +#endif + case inlcr: +#if defined(INLCR) + *b = ((t->c_iflag & INLCR) == INLCR); + return 1; +#else + return 0; +#endif + case igncr: +#if defined(IGNCR) + *b = ((t->c_iflag & IGNCR) == IGNCR); + return 1; +#else + return 0; +#endif + case icrnl: +#if defined(ICRNL) + *b = ((t->c_iflag & ICRNL) == ICRNL); + return 1; +#else + return 0; +#endif + case iuclc: +#if defined(IUCLC) + *b = ((t->c_iflag & IUCLC) == IUCLC); + return 1; +#else + return 0; +#endif + case ixon: +#if defined(IXON) + *b = ((t->c_iflag & IXON) == IXON); + return 1; +#else + return 0; +#endif + case ixany: +#if defined(IXANY) + *b = ((t->c_iflag & IXANY) == IXANY); + return 1; +#else + return 0; +#endif + case ixoff: +#if defined(IXOFF) + *b = ((t->c_iflag & IXOFF) == IXOFF); + return 1; +#else + return 0; +#endif + case imaxbel: +#if defined(IMAXBEL) + *b = ((t->c_iflag & IMAXBEL) == IMAXBEL); + return 1; +#else + return 0; +#endif + case opost: +#if defined(OPOST) + *b = ((t->c_oflag & OPOST) == OPOST); + return 1; +#else + return 0; +#endif + case olcuc: +#if defined(OLCUC) + *b = ((t->c_oflag & OLCUC) == OLCUC); + return 1; +#else + return 0; +#endif + case onlcr: +#if defined(ONLCR) + *b = ((t->c_oflag & ONLCR) == ONLCR); + return 1; +#else + return 0; +#endif + case ocrnl: +#if defined(OCRNL) + *b = ((t->c_oflag & OCRNL) == OCRNL); + return 1; +#else + return 0; +#endif + case onocr: +#if defined(ONOCR) + *b = ((t->c_oflag & ONOCR) == ONOCR); + return 1; +#else + return 0; +#endif + case onlret: +#if defined(ONLRET) + *b = ((t->c_oflag & ONLRET) == ONLRET); + return 1; +#else + return 0; +#endif + case ofill: +#if defined(OFILL) + *b = ((t->c_oflag & OFILL) == OFILL); + return 1; +#else + return 0; +#endif + case ofdel: +#if defined(OFDEL) + *b = ((t->c_oflag & OFDEL) == OFDEL); + return 1; +#else + return 0; +#endif + case onl0: +#if defined(NL0) + *b = ((t->c_oflag & NL0) == NL0); + return 1; +#else + return 0; +#endif + case onl1: +#if defined(NL1) + *b = ((t->c_oflag & NL1) == NL1); + return 1; +#else + return 0; +#endif + case ocr0: +#if defined(CR0) + *b = ((t->c_oflag & CR0) == CR0); + return 1; +#else + return 0; +#endif + case ocr1: +#if defined(CR1) + *b = ((t->c_oflag & CR1) == CR1); + return 1; +#else + return 0; +#endif + case ocr2: +#if defined(CR2) + *b = ((t->c_oflag & CR2) == CR2); + return 1; +#else + return 0; +#endif + case ocr3: +#if defined(CR3) + *b = ((t->c_oflag & CR3) == CR3); + return 1; +#else + return 0; +#endif + case otab0: +#if defined(TAB0) + *b = ((t->c_oflag & TAB0) == TAB0); + return 1; +#else + return 0; +#endif + case otab1: +#if defined(TAB1) + *b = ((t->c_oflag & TAB1) == TAB1); + return 1; +#else + return 0; +#endif + case otab2: +#if defined(TAB2) + *b = ((t->c_oflag & TAB2) == TAB2); + return 1; +#else + return 0; +#endif + case otab3: +#if defined(TAB3) + *b = ((t->c_oflag & TAB3) == TAB3); + return 1; +#else + return 0; +#endif + case obs0: +#if defined(BS0) + *b = ((t->c_oflag & BS0) == BS0); + return 1; +#else + return 0; +#endif + case obs1: +#if defined(BS1) + *b = ((t->c_oflag & BS1) == BS1); + return 1; +#else + return 0; +#endif + case off0: +#if defined(FF0) + *b = ((t->c_oflag & FF0) == FF0); + return 1; +#else + return 0; +#endif + case off1: +#if defined(FF1) + *b = ((t->c_oflag & FF1) == FF1); + return 1; +#else + return 0; +#endif + case ovt0: +#if defined(VT0) + *b = ((t->c_oflag & VT0) == VT0); + return 1; +#else + return 0; +#endif + case ovt1: +#if defined(VT1) + *b = ((t->c_oflag & VT1) == VT1); + return 1; +#else + return 0; +#endif + case b0: +#if defined(B0) + *b = ((t->c_cflag & B0) == B0); + return 1; +#else + return 0; +#endif + case b50: +#if defined(B50) + *b = ((t->c_cflag & B50) == B50); + return 1; +#else + return 0; +#endif + case b75: +#if defined(B75) + *b = ((t->c_cflag & B75) == B75); + return 1; +#else + return 0; +#endif + case b110: +#if defined(B110) + *b = ((t->c_cflag & B110) == B110); + return 1; +#else + return 0; +#endif + case b135: +#if defined(B134) + *b = ((t->c_cflag & B134) == B134); + return 1; +#else + return 0; +#endif + case b150: +#if defined(B150) + *b = ((t->c_cflag & B150) == B150); + return 1; +#else + return 0; +#endif + case b200: +#if defined(B200) + *b = ((t->c_cflag & B200) == B200); + return 1; +#else + return 0; +#endif + case b300: +#if defined(B300) + *b = ((t->c_cflag & B300) == B300); + return 1; +#else + return 0; +#endif + case b600: +#if defined(B600) + *b = ((t->c_cflag & B600) == B600); + return 1; +#else + return 0; +#endif + case b1200: +#if defined(B1200) + *b = ((t->c_cflag & B1200) == B1200); + return 1; +#else + return 0; +#endif + case b1800: +#if defined(B1800) + *b = ((t->c_cflag & B1800) == B1800); + return 1; +#else + return 0; +#endif + case b2400: +#if defined(B2400) + *b = ((t->c_cflag & B2400) == B2400); + return 1; +#else + return 0; +#endif + case b4800: +#if defined(B4800) + *b = ((t->c_cflag & B4800) == B4800); + return 1; +#else + return 0; +#endif + case b9600: +#if defined(B9600) + *b = ((t->c_cflag & B9600) == B9600); + return 1; +#else + return 0; +#endif + case b19200: +#if defined(B19200) + *b = ((t->c_cflag & B19200) == B19200); + return 1; +#else + return 0; +#endif + case b38400: +#if defined(B38400) + *b = ((t->c_cflag & B38400) == B38400); + return 1; +#else + return 0; +#endif + case b57600: +#if defined(B57600) + *b = ((t->c_cflag & B57600) == B57600); + return 1; +#else + return 0; +#endif + case b115200: +#if defined(B115200) + *b = ((t->c_cflag & B115200) == B115200); + return 1; +#else + return 0; +#endif + case b240400: +#if defined(B230400) + *b = ((t->c_cflag & B230400) == B230400); + return 1; +#else + return 0; +#endif + case b460800: +#if defined(B460800) + *b = ((t->c_cflag & B460800) == B460800); + return 1; +#else + return 0; +#endif + case b500000: +#if defined(B500000) + *b = ((t->c_cflag & B500000) == B500000); + return 1; +#else + return 0; +#endif + case b576000: +#if defined(B576000) + *b = ((t->c_cflag & B576000) == B576000); + return 1; +#else + return 0; +#endif + case b921600: +#if defined(B921600) + *b = ((t->c_cflag & B921600) == B921600); + return 1; +#else + return 0; +#endif + case b1000000: +#if defined(B1000000) + *b = ((t->c_cflag & B1000000) == B1000000); + return 1; +#else + return 0; +#endif + case b1152000: +#if defined(B1152000) + *b = ((t->c_cflag & B1152000) == B1152000); + return 1; +#else + return 0; +#endif + case b1500000: +#if defined(B1500000) + *b = ((t->c_cflag & B1500000) == B1500000); + return 1; +#else + return 0; +#endif + case b2000000: +#if defined(B2000000) + *b = ((t->c_cflag & B2000000) == B2000000); + return 1; +#else + return 0; +#endif + case b2500000: +#if defined(B2500000) + *b = ((t->c_cflag & B2500000) == B2500000); + return 1; +#else + return 0; +#endif + case b3000000: +#if defined(B3000000) + *b = ((t->c_cflag & B3000000) == B3000000); + return 1; +#else + return 0; +#endif + case b3500000: +#if defined(B3500000) + *b = ((t->c_cflag & B3500000) == B3500000); + return 1; +#else + return 0; +#endif + case b4000000: +#if defined(B4000000) + *b = ((t->c_cflag & B4000000) == B4000000); + return 1; +#else + return 0; +#endif + case maxbaud: +#if defined(__MAX_BAUD) + *b = ((t->c_cflag & __MAX_BAUD) == __MAX_BAUD); + return 1; +#else + return 0; +#endif + case crtscts: +#if defined(CRTSCTS) + *b = ((t->c_cflag & CRTSCTS) == CRTSCTS); + return 1; +#else + return 0; +#endif + case cs5: +#if defined(CS5) + *b = ((t->c_cflag & CS5) == CS5); + return 1; +#else + return 0; +#endif + case cs6: +#if defined(CS6) + *b = ((t->c_cflag & CS6) == CS6); + return 1; +#else + return 0; +#endif + case cs7: +#if defined(CS7) + *b = ((t->c_cflag & CS7) == CS7); + return 1; +#else + return 0; +#endif + case cs8: +#if defined(CS8) + *b = ((t->c_cflag & CS8) == CS8); + return 1; +#else + return 0; +#endif + case cstopb: +#if defined(CSTOPB) + *b = ((t->c_cflag & CSTOPB) == CSTOPB); + return 1; +#else + return 0; +#endif + case cread: +#if defined(CREAD) + *b = ((t->c_cflag & CREAD) == CREAD); + return 1; +#else + return 0; +#endif + case parenb: +#if defined(PARENB) + *b = ((t->c_cflag & PARENB) == PARENB); + return 1; +#else + return 0; +#endif + case parodd: +#if defined(PARODD) + *b = ((t->c_cflag & PARODD) == PARODD); + return 1; +#else + return 0; +#endif + case hupcl: +#if defined(HUPCL) + *b = ((t->c_cflag & HUPCL) == HUPCL); + return 1; +#else + return 0; +#endif + case clocal: +#if defined(CLOCAL) + *b = ((t->c_cflag & CLOCAL) == CLOCAL); + return 1; +#else + return 0; +#endif + case lisig: +#if defined(ISIG) + *b = ((t->c_lflag & ISIG) == ISIG); + return 1; +#else + return 0; +#endif + case licanon: +#if defined(ICANON) + *b = ((t->c_lflag & ICANON) == ICANON); + return 1; +#else + return 0; +#endif + case lxcase: +#if defined(XCASE) + *b = ((t->c_lflag & XCASE) == XCASE); + return 1; +#else + return 0; +#endif + case lecho: +#if defined(ECHO) + *b = ((t->c_lflag & ECHO) == ECHO); + return 1; +#else + return 0; +#endif + case lechoe: +#if defined(ECHOE) + *b = ((t->c_lflag & ECHOE) == ECHOE); + return 1; +#else + return 0; +#endif + case lechok: +#if defined(ECHOK) + *b = ((t->c_lflag & ECHOK) == ECHOK); + return 1; +#else + return 0; +#endif + case lechonl: +#if defined(ECHONL) + *b = ((t->c_lflag & ECHONL) == ECHONL); + return 1; +#else + return 0; +#endif + case lnoflsh: +#if defined(NOFLSH) + *b = ((t->c_lflag & NOFLSH) == NOFLSH); + return 1; +#else + return 0; +#endif + case ltopstop: +#if defined(TOSTOP) + *b = ((t->c_lflag & TOSTOP) == TOSTOP); + return 1; +#else + return 0; +#endif + case lechoctl: +#if defined(ECHOCTL) + *b = ((t->c_lflag & ECHOCTL) == ECHOCTL); + return 1; +#else + return 0; +#endif + case lechoprt: +#if defined(ECHOPRT) + *b = ((t->c_lflag & ECHOPRT) == ECHOPRT); + return 1; +#else + return 0; +#endif + case lechoke: +#if defined(ECHOKE) + *b = ((t->c_lflag & ECHOKE) == ECHOKE); + return 1; +#else + return 0; +#endif + case lflusho: +#if defined(FLUSHO) + *b = ((t->c_lflag & FLUSHO) == FLUSHO); + return 1; +#else + return 0; +#endif + case lpendin: +#if defined(PENDIN) + *b = ((t->c_lflag & PENDIN) == PENDIN); + return 1; +#else + return 0; +#endif + case liexten: +#if defined(IEXTEN) + *b = ((t->c_lflag & IEXTEN) == IEXTEN); + return 1; +#else + return 0; +#endif + } + return 0; +} + +/* SetFlag - sets a flag value in, t, to, b, and returns TRUE if this + flag value is supported. */ + +int +EXPORT (SetFlag) (struct termios *t, Flag f, int b) +{ + switch (f) + { + case ignbrk: +#if defined(IGNBRK) + return doSetUnset (&t->c_iflag, IGNBRK, b); +#else + return 0; +#endif + case ibrkint: +#if defined(BRKINT) + return doSetUnset (&t->c_iflag, BRKINT, b); +#else + return 0; +#endif + case ignpar: +#if defined(IGNPAR) + return doSetUnset (&t->c_iflag, IGNPAR, b); +#else + return 0; +#endif + case iparmrk: +#if defined(PARMRK) + return doSetUnset (&t->c_iflag, PARMRK, b); +#else + return 0; +#endif + case inpck: +#if defined(INPCK) + return doSetUnset (&t->c_iflag, INPCK, b); +#else + return 0; +#endif + case istrip: +#if defined(ISTRIP) + return doSetUnset (&t->c_iflag, ISTRIP, b); +#else + return 0; +#endif + case inlcr: +#if defined(INLCR) + return doSetUnset (&t->c_iflag, INLCR, b); +#else + return 0; +#endif + case igncr: +#if defined(IGNCR) + return doSetUnset (&t->c_iflag, IGNCR, b); +#else + return 0; +#endif + case icrnl: +#if defined(ICRNL) + return doSetUnset (&t->c_iflag, ICRNL, b); +#else + return 0; +#endif + case iuclc: +#if defined(IUCLC) + return doSetUnset (&t->c_iflag, IUCLC, b); +#else + return 0; +#endif + case ixon: +#if defined(IXON) + return doSetUnset (&t->c_iflag, IXON, b); +#else + return 0; +#endif + case ixany: +#if defined(IXANY) + return doSetUnset (&t->c_iflag, IXANY, b); +#else + return 0; +#endif + case ixoff: +#if defined(IXOFF) + return doSetUnset (&t->c_iflag, IXOFF, b); +#else + return 0; +#endif + case imaxbel: +#if defined(IMAXBEL) + return doSetUnset (&t->c_iflag, IMAXBEL, b); +#else + return 0; +#endif + case opost: +#if defined(OPOST) + return doSetUnset (&t->c_oflag, OPOST, b); +#else + return 0; +#endif + case olcuc: +#if defined(OLCUC) + return doSetUnset (&t->c_oflag, OLCUC, b); +#else + return 0; +#endif + case onlcr: +#if defined(ONLCR) + return doSetUnset (&t->c_oflag, ONLCR, b); +#else + return 0; +#endif + case ocrnl: +#if defined(OCRNL) + return doSetUnset (&t->c_oflag, OCRNL, b); +#else + return 0; +#endif + case onocr: +#if defined(ONOCR) + return doSetUnset (&t->c_oflag, ONOCR, b); +#else + return 0; +#endif + case onlret: +#if defined(ONLRET) + return doSetUnset (&t->c_oflag, ONLRET, b); +#else + return 0; +#endif + case ofill: +#if defined(OFILL) + return doSetUnset (&t->c_oflag, OFILL, b); +#else + return 0; +#endif + case ofdel: +#if defined(OFDEL) + return doSetUnset (&t->c_oflag, OFDEL, b); +#else + return 0; +#endif + case onl0: +#if defined(NL0) + return doSetUnset (&t->c_oflag, NL0, b); +#else + return 0; +#endif + case onl1: +#if defined(NL1) + return doSetUnset (&t->c_oflag, NL1, b); +#else + return 0; +#endif + case ocr0: +#if defined(CR0) + return doSetUnset (&t->c_oflag, CR0, b); +#else + return 0; +#endif + case ocr1: +#if defined(CR1) + return doSetUnset (&t->c_oflag, CR1, b); +#else + return 0; +#endif + case ocr2: +#if defined(CR2) + return doSetUnset (&t->c_oflag, CR2, b); +#else + return 0; +#endif + case ocr3: +#if defined(CR3) + return doSetUnset (&t->c_oflag, CR3, b); +#else + return 0; +#endif + case otab0: +#if defined(TAB0) + return doSetUnset (&t->c_oflag, TAB0, b); +#else + return 0; +#endif + case otab1: +#if defined(TAB1) + return doSetUnset (&t->c_oflag, TAB1, b); +#else + return 0; +#endif + case otab2: +#if defined(TAB2) + return doSetUnset (&t->c_oflag, TAB2, b); +#else + return 0; +#endif + case otab3: +#if defined(TAB3) + return doSetUnset (&t->c_oflag, TAB3, b); +#else + return 0; +#endif + case obs0: +#if defined(BS0) + return doSetUnset (&t->c_oflag, BS0, b); +#else + return 0; +#endif + case obs1: +#if defined(BS1) + return doSetUnset (&t->c_oflag, BS1, b); +#else + return 0; +#endif + case off0: +#if defined(FF0) + return doSetUnset (&t->c_oflag, FF0, b); +#else + return 0; +#endif + case off1: +#if defined(FF1) + return doSetUnset (&t->c_oflag, FF1, b); +#else + return 0; +#endif + case ovt0: +#if defined(VT0) + return doSetUnset (&t->c_oflag, VT0, b); +#else + return 0; +#endif + case ovt1: +#if defined(VT1) + return doSetUnset (&t->c_oflag, VT1, b); +#else + return 0; +#endif + case b0: +#if defined(B0) + return doSetUnset (&t->c_cflag, B0, b); +#else + return 0; +#endif + case b50: +#if defined(B50) + return doSetUnset (&t->c_cflag, B50, b); +#else + return 0; +#endif + case b75: +#if defined(B75) + return doSetUnset (&t->c_cflag, B75, b); +#else + return 0; +#endif + case b110: +#if defined(B110) + return doSetUnset (&t->c_cflag, B110, b); +#else + return 0; +#endif + case b135: +#if defined(B134) + return doSetUnset (&t->c_cflag, B134, b); +#else + return 0; +#endif + case b150: +#if defined(B150) + return doSetUnset (&t->c_cflag, B150, b); +#else + return 0; +#endif + case b200: +#if defined(B200) + return doSetUnset (&t->c_cflag, B200, b); +#else + return 0; +#endif + case b300: +#if defined(B300) + return doSetUnset (&t->c_cflag, B300, b); +#else + return 0; +#endif + case b600: +#if defined(B600) + return doSetUnset (&t->c_cflag, B600, b); +#else + return 0; +#endif + case b1200: +#if defined(B1200) + return doSetUnset (&t->c_cflag, B1200, b); +#else + return 0; +#endif + case b1800: +#if defined(B1800) + return doSetUnset (&t->c_cflag, B1800, b); +#else + return 0; +#endif + case b2400: +#if defined(B2400) + return doSetUnset (&t->c_cflag, B2400, b); +#else + return 0; +#endif + case b4800: +#if defined(B4800) + return doSetUnset (&t->c_cflag, B4800, b); +#else + return 0; +#endif + case b9600: +#if defined(B9600) + return doSetUnset (&t->c_cflag, B9600, b); +#else + return 0; +#endif + case b19200: +#if defined(B19200) + return doSetUnset (&t->c_cflag, B19200, b); +#else + return 0; +#endif + case b38400: +#if defined(B38400) + return doSetUnset (&t->c_cflag, B38400, b); +#else + return 0; +#endif + case b57600: +#if defined(B57600) + return doSetUnset (&t->c_cflag, B57600, b); +#else + return 0; +#endif + case b115200: +#if defined(B115200) + return doSetUnset (&t->c_cflag, B115200, b); +#else + return 0; +#endif + case b240400: +#if defined(B230400) + return doSetUnset (&t->c_cflag, B230400, b); +#else + return 0; +#endif + case b460800: +#if defined(B460800) + return doSetUnset (&t->c_cflag, B460800, b); +#else + return 0; +#endif + case b500000: +#if defined(B500000) + return doSetUnset (&t->c_cflag, B500000, b); +#else + return 0; +#endif + case b576000: +#if defined(B576000) + return doSetUnset (&t->c_cflag, B576000, b); +#else + return 0; +#endif + case b921600: +#if defined(B921600) + return doSetUnset (&t->c_cflag, B921600, b); +#else + return 0; +#endif + case b1000000: +#if defined(B1000000) + return doSetUnset (&t->c_cflag, B1000000, b); +#else + return 0; +#endif + case b1152000: +#if defined(B1152000) + return doSetUnset (&t->c_cflag, B1152000, b); +#else + return 0; +#endif + case b1500000: +#if defined(B1500000) + return doSetUnset (&t->c_cflag, B1500000, b); +#else + return 0; +#endif + case b2000000: +#if defined(B2000000) + return doSetUnset (&t->c_cflag, B2000000, b); +#else + return 0; +#endif + case b2500000: +#if defined(B2500000) + return doSetUnset (&t->c_cflag, B2500000, b); +#else + return 0; +#endif + case b3000000: +#if defined(B3000000) + return doSetUnset (&t->c_cflag, B3000000, b); +#else + return 0; +#endif + case b3500000: +#if defined(B3500000) + return doSetUnset (&t->c_cflag, B3500000, b); +#else + return 0; +#endif + case b4000000: +#if defined(B4000000) + return doSetUnset (&t->c_cflag, B4000000, b); +#else + return 0; +#endif + case maxbaud: +#if defined(__MAX_BAUD) + return doSetUnset (&t->c_cflag, __MAX_BAUD, b); +#else + return 0; +#endif + case crtscts: +#if defined(CRTSCTS) + return doSetUnset (&t->c_cflag, CRTSCTS, b); +#else + return 0; +#endif + case cs5: +#if defined(CS5) + return doSetUnset (&t->c_cflag, CS5, b); +#else + return 0; +#endif + case cs6: +#if defined(CS6) + return doSetUnset (&t->c_cflag, CS6, b); +#else + return 0; +#endif + case cs7: +#if defined(CS7) + return doSetUnset (&t->c_cflag, CS7, b); +#else + return 0; +#endif + case cs8: +#if defined(CS8) + return doSetUnset (&t->c_cflag, CS8, b); +#else + return 0; +#endif + case cstopb: +#if defined(CSTOPB) + return doSetUnset (&t->c_cflag, CSTOPB, b); +#else + return 0; +#endif + case cread: +#if defined(CREAD) + return doSetUnset (&t->c_cflag, CREAD, b); +#else + return 0; +#endif + case parenb: +#if defined(PARENB) + return doSetUnset (&t->c_cflag, PARENB, b); +#else + return 0; +#endif + case parodd: +#if defined(PARODD) + return doSetUnset (&t->c_cflag, PARODD, b); +#else + return 0; +#endif + case hupcl: +#if defined(HUPCL) + return doSetUnset (&t->c_cflag, HUPCL, b); +#else + return 0; +#endif + case clocal: +#if defined(CLOCAL) + return doSetUnset (&t->c_cflag, CLOCAL, b); +#else + return 0; +#endif + case lisig: +#if defined(ISIG) + return doSetUnset (&t->c_lflag, ISIG, b); +#else + return 0; +#endif + case licanon: +#if defined(ICANON) + return doSetUnset (&t->c_lflag, ICANON, b); +#else + return 0; +#endif + case lxcase: +#if defined(XCASE) + return doSetUnset (&t->c_lflag, XCASE, b); +#else + return 0; +#endif + case lecho: +#if defined(ECHO) + return doSetUnset (&t->c_lflag, ECHO, b); +#else + return 0; +#endif + case lechoe: +#if defined(ECHOE) + return doSetUnset (&t->c_lflag, ECHOE, b); +#else + return 0; +#endif + case lechok: +#if defined(ECHOK) + return doSetUnset (&t->c_lflag, ECHOK, b); +#else + return 0; +#endif + case lechonl: +#if defined(ECHONL) + return doSetUnset (&t->c_lflag, ECHONL, b); +#else + return 0; +#endif + case lnoflsh: +#if defined(NOFLSH) + return doSetUnset (&t->c_lflag, NOFLSH, b); +#else + return 0; +#endif + case ltopstop: +#if defined(TOSTOP) + return doSetUnset (&t->c_lflag, TOSTOP, b); +#else + return 0; +#endif + case lechoctl: +#if defined(ECHOCTL) + return doSetUnset (&t->c_lflag, ECHOCTL, b); +#else + return 0; +#endif + case lechoprt: +#if defined(ECHOPRT) + return doSetUnset (&t->c_lflag, ECHOPRT, b); +#else + return 0; +#endif + case lechoke: +#if defined(ECHOKE) + return doSetUnset (&t->c_lflag, ECHOKE, b); +#else + return 0; +#endif + case lflusho: +#if defined(FLUSHO) + return doSetUnset (&t->c_lflag, FLUSHO, b); +#else + return 0; +#endif + case lpendin: +#if defined(PENDIN) + return doSetUnset (&t->c_lflag, PENDIN, b); +#else + return 0; +#endif + case liexten: +#if defined(IEXTEN) + return doSetUnset (&t->c_lflag, IEXTEN, b); +#else + return 0; +#endif + } + return 0; +} + +/* GetChar - sets a CHAR, ch, value from, t, and returns TRUE if this + value is supported. */ + +int +EXPORT (GetChar) (struct termios *t, ControlChar c, char *ch) +{ + switch (c) + { + + case vintr: +#if defined(VINTR) + *ch = t->c_cc[VINTR]; + return 1; +#else + return 0; +#endif + case vquit: +#if defined(VQUIT) + *ch = t->c_cc[VQUIT]; + return 1; +#else + return 0; +#endif + case verase: +#if defined(VERASE) + *ch = t->c_cc[VERASE]; + return 1; +#else + return 0; +#endif + case vkill: +#if defined(VKILL) + *ch = t->c_cc[VKILL]; + return 1; +#else + return 0; +#endif + case veof: +#if defined(VEOF) + *ch = t->c_cc[VEOF]; + return 1; +#else + return 0; +#endif + case vtime: +#if defined(VTIME) + *ch = t->c_cc[VTIME]; + return 1; +#else + return 0; +#endif + case vmin: +#if defined(VMIN) + *ch = t->c_cc[VMIN]; + return 1; +#else + return 0; +#endif + case vswtc: +#if defined(VSWTC) + *ch = t->c_cc[VSWTC]; + return 1; +#else + return 0; +#endif + case vstart: +#if defined(VSTART) + *ch = t->c_cc[VSTART]; + return 1; +#else + return 0; +#endif + case vstop: +#if defined(VSTOP) + *ch = t->c_cc[VSTOP]; + return 1; +#else + return 0; +#endif + case vsusp: +#if defined(VSUSP) + *ch = t->c_cc[VSUSP]; + return 1; +#else + return 0; +#endif + case veol: +#if defined(VEOL) + *ch = t->c_cc[VEOL]; + return 1; +#else + return 0; +#endif + case vreprint: +#if defined(VREPRINT) + *ch = t->c_cc[VREPRINT]; + return 1; +#else + return 0; +#endif + case vdiscard: +#if defined(VDISCARD) + *ch = t->c_cc[VDISCARD]; + return 1; +#else + return 0; +#endif + case vwerase: +#if defined(VWERASE) + *ch = t->c_cc[VWERASE]; + return 1; +#else + return 0; +#endif + case vlnext: +#if defined(VLNEXT) + *ch = t->c_cc[VLNEXT]; + return 1; +#else + return 0; +#endif + case veol2: +#if defined(VEOL2) + *ch = t->c_cc[VEOL2]; + return 1; +#else + return 0; +#endif + default: + return 0; + } +} + +/* SetChar - sets a CHAR value in, t, and returns TRUE if, c, is + supported. */ + +int +EXPORT (SetChar) (struct termios *t, ControlChar c, char ch) +{ + switch (c) + { + + case vintr: +#if defined(VINTR) + t->c_cc[VINTR] = ch; + return 1; +#else + return 0; +#endif + case vquit: +#if defined(VQUIT) + t->c_cc[VQUIT] = ch; + return 1; +#else + return 0; +#endif + case verase: +#if defined(VERASE) + t->c_cc[VERASE] = ch; + return 1; +#else + return 0; +#endif + case vkill: +#if defined(VKILL) + t->c_cc[VKILL] = ch; + return 1; +#else + return 0; +#endif + case veof: +#if defined(VEOF) + t->c_cc[VEOF] = ch; + return 1; +#else + return 0; +#endif + case vtime: +#if defined(VTIME) + t->c_cc[VTIME] = ch; + return 1; +#else + return 0; +#endif + case vmin: +#if defined(VMIN) + t->c_cc[VMIN] = ch; + return 1; +#else + return 0; +#endif + case vswtc: +#if defined(VSWTC) + t->c_cc[VSWTC] = ch; + return 1; +#else + return 0; +#endif + case vstart: +#if defined(VSTART) + t->c_cc[VSTART] = ch; + return 1; +#else + return 0; +#endif + case vstop: +#if defined(VSTOP) + t->c_cc[VSTOP] = ch; + return 1; +#else + return 0; +#endif + case vsusp: +#if defined(VSUSP) + t->c_cc[VSUSP] = ch; + return 1; +#else + return 0; +#endif + case veol: +#if defined(VEOL) + t->c_cc[VEOL] = ch; + return 1; +#else + return 0; +#endif + case vreprint: +#if defined(VREPRINT) + t->c_cc[VREPRINT] = ch; + return 1; +#else + return 0; +#endif + case vdiscard: +#if defined(VDISCARD) + t->c_cc[VDISCARD] = ch; + return 1; +#else + return 0; +#endif + case vwerase: +#if defined(VWERASE) + t->c_cc[VWERASE] = ch; + return 1; +#else + return 0; +#endif + case vlnext: +#if defined(VLNEXT) + t->c_cc[VLNEXT] = ch; + return 1; +#else + return 0; +#endif + case veol2: +#if defined(VEOL2) + t->c_cc[VEOL2] = ch; + return 1; +#else + return 0; +#endif + default: + return 0; + } +} + +void +_M2_termios_init (void) +{ +} + +void +_M2_termios_finish (void) +{ +} + +#ifdef __cplusplus +} +#endif -- cgit v1.2.3