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