1/* Definitions file for GNU Emacs running on AT&T's System V Release 4
2   Copyright (C) 1987, 1990, 1999, 2000, 2001, 2002, 2003, 2004,
3                 2005, 2006, 2007  Free Software Foundation, Inc.
4
5This file is part of GNU Emacs.
6
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
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU Emacs is distributed in the hope that it will be useful,
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
19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20Boston, MA 02110-1301, USA.  */
21
22/* This file written by James Van Artsdalen of Dell Computer Corporation.
23 * james@bigtex.cactus.org.  Subsequently improved for Dell 2.2 by Eric
24 * S. Raymond <esr@snark.thyrsus.com>.
25 */
26
27/* Use the SysVr3 file for at least base configuration. */
28
29#include "usg5-3.h"
30
31#define USG5_4
32
33/* We do have multiple jobs.  Handle ^Z. */
34
35#undef NOMULTIPLEJOBS
36
37/* Motif needs -lgen.  */
38#define LIBS_SYSTEM -lsocket -lnsl -lelf -lgen
39#define ORDINARY_LINK
40
41#if 0
42#ifdef ORDINARY_LINK
43#define LIB_STANDARD -lc /usr/ucblib/libucb.a
44#else
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
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
57
58/* there are no -lg libraries on this system, and no libPW */
59
60#define LIBS_DEBUG
61
62/* Undump with ELF */
63
64#undef COFF
65
66#define UNEXEC unexelf.o
67
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
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
79#ifndef NOT_C_CODE
80#include <sys/wait.h>
81#endif
82
83#ifdef emacs
84#ifndef NO_FILIO_H
85#include <sys/filio.h>
86#endif
87#include <termio.h>
88#include <sys/ttold.h>
89#include <signal.h>
90#include <sys/stream.h>
91#include <sys/stropts.h>
92#include <sys/termios.h>
93#define BROKEN_SIGIO
94#endif
95
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 */
100#define NSIG_MINIMUM 32
101
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
113#define HAVE_TERMIOS
114#undef BROKEN_TIOCGWINSZ
115#undef BROKEN_TIOCGETC
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) \
125  waitpid ((pid_t) -1, (status), (options))
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
149#define PTY_TTY_NAME_SPRINTF				\
150  {							\
151    char *ptsname (), *ptyname;				\
152							\
153    sighold (SIGCLD);					\
154    if (grantpt (fd) == -1)				\
155      { emacs_close (fd); return -1; }			\
156    sigrelse (SIGCLD);					\
157    if (unlockpt (fd) == -1)				\
158      { emacs_close (fd); return -1; }			\
159    if (!(ptyname = ptsname (fd)))			\
160      { emacs_close (fd); return -1; }			\
161    strncpy (pty_name, ptyname, sizeof (pty_name));	\
162    pty_name[sizeof (pty_name) - 1] = 0;		\
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
175/* Undo the SVr3 X11 library definition */
176#undef LIB_X11_LIB
177
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.  */
183#undef LIBX10_SYSTEM
184#undef LIBX11_SYSTEM
185
186/* Tell x11term.c and keyboard.c we have the system V streams feature.  */
187#define SYSV_STREAMS
188
189/* This definition was suggested for next release.
190   So give it a try.  */
191#define HAVE_SOCKETS
192
193/* Markus Weiand <weiand@khof.com> says this is needed for Motif on
194   SINIX.  */
195#undef LIBS_SYSTEM
196#define LIBS_SYSTEM -lgen
197
198/* arch-tag: 1a0ed909-5faa-434b-b7c3-9d86c63d53a6
199   (do not change this comment) */
200