Update FSF's address in the preamble.
[bpt/emacs.git] / src / s / usg5-4.h
CommitLineData
20c428fd 1/* Definitions file for GNU Emacs running on AT&T's System V Release 4
bd307392 2 Copyright (C) 1987, 1990 Free Software Foundation, Inc.
20c428fd
JB
3
4This file is part of GNU Emacs.
5
bd307392
JB
6GNU Emacs is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
17385adc 8the Free Software Foundation; either version 2, or (at your option)
bd307392
JB
9any later version.
10
20c428fd 11GNU Emacs is distributed in the hope that it will be useful,
bd307392
JB
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with GNU Emacs; see the file COPYING. If not, write to
3b7ad313
EN
18the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19Boston, MA 02111-1307, USA. */
20c428fd
JB
20
21/* This file written by James Van Artsdalen of Dell Computer Corporation.
5447018c
JB
22 * james@bigtex.cactus.org. Subsequently improved for Dell 2.2 by Eric
23 * S. Raymond <esr@snark.thyrsus.com>.
20c428fd
JB
24 */
25
26/* Use the SysVr3 file for at least base configuration. */
27
72a8c21e 28#include "usg5-3.h"
20c428fd
JB
29
30#define USG5_4
31
32/* We do have multiple jobs. Handle ^Z. */
33
34#undef NOMULTIPLEJOBS
35
c21d3ee2
RS
36#define LIBS_SYSTEM -lsocket -lnsl -lelf
37#define ORDINARY_LINK
20c428fd 38
5cb70bb5 39#if 0
5447018c
JB
40#ifdef ORDINARY_LINK
41#define LIB_STANDARD -lc /usr/ucblib/libucb.a
42#else
c21d3ee2
RS
43#define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o
44#define LIB_STANDARD -lc /usr/ucblib/libucb.a /usr/ccs/lib/crtn.o
45#endif
5cb70bb5
RS
46#else
47
48#ifdef ORDINARY_LINK
49#define LIB_STANDARD
50#else
51#define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o
52#define LIB_STANDARD -lc /usr/ccs/lib/crtn.o
53#endif
54#endif
20c428fd 55
5447018c
JB
56/* there are no -lg libraries on this system, and no libPW */
57
58#define LIBS_DEBUG
08bc143c
RS
59/* This is turned off because nobody actually uses LIBS_STANDARD (Nov 1995).
60 That name is a typo. The next step is to delete this entirely. */
61/* #define LIBS_STANDARD -lc */
5447018c 62
bd307392 63/* No <sioctl.h> */
20c428fd 64
bd307392 65#define NO_SIOCTL_H
20c428fd
JB
66
67/* Undump with ELF */
68
69#undef COFF
70
71#define UNEXEC unexelf.o
72
821188d3
RS
73/* <sys/stat.h> *defines* stat(2) as a static function. If "static"
74 * is blank, then many files will have a public definition for stat(2).
75 */
76
77#undef static
78
20c428fd
JB
79/* Get FIONREAD from <sys/filio.h>. Get <sys/ttold.h> to get struct
80 * tchars. But get <termio.h> first to make sure ttold.h doesn't
81 * interfere. And don't try to use SIGIO yet.
82 */
83
f0ce95e7
RS
84#ifndef NOT_C_CODE
85#include <sys/wait.h>
86#endif
87
20c428fd
JB
88#ifdef emacs
89#include <sys/filio.h>
90#include <termio.h>
91#include <sys/ttold.h>
92#include <signal.h>
bd307392
JB
93#include <sys/stream.h>
94#include <sys/stropts.h>
95#include <sys/termios.h>
20c428fd
JB
96#undef SIGIO
97#endif
98
5447018c
JB
99/* Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
100 * instead, there's a system variable _sys_nsig. Unfortunately, we need the
101 * constant to dimension an array. So wire in the appropriate value here.
102 */
103
104#ifndef NSIG
105#define NSIG 32
106#endif
107
20c428fd
JB
108/* We need bss_end from emacs.c for undumping */
109
110#ifndef USG_SHARED_LIBRARIES
111#define USG_SHARED_LIBRARIES
112#endif
113
114/* We can support this */
115
116#define CLASH_DETECTION
117
118#define HAVE_PTYS
5447018c 119#define HAVE_TERMIOS
2373f91f
RS
120#undef BROKEN_TIOCGWINSZ
121#undef BROKEN_TIOCGETC
20c428fd
JB
122
123/* It is possible to receive SIGCHLD when there are no children
124 waiting, because a previous waitsys(2) cleaned up the carcass of child
125 without clearing the SIGCHLD pending info. So, use a non-blocking
126 wait3 instead, which maps to waitpid(2) in SysVr4. */
127
128#define HAVE_WAIT_HEADER
129#define WAITTYPE int
130#define wait3(status, options, rusage) \
5bf62b08 131 waitpid ((pid_t) -1, (status), (options))
20c428fd
JB
132#define WRETCODE(w) (w >> 8)
133
134/* TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
135 subprocesses the usual way. But TIOCSIGNAL does work for PTYs, and
136 this is all we need. */
137
138#define TIOCSIGSEND TIOCSIGNAL
139
140/* This change means that we don't loop through allocate_pty too many
141 times in the (rare) event of a failure. */
142
143#undef FIRST_PTY_LETTER
144#define FIRST_PTY_LETTER 'z'
145
146/* This sets the name of the master side of the PTY. */
147
148#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
149
150/* This sets the name of the slave side of the PTY. On SysVr4,
151 grantpt(3) forks a subprocess, so keep sigchld_handler() from
152 intercepting that death. If any child but grantpt's should die
153 within, it should be caught after sigrelse(2). */
154
5bf62b08
RS
155#define PTY_TTY_NAME_SPRINTF \
156 { \
157 char *ptsname (), *ptyname; \
158 \
159 sighold (SIGCLD); \
160 if (grantpt (fd) == -1) \
161 { close (fd); return -1; } \
162 sigrelse (SIGCLD); \
163 if (unlockpt (fd) == -1) \
164 { close (fd); return -1; } \
165 if (!(ptyname = ptsname (fd))) \
166 { close (fd); return -1; } \
167 strncpy (pty_name, ptyname, sizeof (pty_name)); \
168 pty_name[sizeof (pty_name) - 1] = 0; \
20c428fd
JB
169 }
170
171/* Push various streams modules onto a PTY channel. */
172
173#define SETUP_SLAVE_PTY \
174 if (ioctl (xforkin, I_PUSH, "ptem") == -1) \
175 fatal ("ioctl I_PUSH ptem", errno); \
176 if (ioctl (xforkin, I_PUSH, "ldterm") == -1) \
177 fatal ("ioctl I_PUSH ldterm", errno); \
178 if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) \
179 fatal ("ioctl I_PUSH ttcompat", errno);
180
5447018c 181/* Undo the SVr3 X11 library definition */
8c64cf16 182#undef LIB_X11_LIB
5447018c 183
bd307392
JB
184/* The definition of this in s-usg5-3.h is not needed in 5.4. */
185/* liblnsl_s should never be used. The _s suffix implies a shared
186 library, as opposed to a DLL. Share libraries were used in SVR3, and are
187 available only in order to allow SVR3 binaries to run. They should not be
188 linked in to new binaries. -- caraway!pinkas@caraway.intel.com. */
189#undef LIBX10_SYSTEM
20c428fd 190#undef LIBX11_SYSTEM
bd307392
JB
191
192/* Tell x11term.c and keyboard.c we have the system V streams feature. */
193#define SYSV_STREAMS
194
195/* This definition was suggested for next release.
196 So give it a try. */
197#define HAVE_SOCKETS
5cb70bb5 198
5bf62b08
RS
199#define bcopy(src,dst,n) memmove (dst,src,n)
200#define bcmp(src,dst,n) memcmp (src,dst,n)
201#define bzero(s,n) memset (s,0,n)