public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/modula-2] Renamed libgm2 C files to C++ and removed unnecessary file.
@ 2022-07-07 16:03 Gaius Mulley
0 siblings, 0 replies; only message in thread
From: Gaius Mulley @ 2022-07-07 16:03 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:619a463632aa35bd3878a4637f2180fdec2ebd95
commit 619a463632aa35bd3878a4637f2180fdec2ebd95
Author: Gaius Mulley <gaius.mulley@southwales.ac.uk>
Date: Thu Jul 7 16:02:29 2022 +0100
Renamed libgm2 C files to C++ and removed unnecessary file.
gcc/m2/ChangeLog:
* gm2-libs-iso/ErrnoCategory.c (Removed).
libgm2/ChangeLog:
* libm2iso/ErrnoCategory.cc (Renamed from ErrnoCategory.c).
* libm2iso/RTco.cc (Renamed from RTco.c).
* libm2pim/termios.cc (Renamed from termios.c).
* libm2pim/SysExceptions.cc (Renamed from SysExceptions.c).
* libm2pim/errno.cc (Renamed from errno.c).
Signed-off-by: Gaius Mulley <gaius.mulley@southwales.ac.uk>
Diff:
---
gcc/m2/gm2-libs-iso/ErrnoCategory.c | 138 ---
libgm2/libm2iso/ErrnoCategory.c | 180 ----
libgm2/libm2iso/RTco.c | 467 --------
libgm2/libm2pim/SysExceptions.c | 259 -----
libgm2/libm2pim/errno.c | 70 --
libgm2/libm2pim/termios.c | 1987 -----------------------------------
6 files changed, 3101 deletions(-)
diff --git a/gcc/m2/gm2-libs-iso/ErrnoCategory.c b/gcc/m2/gm2-libs-iso/ErrnoCategory.c
deleted file mode 100644
index 4334ebb0009..00000000000
--- a/gcc/m2/gm2-libs-iso/ErrnoCategory.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* ErrnoCategory.c provides an interface to errno.
-
-Copyright (C) 2008-2021 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
-
-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.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-
-#include <p2c/p2c.h>
-#include "ChanConsts.h"
-
-#if defined(HAVE_ERRNO_H)
-# include <errno.h>
-#endif
-
-#if defined(HAVE_SYS_ERRNO_H)
-# include <sys/errno.h>
-#endif
-
-
-/*
- * IsErrnoHard - returns TRUE if the value of errno is associated with
- * a hard device error.
- */
-
-int ErrnoCategory_IsErrnoHard (int e)
-{
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- return ((e == EPERM) || (e == ENOENT) || (e == EIO) ||
- (e == ENXIO) || (e == EACCES) || (e == ENOTBLK) ||
- (e == ENODEV) || (e == EINVAL) || (e == ENFILE) ||
- (e == EROFS) || (e == EMLINK));
-#else
- return FALSE;
-#endif
-}
-
-
-/*
- * IsErrnoSoft - returns TRUE if the value of errno is associated with
- * a soft device error.
- */
-
-int ErrnoCategory_IsErrnoSoft (int e)
-{
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- return ((e == ESRCH) || (e == EINTR) || (e == E2BIG) ||
- (e == ENOEXEC) || (e == EBADF) || (e == ECHILD) ||
- (e == EAGAIN) || (e == ENOMEM) || (e == EFAULT) ||
- (e == EBUSY) || (e == EEXIST) ||
- (e == EXDEV) || (e == ENOTDIR) || (e == EISDIR) ||
- (e == EMFILE) || (e == ENOTTY) || (e == ETXTBSY) ||
- (e == EFBIG) || (e == ENOSPC) || (e == EPIPE));
-#else
- return FALSE;
-#endif
-}
-
-
-int ErrnoCategory_UnAvailable (int e)
-{
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- return ((e == ENOENT) || (e == ESRCH) || (e == ENXIO) ||
- (e == ECHILD) || (e == ENOTBLK) || (e == ENODEV) ||
- (e == ENOTDIR));
-#else
- return FALSE;
-#endif
-}
-
-
-/*
- * GetOpenResults - maps errno onto the ISO Modula-2 enumerated
- * type, OpenResults.
- */
-
-openResults
-ErrnoCategory_GetOpenResults (int e)
-{
- if (e == 0)
- return opened;
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- switch (e) {
- case EPERM: return wrongPermissions; break;
- case ENOENT: return noSuchFile; break;
- case ENXIO: return noSuchFile; break;
- case EACCES: return wrongPermissions; break;
- case ENOTBLK: return wrongFileType; break;
- case EEXIST: return fileExists; break;
- case ENODEV: return noSuchFile; break;
- case ENOTDIR: return wrongFileType; break;
- case EISDIR: return wrongFileType; break;
- case EINVAL: return wrongFlags; break;
- case ENFILE: return tooManyOpen; break;
- case EMFILE: return tooManyOpen; break;
- case ENOTTY: return wrongFileType; break;
- case ENOSPC: return noRoomOnDevice; break;
- case EROFS: return wrongPermissions; break;
-
- default:
- return otherProblem;
- }
-#else
- return otherProblem;
-#endif
-}
-
-
-/*
- * GNU Modula-2 linking fodder.
- */
-
-void _M2_ErrnoCategory_init (void)
-{
-}
-
-void _M2_ErrnoCategory_finish (void)
-{
-}
diff --git a/libgm2/libm2iso/ErrnoCategory.c b/libgm2/libm2iso/ErrnoCategory.c
deleted file mode 100644
index ce673135dbe..00000000000
--- a/libgm2/libm2iso/ErrnoCategory.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* ErrnoCatogory.cc categorizes values of errno maps onto ChanConsts.h.
-
-Copyright (C) 2008-2022 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
-
-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.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-
-#include "ChanConsts.h"
-
-#if defined(HAVE_ERRNO_H)
-#include "errno.h"
-#endif
-
-#if defined(HAVE_SYS_ERRNO_H)
-#include "sys/errno.h"
-#endif
-
-#include "m2rts.h"
-
-#if !defined(FALSE)
-#define FALSE (1 == 0)
-#endif
-
-#if !defined(TRUE)
-#define TRUE (1 == 1)
-#endif
-
-/* IsErrnoHard - returns TRUE if the value of errno is associated
- with a hard device error. */
-
-extern "C" int
-ErrnoCategory_IsErrnoHard (int e)
-{
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- return ((e == EPERM) || (e == ENOENT) || (e == EIO) || (e == ENXIO)
- || (e == EACCES) || (e == ENOTBLK) || (e == ENODEV) || (e == EINVAL)
- || (e == ENFILE) || (e == EROFS) || (e == EMLINK));
-#else
- return FALSE;
-#endif
-}
-
-/* IsErrnoSoft - returns TRUE if the value of errno is associated
- with a soft device error. */
-
-extern "C" int
-ErrnoCategory_IsErrnoSoft (int e)
-{
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- return ((e == ESRCH) || (e == EINTR) || (e == E2BIG) || (e == ENOEXEC)
- || (e == EBADF) || (e == ECHILD) || (e == EAGAIN) || (e == ENOMEM)
- || (e == EFAULT) || (e == EBUSY) || (e == EEXIST) || (e == EXDEV)
- || (e == ENOTDIR) || (e == EISDIR) || (e == EMFILE) || (e == ENOTTY)
- || (e == ETXTBSY) || (e == EFBIG) || (e == ENOSPC) || (e == EPIPE));
-#else
- return FALSE;
-#endif
-}
-
-extern "C" int
-ErrnoCategory_UnAvailable (int e)
-{
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- return ((e == ENOENT) || (e == ESRCH) || (e == ENXIO) || (e == ECHILD)
- || (e == ENOTBLK) || (e == ENODEV) || (e == ENOTDIR));
-#else
- return FALSE;
-#endif
-}
-
-/* GetOpenResults - maps errno onto the ISO Modula-2 enumerated type,
- OpenResults. */
-
-extern "C" openResults
-ErrnoCategory_GetOpenResults (int e)
-{
- if (e == 0)
- return opened;
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- switch (e)
- {
- case EPERM:
- return wrongPermissions;
- break;
- case ENOENT:
- return noSuchFile;
- break;
- case ENXIO:
- return noSuchFile;
- break;
- case EACCES:
- return wrongPermissions;
- break;
- case ENOTBLK:
- return wrongFileType;
- break;
- case EEXIST:
- return fileExists;
- break;
- case ENODEV:
- return noSuchFile;
- break;
- case ENOTDIR:
- return wrongFileType;
- break;
- case EISDIR:
- return wrongFileType;
- break;
- case EINVAL:
- return wrongFlags;
- break;
- case ENFILE:
- return tooManyOpen;
- break;
- case EMFILE:
- return tooManyOpen;
- break;
- case ENOTTY:
- return wrongFileType;
- break;
- case ENOSPC:
- return noRoomOnDevice;
- break;
- case EROFS:
- return wrongPermissions;
- break;
-
- default:
- return otherProblem;
- }
-#else
- return otherProblem;
-#endif
-}
-
-/* GNU Modula-2 linking fodder. */
-
-extern "C" void
-_M2_ErrnoCategory_init (int, char *argv[], char *env[])
-{
-}
-
-extern "C" void
-_M2_ErrnoCategory_finish (int, char *argv[], char *env[])
-{
-}
-
-extern "C" void
-_M2_ErrnoCategory_dep (void)
-{
-}
-
-struct _M2_ErrnoCategory_ctor { _M2_ErrnoCategory_ctor (); } _M2_ErrnoCategory_ctor;
-
-_M2_ErrnoCategory_ctor::_M2_ErrnoCategory_ctor (void)
-{
- M2RTS_RegisterModule ("ErrnoCategory", _M2_ErrnoCategory_init, _M2_ErrnoCategory_finish,
- _M2_ErrnoCategory_dep);
-}
diff --git a/libgm2/libm2iso/RTco.c b/libgm2/libm2iso/RTco.c
deleted file mode 100644
index f97e7dad299..00000000000
--- a/libgm2/libm2iso/RTco.c
+++ /dev/null
@@ -1,467 +0,0 @@
-/* RTco.c provides minimal access to thread primitives.
-
-Copyright (C) 2019-2022 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
-
-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.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-#include <unistd.h>
-#include <pthread.h>
-#include <sys/select.h>
-#include <stdlib.h>
-#include <m2rts.h>
-
-// #define TRACEON
-
-#define POOL
-#define SEM_POOL 10000
-#define THREAD_POOL 10000
-
-#define _GTHREAD_USE_COND_INIT_FUNC
-#include "gthr.h"
-
-/* Ensure that ANSI conform stdio is used. This needs to be set
- before any system header file is included. */
-#if defined __MINGW32__
-#define _POSIX 1
-#define gm2_printf gnu_printf
-#else
-#define gm2_printf __printf__
-#endif
-
-#if !defined(TRUE)
-#define TRUE (1 == 1)
-#endif
-
-#if !defined(FALSE)
-#define FALSE (1 == 0)
-#endif
-
-#if defined(TRACEON)
-#define tprintf printf
-#else
-/* sizeof is not evaluated. */
-#define tprintf (void)sizeof
-#endif
-
-typedef struct threadCB_s
-{
- void (*proc) (void);
- int execution;
- pthread_t p;
- int tid;
- unsigned int interruptLevel;
-} threadCB;
-
-
-typedef struct threadSem_s
-{
- __gthread_mutex_t mutex;
- __gthread_cond_t counter;
- int waiting;
- int sem_value;
-} threadSem;
-
-static unsigned int nThreads = 0;
-static threadCB *threadArray = NULL;
-static unsigned int nSemaphores = 0;
-static threadSem **semArray = NULL;
-
-/* These are used to lock the above module data structures. */
-static threadSem lock;
-static int initialized = FALSE;
-
-
-extern "C" int RTco_init (void);
-
-
-extern "C" void
-_M2_RTco_dep (void)
-{
-}
-
-extern "C" void
-_M2_RTco_init (int argc, char *argv[], char *envp[])
-{
-}
-
-extern "C" void
-_M2_RTco_finish (int argc, char *argv[], char *envp[])
-{
-}
-
-static void
-initSem (threadSem *sem, int value)
-{
- __GTHREAD_COND_INIT_FUNCTION (&sem->counter);
- __GTHREAD_MUTEX_INIT_FUNCTION (&sem->mutex);
- sem->waiting = FALSE;
- sem->sem_value = value;
-}
-
-static void
-waitSem (threadSem *sem)
-{
- __gthread_mutex_lock (&sem->mutex);
- if (sem->sem_value == 0)
- {
- sem->waiting = TRUE;
- __gthread_cond_wait (&sem->counter, &sem->mutex);
- sem->waiting = FALSE;
- }
- else
- sem->sem_value--;
- __gthread_mutex_unlock (&sem->mutex);
-}
-
-static void
-signalSem (threadSem *sem)
-{
- __gthread_mutex_unlock (&sem->mutex);
- if (sem->waiting)
- __gthread_cond_signal (&sem->counter);
- else
- sem->sem_value++;
- __gthread_mutex_unlock (&sem->mutex);
-}
-
-void stop (void) {}
-
-extern "C" void
-RTco_wait (int sid)
-{
- RTco_init ();
- tprintf ("wait %d\n", sid);
- waitSem (semArray[sid]);
-}
-
-extern "C" void
-RTco_signal (int sid)
-{
- RTco_init ();
- tprintf ("signal %d\n", sid);
- signalSem (semArray[sid]);
-}
-
-static int
-newSem (void)
-{
-#if defined(POOL)
- semArray[nSemaphores]
- = (threadSem *)malloc (sizeof (threadSem));
- nSemaphores += 1;
- if (nSemaphores == SEM_POOL)
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__,
- "too many semaphores created");
-#else
- threadSem *sem
- = (threadSem *)malloc (sizeof (threadSem));
-
- /* We need to be careful when using realloc as the lock (semaphore)
- operators use the semaphore address. So we keep an array of pointer
- to semaphores. */
- if (nSemaphores == 0)
- {
- semArray = (threadSem **)malloc (sizeof (sem));
- nSemaphores = 1;
- }
- else
- {
- nSemaphores += 1;
- semArray = (threadSem **)realloc (semArray,
- sizeof (sem) * nSemaphores);
- }
- semArray[nSemaphores - 1] = sem;
-#endif
- return nSemaphores - 1;
-}
-
-static int
-initSemaphore (int value)
-{
- int sid = newSem ();
-
- initSem (semArray[sid], value);
- tprintf ("%d = initSemaphore (%d)\n", sid, value);
- return sid;
-}
-
-extern "C" int
-RTco_initSemaphore (int value)
-{
- int sid;
-
- RTco_init ();
- waitSem (&lock);
- sid = initSemaphore (value);
- signalSem (&lock);
- return sid;
-}
-
-/* signalThread signal the semaphore associated with thread tid. */
-
-extern "C" void
-RTco_signalThread (int tid)
-{
- int sem;
- RTco_init ();
- tprintf ("signalThread %d\n", tid);
- waitSem (&lock);
- sem = threadArray[tid].execution;
- signalSem (&lock);
- RTco_signal (sem);
-}
-
-/* waitThread wait on the semaphore associated with thread tid. */
-
-extern "C" void
-RTco_waitThread (int tid)
-{
- RTco_init ();
- tprintf ("waitThread %d\n", tid);
- RTco_wait (threadArray[tid].execution);
-}
-
-extern "C" int
-currentThread (void)
-{
- int tid;
-
- for (tid = 0; tid < nThreads; tid++)
- if (pthread_self () == threadArray[tid].p)
- return tid;
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__,
- "failed to find currentThread");
-}
-
-extern "C" int
-RTco_currentThread (void)
-{
- int tid;
-
- RTco_init ();
- waitSem (&lock);
- tid = currentThread ();
- tprintf ("currentThread %d\n", tid);
- signalSem (&lock);
- return tid;
-}
-
-/* currentInterruptLevel returns the interrupt level of the current thread. */
-
-extern "C" unsigned int
-RTco_currentInterruptLevel (void)
-{
- RTco_init ();
- tprintf ("currentInterruptLevel %d\n",
- threadArray[RTco_currentThread ()].interruptLevel);
- return threadArray[RTco_currentThread ()].interruptLevel;
-}
-
-/* turninterrupts returns the old interrupt level and assigns the
- interrupt level to newLevel. */
-
-extern "C" unsigned int
-RTco_turnInterrupts (unsigned int newLevel)
-{
- int tid = RTco_currentThread ();
- unsigned int old = RTco_currentInterruptLevel ();
-
- tprintf ("turnInterrupts from %d to %d\n", old, newLevel);
- waitSem (&lock);
- threadArray[tid].interruptLevel = newLevel;
- signalSem (&lock);
- return old;
-}
-
-static void
-never (void)
-{
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__,
- "the main thread should never call here");
-}
-
-static void *
-execThread (void *t)
-{
- threadCB *tp = (threadCB *)t;
-
- tprintf ("exec thread tid = %d function = 0x%p arg = 0x%p\n", tp->tid,
- tp->proc, t);
- RTco_waitThread (
- tp->tid); /* Forcing this thread to block, waiting to be scheduled. */
- tprintf (" exec thread [%d] function = 0x%p arg = 0x%p\n", tp->tid,
- tp->proc, t);
- tp->proc (); /* Now execute user procedure. */
-#if 0
- M2RTS_CoroutineException ( __FILE__, __LINE__, __COLUMN__, __FUNCTION__, "coroutine finishing");
-#endif
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__, "execThread should never finish");
- return NULL;
-}
-
-static int
-newThread (void)
-{
-#if defined(POOL)
- nThreads += 1;
- if (nThreads == THREAD_POOL)
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__, "too many threads created");
- return nThreads - 1;
-#else
- if (nThreads == 0)
- {
- threadArray = (threadCB *)malloc (sizeof (threadCB));
- nThreads = 1;
- }
- else
- {
- nThreads += 1;
- threadArray
- = (threadCB *)realloc (threadArray, sizeof (threadCB) * nThreads);
- }
- return nThreads - 1;
-#endif
-}
-
-static int
-initThread (void (*proc) (void), unsigned int stackSize,
- unsigned int interrupt)
-{
- int tid = newThread ();
- pthread_attr_t attr;
- int result;
-
- threadArray[tid].proc = proc;
- threadArray[tid].tid = tid;
- threadArray[tid].execution = initSemaphore (0);
- threadArray[tid].interruptLevel = interrupt;
-
- /* set thread creation attributes. */
- result = pthread_attr_init (&attr);
- if (result != 0)
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__,
- "failed to create thread attribute");
-
- if (stackSize > 0)
- {
- result = pthread_attr_setstacksize (&attr, stackSize);
- if (result != 0)
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__,
- "failed to set stack size attribute");
- }
-
- tprintf ("initThread [%d] function = 0x%p (arg = 0x%p)\n", tid, proc,
- (void *)&threadArray[tid]);
- result = pthread_create (&threadArray[tid].p, &attr, execThread,
- (void *)&threadArray[tid]);
- if (result != 0)
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__, "thread_create failed");
- tprintf (" created thread [%d] function = 0x%p 0x%p\n", tid, proc,
- (void *)&threadArray[tid]);
- return tid;
-}
-
-extern "C" int
-RTco_initThread (void (*proc) (void), unsigned int stackSize,
- unsigned int interrupt)
-{
- int tid;
-
- RTco_init ();
- waitSem (&lock);
- tid = initThread (proc, stackSize, interrupt);
- signalSem (&lock);
- return tid;
-}
-
-/* transfer unlocks thread p2 and locks the current thread. p1 is
- updated with the current thread id. */
-
-extern "C" void
-RTco_transfer (int *p1, int p2)
-{
- int tid = currentThread ();
-
- if (!initialized)
- M2RTS_Halt (
- __FILE__, __LINE__, __FUNCTION__,
- "cannot transfer to a process before the process has been created");
- if (tid == p2)
- {
- /* error. */
- M2RTS_Halt (__FILE__, __LINE__, __FUNCTION__,
- "attempting to transfer to ourself");
- }
- else
- {
- *p1 = tid;
- tprintf ("start, context switching from: %d to %d\n", tid, p2);
- RTco_signalThread (p2);
- RTco_waitThread (tid);
- tprintf ("end, context back to %d\n", tid);
- }
-}
-
-extern "C" int
-RTco_select (int p1, fd_set *p2, fd_set *p3, fd_set *p4, const timespec *p5)
-{
- tprintf ("[%x] RTco.select (...)\n", pthread_self ());
- return pselect (p1, p2, p3, p4, p5, NULL);
-}
-
-extern "C" int
-RTco_init (void)
-{
- if (!initialized)
- {
- int tid;
-
- tprintf ("RTco initialized\n");
- initSem (&lock, 0);
- /* Create initial thread container. */
-#if defined(POOL)
- threadArray = (threadCB *)malloc (sizeof (threadCB) * THREAD_POOL);
- semArray = (threadSem **)malloc (sizeof (threadSem *) * SEM_POOL);
-#endif
- tid = newThread (); /* For the current initial thread. */
- threadArray[tid].tid = tid;
- threadArray[tid].execution = initSemaphore (0);
- threadArray[tid].p = pthread_self ();
- threadArray[tid].interruptLevel = 0;
- threadArray[tid].proc
- = never; /* This shouldn't happen as we are already running. */
- initialized = TRUE;
- tprintf ("RTco initialized completed\n");
- signalSem (&lock);
- }
- return 0;
-}
-
-struct _M2_RTco_ctor { _M2_RTco_ctor (); } _M2_RTco_ctor;
-
-_M2_RTco_ctor::_M2_RTco_ctor (void)
-{
- M2RTS_RegisterModule ("RTco", _M2_RTco_init, _M2_RTco_finish,
- _M2_RTco_dep);
-}
diff --git a/libgm2/libm2pim/SysExceptions.c b/libgm2/libm2pim/SysExceptions.c
deleted file mode 100644
index 859bb6303eb..00000000000
--- a/libgm2/libm2pim/SysExceptions.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* SysExceptions.c configure the signals to create m2 exceptions.
-
-Copyright (C) 2009-2022 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
-
-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.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#if defined(HAVE_SIGNAL_H)
-#include <signal.h>
-#endif
-
-#if defined(HAVE_ERRNO_H)
-#include <errno.h>
-#endif
-
-#if defined(HAVE_SYS_ERRNO_H)
-#include <sys/errno.h>
-#endif
-
-#if defined(HAVE_STDIO_H)
-#include <stdio.h>
-#endif
-
-#include "m2rts.h"
-
-#if 0
-/* Signals. */
-#define SIGHUP 1 /* Hangup (POSIX). */
-#define SIGINT 2 /* Interrupt (ANSI). */
-#define SIGQUIT 3 /* Quit (POSIX). */
-#define SIGILL 4 /* Illegal instruction (ANSI). */
-#define SIGTRAP 5 /* Trace trap (POSIX). */
-#define SIGABRT 6 /* Abort (ANSI). */
-#define SIGIOT 6 /* IOT trap (4.2 BSD). */
-#define SIGBUS 7 /* BUS error (4.2 BSD). */
-#define SIGFPE 8 /* Floating-point exception (ANSI). */
-#define SIGKILL 9 /* Kill, unblockable (POSIX). */
-#define SIGUSR1 10 /* User-defined signal 1 (POSIX). */
-#define SIGSEGV 11 /* Segmentation violation (ANSI). */
-#define SIGUSR2 12 /* User-defined signal 2 (POSIX). */
-#define SIGPIPE 13 /* Broken pipe (POSIX). */
-#define SIGALRM 14 /* Alarm clock (POSIX). */
-#define SIGTERM 15 /* Termination (ANSI). */
-#define SIGSTKFLT 16 /* Stack fault. */
-#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */
-#define SIGCHLD 17 /* Child status has changed (POSIX). */
-#define SIGCONT 18 /* Continue (POSIX). */
-#define SIGSTOP 19 /* Stop, unblockable (POSIX). */
-#define SIGTSTP 20 /* Keyboard stop (POSIX). */
-#define SIGTTIN 21 /* Background read from tty (POSIX). */
-#define SIGTTOU 22 /* Background write to tty (POSIX). */
-#define SIGURG 23 /* Urgent condition on socket (4.2 BSD). */
-#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */
-#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */
-#define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */
-#define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */
-#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
-#define SIGPOLL SIGIO /* Pollable event occurred (System V). */
-#define SIGIO 29 /* I/O now possible (4.2 BSD). */
-#define SIGPWR 30 /* Power failure restart (System V). */
-#define SIGSYS 31 /* Bad system call. */
-#define SIGUNUSED 31
-
-/* The list of Modula-2 exceptions is shown below */
-
- (indexException, rangeException, caseSelectException, invalidLocation,
- functionException, wholeValueException, wholeDivException, realValueException,
- realDivException, complexValueException, complexDivException, protException,
- sysException, coException, exException
- );
-
-#endif
-
-/* Note: wholeDivException and realDivException are caught by SIGFPE
- and depatched to the appropriate Modula-2 runtime routine upon
- testing FPE_INTDIV or FPE_FLTDIV. realValueException is also
- caught by SIGFPE and dispatched by testing FFE_FLTOVF or FPE_FLTUND
- or FPE_FLTRES or FPE_FLTINV. indexException is caught by SIGFPE
- and dispatched by FPE_FLTSUB. */
-
-#if defined(HAVE_SIGNAL_H)
-static struct sigaction sigbus;
-static struct sigaction sigfpe;
-static struct sigaction sigsegv;
-
-static void (*indexProc) (void *);
-static void (*rangeProc) (void *);
-static void (*assignmentrangeProc) (void *);
-static void (*caseProc) (void *);
-static void (*invalidlocProc) (void *);
-static void (*functionProc) (void *);
-static void (*wholevalueProc) (void *);
-static void (*wholedivProc) (void *);
-static void (*realvalueProc) (void *);
-static void (*realdivProc) (void *);
-static void (*complexvalueProc) (void *);
-static void (*complexdivProc) (void *);
-static void (*protectionProc) (void *);
-static void (*systemProc) (void *);
-static void (*coroutineProc) (void *);
-static void (*exceptionProc) (void *);
-
-static void
-sigbusDespatcher (int signum, siginfo_t *info, void *ucontext)
-{
- switch (signum)
- {
-
- case SIGSEGV:
- case SIGBUS:
- if (info)
- (*invalidlocProc) (info->si_addr);
- break;
- default:
- perror ("not expecting to arrive here with this signal");
- }
-}
-
-static void
-sigfpeDespatcher (int signum, siginfo_t *info, void *ucontext)
-{
- switch (signum)
- {
-
- case SIGFPE:
- if (info)
- {
- if (info->si_code | FPE_INTDIV)
- (*wholedivProc) (info->si_addr); /* Integer divide by zero. */
- if (info->si_code | FPE_INTOVF)
- (*wholevalueProc) (info->si_addr); /* Integer overflow. */
- if (info->si_code | FPE_FLTDIV)
- (*realdivProc) (info->si_addr); /* Floating-point divide by zero. */
- if (info->si_code | FPE_FLTOVF)
- (*realvalueProc) (info->si_addr); /* Floating-point overflow. */
- if (info->si_code | FPE_FLTUND)
- (*realvalueProc) (info->si_addr); /* Floating-point underflow. */
- if (info->si_code | FPE_FLTRES)
- (*realvalueProc) (
- info->si_addr); /* Floating-point inexact result. */
- if (info->si_code | FPE_FLTINV)
- (*realvalueProc) (
- info->si_addr); /* Floating-point invalid result. */
- if (info->si_code | FPE_FLTSUB)
- (*indexProc) (info->si_addr); /* Subscript out of range. */
- }
- break;
- default:
- perror ("not expecting to arrive here with this signal");
- }
-}
-
-extern "C" void
-SysExceptions_InitExceptionHandlers (
- void (*indexf) (void *), void (*range) (void *), void (*casef) (void *),
- void (*invalidloc) (void *), void (*function) (void *),
- void (*wholevalue) (void *), void (*wholediv) (void *),
- void (*realvalue) (void *), void (*realdiv) (void *),
- void (*complexvalue) (void *), void (*complexdiv) (void *),
- void (*protection) (void *), void (*systemf) (void *),
- void (*coroutine) (void *), void (*exception) (void *))
-{
- struct sigaction old;
-
- indexProc = indexf;
- rangeProc = range;
- caseProc = casef;
- invalidlocProc = invalidloc;
- functionProc = function;
- wholevalueProc = wholevalue;
- wholedivProc = wholediv;
- realvalueProc = realvalue;
- realdivProc = realdiv;
- complexvalueProc = complexvalue;
- complexdivProc = complexdiv;
- protectionProc = protection;
- systemProc = systemf;
- coroutineProc = coroutine;
- exceptionProc = exception;
-
- sigbus.sa_sigaction = sigbusDespatcher;
- sigbus.sa_flags = (SA_SIGINFO);
- sigemptyset (&sigbus.sa_mask);
-
- if (sigaction (SIGBUS, &sigbus, &old) != 0)
- perror ("unable to install the sigbus signal handler");
-
- sigsegv.sa_sigaction = sigbusDespatcher;
- sigsegv.sa_flags = (SA_SIGINFO);
- sigemptyset (&sigsegv.sa_mask);
-
- if (sigaction (SIGSEGV, &sigsegv, &old) != 0)
- perror ("unable to install the sigsegv signal handler");
-
- sigfpe.sa_sigaction = sigfpeDespatcher;
- sigfpe.sa_flags = (SA_SIGINFO);
- sigemptyset (&sigfpe.sa_mask);
-
- if (sigaction (SIGFPE, &sigfpe, &old) != 0)
- perror ("unable to install the sigfpe signal handler");
-}
-
-#else
-extern "C" void
-SysExceptions_InitExceptionHandlers (void *indexf, void *range, void *casef,
- void *invalidloc, void *function,
- void *wholevalue, void *wholediv,
- void *realvalue, void *realdiv,
- void *complexvalue, void *complexdiv,
- void *protection, void *systemf,
- void *coroutine, void *exception)
-{
-}
-#endif
-
-
-extern "C" void
-_M2_SysExceptions_init (int, char *[], char *[])
-{
-}
-
-extern "C" void
-_M2_SysExceptions_finish (int, char *[], char *[])
-{
-}
-
-extern "C" void
-_M2_SysExceptions_dep (void)
-{
-}
-
-struct _M2_SysExceptions_ctor { _M2_SysExceptions_ctor (); } _M2_SysExceptions_ctor;
-
-_M2_SysExceptions_ctor::_M2_SysExceptions_ctor (void)
-{
- M2RTS_RegisterModule ("SysExceptions", _M2_SysExceptions_init, _M2_SysExceptions_finish,
- _M2_SysExceptions_dep);
-}
diff --git a/libgm2/libm2pim/errno.c b/libgm2/libm2pim/errno.c
deleted file mode 100644
index e1a5400174e..00000000000
--- a/libgm2/libm2pim/errno.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* errno.c provide access to the errno value.
-
-Copyright (C) 2009-2022 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
-
-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.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-
-#if defined(HAVE_SYS_ERRNO_H)
-#include <sys/errno.h>
-#endif
-
-#if defined(HAVE_ERRNO_H)
-#include <errno.h>
-#endif
-
-#include "m2rts.h"
-
-extern "C" int
-errno_geterrno (void)
-{
-#if defined(HAVE_ERRNO_H) || defined(HAVE_SYS_ERRNO_H)
- return errno;
-#else
- return -1;
-#endif
-}
-
-extern "C" void
-_M2_errno_init (int, char *[], char *[])
-{
-}
-
-extern "C" void
-_M2_errno_finish (int, char *[], char *[])
-{
-}
-
-extern "C" void
-_M2_errno_dep (void)
-{
-}
-
-struct _M2_errno_ctor { _M2_errno_ctor (); } _M2_errno_ctor;
-
-_M2_errno_ctor::_M2_errno_ctor (void)
-{
- M2RTS_RegisterModule ("errno", _M2_errno_init, _M2_errno_finish,
- _M2_errno_dep);
-}
diff --git a/libgm2/libm2pim/termios.c b/libgm2/libm2pim/termios.c
deleted file mode 100644
index d3b3ebcf589..00000000000
--- a/libgm2/libm2pim/termios.c
+++ /dev/null
@@ -1,1987 +0,0 @@
-/* termios.cc provide access to the terminal.
-
-Copyright (C) 2010-2022 Free Software Foundation, Inc.
-Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
-
-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.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <config.h>
-#include <m2rts.h>
-
-#if defined(HAVE_STDIO_H)
-#include <stdio.h>
-#endif
-#if defined(HAVE_STDARG_H)
-#include <stdarg.h>
-#endif
-#if defined(HAVE_STDLIB_H)
-#include <stdlib.h>
-#endif
-#if defined(HAVE_STRING_H)
-#include <string.h>
-#endif
-#if defined(HAVE_STRINGS_H)
-#include <strings.h>
-#endif
-
-#ifdef TERMIOS_NEEDS_XOPEN_SOURCE
-#define _XOPEN_SOURCE
-#endif
-
-#if defined(HAVE_SYS_TYPES_H)
-#include <sys/types.h>
-#endif
-
-#if defined(HAVE_TERMIOS_H)
-#include <termios.h>
-#endif
-
-void _M2_termios_init (void);
-void _M2_termios_finish (void);
-
-#if defined(HAVE_TERMIOS_H)
-
-#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;
-
-/* Prototypes. */
-extern "C" void *EXPORT (InitTermios) (void);
-extern "C" void *EXPORT (KillTermios) (struct termios *p);
-extern "C" int EXPORT (cfgetospeed) (struct termios *t);
-extern "C" int EXPORT (cfgetispeed) (struct termios *t);
-extern "C" int EXPORT (cfsetospeed) (struct termios *t, unsigned int b);
-extern "C" int EXPORT (cfsetispeed) (struct termios *t, unsigned int b);
-extern "C" int EXPORT (cfsetspeed) (struct termios *t, unsigned int b);
-extern "C" int EXPORT (tcgetattr) (int fd, struct termios *t);
-extern "C" int EXPORT (tcsetattr) (int fd, int option, struct termios *t);
-extern "C" void EXPORT (cfmakeraw) (struct termios *t);
-extern "C" int EXPORT (tcsendbreak) (int fd, int duration);
-extern "C" int EXPORT (tcdrain) (int fd);
-extern "C" int EXPORT (tcflushi) (int fd);
-extern "C" int EXPORT (tcflusho) (int fd);
-extern "C" int EXPORT (tcflushio) (int fd);
-extern "C" int EXPORT (tcflowoni) (int fd);
-extern "C" int EXPORT (tcflowoffi) (int fd);
-extern "C" int EXPORT (tcflowono) (int fd);
-extern "C" int EXPORT (tcflowoffo) (int fd);
-extern "C" int EXPORT (GetFlag) (struct termios *t, Flag f, int *b);
-extern "C" int EXPORT (SetFlag) (struct termios *t, Flag f, int b);
-extern "C" int EXPORT (GetChar) (struct termios *t, ControlChar c, char *ch);
-extern "C" int EXPORT (SetChar) (struct termios *t, ControlChar c, char ch);
-extern "C" int EXPORT (tcsnow) (void);
-extern "C" int EXPORT (tcsflush) (void);
-extern "C" int EXPORT (tcsdrain) (void);
-extern "C" int doSetUnset (unsigned int *bitset, unsigned int mask, int value);
-
-/* InitTermios new data structure. */
-
-extern "C" 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. */
-
-extern "C" void*
-EXPORT (KillTermios) (struct termios *p)
-{
- free (p);
- return NULL;
-}
-
-/* tcsnow return the value of TCSANOW. */
-
-extern "C" int
-EXPORT (tcsnow) (void) { return TCSANOW; }
-
-/* tcsdrain return the value of TCSADRAIN. */
-
-extern "C" int
-EXPORT (tcsdrain) (void) { return TCSADRAIN; }
-
-/* tcsflush return the value of TCSAFLUSH. */
-
-extern "C" int
-EXPORT (tcsflush) (void) { return TCSAFLUSH; }
-
-/* cfgetospeed return output baud rate. */
-
-extern "C" int
-EXPORT (cfgetospeed) (struct termios *t) { return cfgetospeed (t); }
-
-/* cfgetispeed return input baud rate. */
-
-extern "C" int
-EXPORT (cfgetispeed) (struct termios *t) { return cfgetispeed (t); }
-
-/* cfsetospeed set output baud rate. */
-
-extern "C" int
-EXPORT (cfsetospeed) (struct termios *t, unsigned int b)
-{
- return cfsetospeed (t, b);
-}
-
-/* cfsetispeed set input baud rate. */
-
-extern "C" int
-EXPORT (cfsetispeed) (struct termios *t, unsigned int b)
-{
- return cfsetispeed (t, b);
-}
-
-/* cfsetspeed set input and output baud rate. */
-
-extern "C" 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. */
-
-extern "C" 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. */
-
-extern "C" void
-EXPORT (cfmakeraw) (struct termios *t)
-{
-#if defined(HAVE_CFMAKERAW)
- return cfmakeraw (t);
-#endif
-}
-
-/* tcsendbreak send zero bits for duration. */
-
-extern "C" int
-EXPORT (tcsendbreak) (int fd, int duration)
-{
- return tcsendbreak (fd, duration);
-}
-
-/* tcdrain waits for pending output to be written on, fd. */
-
-extern "C" int
-EXPORT (tcdrain) (int fd) { return tcdrain (fd); }
-
-/* tcflushi flush input. */
-
-extern "C" int
-EXPORT (tcflushi) (int fd)
-{
-#if defined(TCIFLUSH)
- return tcflush (fd, TCIFLUSH);
-#else
- return 1;
-#endif
-}
-
-/* tcflusho flush output. */
-
-extern "C" int
-EXPORT (tcflusho) (int fd)
-{
-#if defined(TCOFLUSH)
- return tcflush (fd, TCOFLUSH);
-#else
- return 1;
-#endif
-}
-
-/* tcflushio flush input and output. */
-
-extern "C" int
-EXPORT (tcflushio) (int fd)
-{
-#if defined(TCIOFLUSH)
- return tcflush (fd, TCIOFLUSH);
-#else
- return 1;
-#endif
-}
-
-/* tcflowoni restart input on, fd. */
-
-extern "C" int
-EXPORT (tcflowoni) (int fd)
-{
-#if defined(TCION)
- return tcflow (fd, TCION);
-#else
- return 1;
-#endif
-}
-
-/* tcflowoffi stop input on, fd. */
-
-extern "C" int
-EXPORT (tcflowoffi) (int fd)
-{
-#if defined(TCIOFF)
- return tcflow (fd, TCIOFF);
-#else
- return 1;
-#endif
-}
-
-/* tcflowono restart output on, fd. */
-
-extern "C" int
-EXPORT (tcflowono) (int fd)
-{
-#if defined(TCOON)
- return tcflow (fd, TCOON);
-#else
- return 1;
-#endif
-}
-
-/* tcflowoffo stop output on, fd. */
-
-extern "C" int
-EXPORT (tcflowoffo) (int fd)
-{
-#if defined(TCOOFF)
- return tcflow (fd, TCOOFF);
-#else
- return 1;
-#endif
-}
-
-/* doSetUnset applies mask or undoes mask depending upon value. */
-
-extern "C" int
-doSetUnset (unsigned int *bitset, unsigned int mask, int value)
-{
- if (value)
- (*bitset) |= mask;
- else
- (*bitset) &= (~mask);
- return 1;
-}
-
-/* GetFlag sets a flag value from, t, in, b, and returns TRUE
- if, t, supports, f. */
-
-extern "C" 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)
- *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. */
-
-extern "C" 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. */
-
-extern "C" 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. */
-
-extern "C" 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;
- }
-}
-#endif
-
-extern "C" void
-_M2_termios_init (int, char *[], char *[])
-{
-}
-
-extern "C" void
-_M2_termios_finish (int, char *[], char *[])
-{
-}
-
-extern "C" void
-_M2_termios_dep (void)
-{
-}
-
-struct _M2_termios_ctor { _M2_termios_ctor (); } _M2_termios_ctor;
-
-_M2_termios_ctor::_M2_termios_ctor (void)
-{
- M2RTS_RegisterModule ("termios", _M2_termios_init, _M2_termios_finish,
- _M2_termios_dep);
-}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-07-07 16:03 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-07 16:03 [gcc/devel/modula-2] Renamed libgm2 C files to C++ and removed unnecessary file Gaius Mulley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).