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).