From fdc5e0fcf45d30512f6df068fb1b8963f7ce0048 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Wed, 27 Oct 1999 10:22:21 +0000 Subject: [PATCH] [HAVE_DEV_PTMX]: Redefine FIRST_PTY_LETTER to 'z'. Define PTY_NAME_SPRINTF. Redefine PTY_TTY_NAME_SPRINTF. --- src/s/gnu-linux.h | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/s/gnu-linux.h b/src/s/gnu-linux.h index 68b3e8d5a41..f5419a6e3af 100644 --- a/src/s/gnu-linux.h +++ b/src/s/gnu-linux.h @@ -59,6 +59,42 @@ Boston, MA 02111-1307, USA. */ #define FIRST_PTY_LETTER 'p' +#ifdef HAVE_DEV_PTMX + +/* This is the same definition as in usg5-4.h, but with sigblock/sigunblock + rather than sighold/sigrelse, which appear to be BSD4.1 specific and won't + work if POSIX_SIGNALS is defined. It may also be appropriate for SVR4.x + (x<2) but I'm not sure. fnf@cygnus.com */ +/* This sets the name of the slave side of the PTY. On SysVr4, + grantpt(3) forks a subprocess, so keep sigchld_handler() from + intercepting that death. If any child but grantpt's should die + within, it should be caught after sigrelse(2). */ + +#undef FIRST_PTY_LETTER +#define FIRST_PTY_LETTER 'z' + +/* This sets the name of the master side of the PTY. */ +#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx"); + +#undef PTY_TTY_NAME_SPRINTF +#define PTY_TTY_NAME_SPRINTF \ + { \ + char *ptsname (), *ptyname; \ + \ + sigblock (sigmask (SIGCLD)); \ + if (grantpt (fd) == -1) \ + { close (fd); return -1; } \ + sigunblock (sigmask (SIGCLD)); \ + if (unlockpt (fd) == -1) \ + { close (fd); return -1; } \ + if (!(ptyname = ptsname (fd))) \ + { close (fd); return -1; } \ + strncpy (pty_name, ptyname, sizeof (pty_name)); \ + pty_name[sizeof (pty_name) - 1] = 0; \ + } + +#endif /* HAVE_DEV_PTMX */ + /* * Define HAVE_TERMIOS if the system provides POSIX-style * functions and macros for terminal control. -- 2.39.5