Create new (empty) branch for board themes
[xboard.git] / childio.c
diff --git a/childio.c b/childio.c
deleted file mode 100644 (file)
index 1d1f1a7..0000000
--- a/childio.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * childio.c -- set up communication with child processes
- *
- * Copyright 1991 by Digital Equipment Corporation, Maynard,
- * Massachusetts.
- *
- * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,
- * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free
- * Software Foundation, Inc.
- *
- * The following terms apply to Digital Equipment Corporation's copyright
- * interest in XBoard:
- * ------------------------------------------------------------------------
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Digital not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- * ------------------------------------------------------------------------
- *
- * The following terms apply to the enhanced version of XBoard
- * distributed by the Free Software Foundation:
- * ------------------------------------------------------------------------
- *
- * GNU XBoard 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 of the License, or (at
- * your option) any later version.
- *
- * GNU XBoard is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/.  *
- *
- *------------------------------------------------------------------------
- ** See the file ChangeLog for a revision history.  */
-
-/* This file splits into two entirely different pieces of code
-   depending on whether USE_PTYS is 1.  The whole reason for all
-   the pty nonsense is that select() does not work on pipes in System-V
-   derivatives (at least some of them).  This is a problem because
-   XtAppAddInput works by adding its argument to a select that is done
-   deep inside Xlib.
-*/
-
-#include "config.h"
-
-#include <stdio.h>
-#include <signal.h>
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include "common.h"
-#include "frontend.h"
-#include "backend.h" /* for safeStrCpy */
-
-#if !USE_PTYS
-/* This code is for systems where pipes work properly */
-
-void
-SetUpChildIO (int to_prog[2], int from_prog[2])
-{
-    signal(SIGPIPE, SIG_IGN);
-    pipe(to_prog);
-    pipe(from_prog);
-}
-
-#else /* USE_PTYS == 1 */
-/* This code is for all systems where we must use ptys */
-
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#if HAVE_STROPTS_H
-# include <stropts.h>
-#endif /* HAVE_STROPTS_H */
-#if HAVE_SYS_FCNTL_H
-# include <sys/fcntl.h>
-#else /* not HAVE_SYS_FCNTL_H */
-# if HAVE_FCNTL_H
-#  include <fcntl.h>
-# endif /* HAVE_FCNTL_H */
-#endif /* not HAVE_SYS_FCNTL_H */
-
-int PseudoTTY P((char pty_name[]));
-
-int
-SetUpChildIO (int to_prog[2], int from_prog[2])
-{
-    char pty_name[MSG_SIZ];
-
-    if ((to_prog[1] = PseudoTTY(pty_name)) == -1) {
-       DisplayFatalError("Can't open pseudo-tty", errno, 1);
-       ExitEvent(1);
-    }
-    from_prog[0] = to_prog[1];
-    to_prog[0] = from_prog[1] = open(pty_name, O_RDWR, 0);
-
-#if HAVE_STROPTS_H /* do we really need this??  pipe-like behavior is fine */
-    if (ioctl (to_prog[0], I_PUSH, "ptem") == -1 ||
-       ioctl (to_prog[0], I_PUSH, "ldterm") == -1 ||
-       ioctl (to_prog[0], I_PUSH, "ttcompat") == -1) {
-# ifdef NOTDEF /* seems some systems don't have or need ptem and ttcompat */
-       DisplayFatalError("Can't ioctl pseudo-tty", errno, 1);
-       ExitEvent(1);
-# endif /*NOTDEF*/
-    }
-#endif /* HAVE_STROPTS_H */
-
-}
-
-#if HAVE_GRANTPT
-/* This code is for SVR4 */
-
-int
-PseudoTTY (char pty_name[])
-{
-    extern char *ptsname();
-    char *ptss;
-    int fd;
-
-    fd = open("/dev/ptmx", O_RDWR);
-    if (fd < 0) return fd;
-    if (grantpt(fd) == -1) return -1;
-    if (unlockpt(fd) == -1) return -1;
-    if (!(ptss = ptsname(fd))) return -1;
-    safeStrCpy(pty_name, ptss, sizeof(pty_name)/sizeof(pty_name[0]));
-    return fd;
-}
-
-#else /* not HAVE_GRANTPT */
-#if HAVE__GETPTY
-/* This code is for IRIX */
-
-int
-PseudoTTY (char pty_name[])
-{
-    int fd;
-    char *ptyn;
-
-    ptyn = _getpty(&fd, O_RDWR, 0600, 0);
-    if (ptyn == NULL) return -1;
-    safeStrCpy(pty_name, ptyn, sizeof(pty_name)/sizeof(pty_name[0]));
-    return fd;
-}
-
-#else /* not HAVE__GETPTY */
-#if HAVE_LIBSEQ
-/* This code is for Sequent DYNIX/ptx.  Untested. --tpm */
-
-int
-PseudoTTY (char pty_name[])
-{
-    int fd;
-    char *slave, *master;
-
-    fd = getpseudotty(&slave, &master);
-    if (fd < 0) return fd;
-    safeStrCpy(pty_name, slave, sizeof(pty_name)/sizeof(pty_name[0]));
-    return fd;
-}
-
-#else /* not HAVE_LIBSEQ */
-/* This code is for all other systems */
-/* The code is adapted from GNU Emacs 19.24 */
-
-#ifndef FIRST_PTY_LETTER
-#define FIRST_PTY_LETTER 'p'
-#endif
-#ifndef LAST_PTY_LETTER
-#define LAST_PTY_LETTER 'z'
-#endif
-
-int
-PseudoTTY (char pty_name[])
-{
-  struct stat stb;
-  register c, i;
-  int fd;
-
-  /* Some systems name their pseudoterminals so that there are gaps in
-     the usual sequence - for example, on HP9000/S700 systems, there
-     are no pseudoterminals with names ending in 'f'.  So we wait for
-     three failures in a row before deciding that we've reached the
-     end of the ptys.  */
-  int failed_count = 0;
-
-#ifdef PTY_ITERATION
-  PTY_ITERATION
-#else
-  for (c = FIRST_PTY_LETTER; c <= LAST_PTY_LETTER; c++)
-    for (i = 0; i < 16; i++)
-#endif
-      {
-#ifdef PTY_NAME_SPRINTF
-       PTY_NAME_SPRINTF
-#else
-         sprintf (pty_name, "/dev/pty%c%x", c, i);
-#endif /* no PTY_NAME_SPRINTF */
-
-#ifdef PTY_OPEN
-       PTY_OPEN;
-#else /* no PTY_OPEN */
-       if (stat (pty_name, &stb) < 0)
-         {
-           failed_count++;
-           if (failed_count >= 3)
-             return -1;
-         }
-       else
-         failed_count = 0;
-       fd = open (pty_name, O_RDWR, 0);
-#endif /* no PTY_OPEN */
-
-       if (fd >= 0)
-         {
-           /* check to make certain that both sides are available
-              this avoids a nasty yet stupid bug in rlogins */
-#ifdef PTY_TTY_NAME_SPRINTF
-           PTY_TTY_NAME_SPRINTF
-#else
-             sprintf (pty_name,  "/dev/tty%c%x", c, i);
-#endif /* no PTY_TTY_NAME_SPRINTF */
-#ifndef UNIPLUS
-           if (access (pty_name, 6) != 0)
-             {
-               close (fd);
-               continue;
-             }
-#endif /* not UNIPLUS */
-#ifdef IBMRTAIX
-             /* On AIX, the parent gets SIGHUP when a pty attached
-                 child dies.  So, we ignore SIGHUP once we've started
-                 a child on a pty.  Note that this may cause xboard
-                 not to die when it should, i.e., when its own
-                 controlling tty goes away.
-             */
-             signal(SIGHUP, SIG_IGN);
-#endif /* IBMRTAIX */
-           return fd;
-         }
-      }
-  return -1;
-}
-
-#endif /* not HAVE_LIBSEQ */
-#endif /* not HAVE__GETPTY */
-#endif /* not HAVE_GRANTPT */
-#endif /* USE_PTYS */