usg5-4-common.h 3.48 KB
Newer Older
Jim Blandy's avatar
Jim Blandy committed
1
/* Definitions file for GNU Emacs running on AT&T's System V Release 4
2

3
Copyright (C) 1987, 1990, 1999-2011  Free Software Foundation, Inc.
Jim Blandy's avatar
Jim Blandy committed
4

5 6 7
Written by James Van Artsdalen of Dell Computer Corp. james@bigtex.cactus.org.
Subsequently improved for Dell 2.2 by Eric S. Raymond <esr@snark.thyrsus.com>.

Jim Blandy's avatar
Jim Blandy committed
8 9
This file is part of GNU Emacs.

10
GNU Emacs is free software: you can redistribute it and/or modify
Jim Blandy's avatar
Jim Blandy committed
11
it under the terms of the GNU General Public License as published by
12 13
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Jim Blandy's avatar
Jim Blandy committed
14

Jim Blandy's avatar
Jim Blandy committed
15
GNU Emacs is distributed in the hope that it will be useful,
Jim Blandy's avatar
Jim Blandy committed
16 17 18 19 20
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
21
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
Jim Blandy's avatar
Jim Blandy committed
22

23
/* Use the SysVr3 file for at least base configuration.  */
Dan Nicolaescu's avatar
Dan Nicolaescu committed
24
#define USG				/* System III, System V, etc */
Jim Blandy's avatar
Jim Blandy committed
25

Dan Nicolaescu's avatar
Dan Nicolaescu committed
26
#define USG5
Jim Blandy's avatar
Jim Blandy committed
27 28
#define USG5_4

Dan Nicolaescu's avatar
Dan Nicolaescu committed
29
/* SYSTEM_TYPE should indicate the kind of system you are using.
30
   It sets the Lisp variable system-type.  */
Dan Nicolaescu's avatar
Dan Nicolaescu committed
31
#define SYSTEM_TYPE "usg-unix-v"
Jim Blandy's avatar
Jim Blandy committed
32

Dan Nicolaescu's avatar
Dan Nicolaescu committed
33 34 35 36 37
/* setjmp and longjmp can safely replace _setjmp and _longjmp,
   but they will run slower.  */
#define _setjmp setjmp
#define _longjmp longjmp

38
/* The docs for system V/386 suggest v.3 has sigpause, so let's try it.  */
Dan Nicolaescu's avatar
Dan Nicolaescu committed
39 40
#define HAVE_SYSV_SIGPAUSE

41 42 43
/* Get FIONREAD from <sys/filio.h>.  Get <sys/ttold.h> to get struct tchars.
   But get <termio.h> first to make sure ttold.h doesn't interfere.
   And don't try to use SIGIO yet.  */
44 45
#include <sys/wait.h>

Jim Blandy's avatar
Jim Blandy committed
46 47 48 49 50
#ifdef emacs
#include <sys/filio.h>
#include <termio.h>
#include <sys/ttold.h>
#include <signal.h>
Jim Blandy's avatar
Jim Blandy committed
51 52 53
#include <sys/stream.h>
#include <sys/stropts.h>
#include <sys/termios.h>
Paul Eggert's avatar
Paul Eggert committed
54
#define BROKEN_SIGIO
Jim Blandy's avatar
Jim Blandy committed
55 56
#endif

57
/* Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
58 59
   instead, there's a system variable _sys_nsig.  Unfortunately, we need the
   constant to dimension an array.  So wire in the appropriate value here.  */
Paul Eggert's avatar
Paul Eggert committed
60
#define NSIG_MINIMUM 32
61

62
/* We can support this.  */
Jim Blandy's avatar
Jim Blandy committed
63 64
#define CLASH_DETECTION

65
/* Define HAVE_PTYS if the system supports pty devices.  */
Jim Blandy's avatar
Jim Blandy committed
66 67 68 69 70 71 72
#define HAVE_PTYS

/* It is possible to receive SIGCHLD when there are no children
   waiting, because a previous waitsys(2) cleaned up the carcass of child
   without clearing the SIGCHLD pending info.  So, use a non-blocking
   wait3 instead, which maps to waitpid(2) in SysVr4. */
#define wait3(status, options, rusage) \
73
  waitpid ((pid_t) -1, (status), (options))
Jim Blandy's avatar
Jim Blandy committed
74 75 76 77 78 79 80 81
#define WRETCODE(w) (w >> 8)

/* TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
   subprocesses the usual way.  But TIOCSIGNAL does work for PTYs, and
   this is all we need.  */
#define TIOCSIGSEND TIOCSIGNAL

/* This change means that we don't loop through allocate_pty too many
82
   times in the (rare) event of a failure.  */
Jim Blandy's avatar
Jim Blandy committed
83 84
#define FIRST_PTY_LETTER 'z'

85
/* This sets the name of the master side of the PTY.  */
Jim Blandy's avatar
Jim Blandy committed
86 87
#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");

88
/* Push various streams modules onto a PTY channel.  */
Jim Blandy's avatar
Jim Blandy committed
89 90 91 92 93 94 95 96
#define SETUP_SLAVE_PTY \
  if (ioctl (xforkin, I_PUSH, "ptem") == -1)	\
    fatal ("ioctl I_PUSH ptem", errno);		\
  if (ioctl (xforkin, I_PUSH, "ldterm") == -1)	\
    fatal ("ioctl I_PUSH ldterm", errno);	\
  if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) \
    fatal ("ioctl I_PUSH ttcompat", errno);

97
/* This definition was suggested for next release.  So give it a try.  */
Jim Blandy's avatar
Jim Blandy committed
98
#define HAVE_SOCKETS