1 /* Definitions file for GNU Emacs running on AT&T's System V Release 4
2 Copyright (C) 1987 Free Software Foundation, Inc.
4 This file is part of GNU Emacs.
6 GNU Emacs is distributed in the hope that it will be useful,
7 but WITHOUT ANY WARRANTY. No author or distributor
8 accepts responsibility to anyone for the consequences of using it
9 or for whether it serves any particular purpose or works at all,
10 unless he says so in writing. Refer to the GNU Emacs General Public
11 License for full details.
13 Everyone is granted permission to copy, modify and redistribute
14 GNU Emacs, but only under the conditions described in the
15 GNU Emacs General Public License. A copy of this license is
16 supposed to have been given to you along with GNU Emacs so you
17 can know your rights and responsibilities. It should be in a
18 file named COPYING. Among other things, the copyright notice
19 and this notice must be preserved on all copies. */
21 /* This file written by James Van Artsdalen of Dell Computer Corporation.
22 * james@bigtex.cactus.org.
25 /* Use the SysVr3 file for at least base configuration. */
31 /* We do have multiple jobs. Handle ^Z. */
35 /* If compiled by GNU C, we must have gnulib */
38 #define GNULIB /usr/local/lib/gcc-gnulib
44 #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 GNULIB -lsocket -lnsl -lelf -lc /usr/ucblib/libucb.a /usr/ccs/lib/crtn.o
48 /* Use ptem.h to get structures related to windows. */
56 #define UNEXEC unexelf.o
58 /* Get FIONREAD from <sys/filio.h>. Get <sys/ttold.h> to get struct
59 * tchars. But get <termio.h> first to make sure ttold.h doesn't
60 * interfere. And don't try to use SIGIO yet.
64 #include <sys/filio.h>
66 #include <sys/ttold.h>
71 /* libc has this stuff, but still not utimes. */
77 #define HAVE_GETTIMEOFDAY
80 /* <sys/stat.h> *defines* stat(2) as a static function. If "static"
81 * is blank, then many files will have a public definition for stat(2).
86 /* We need bss_end from emacs.c for undumping */
88 #ifndef USG_SHARED_LIBRARIES
89 #define USG_SHARED_LIBRARIES
92 /* We can support this */
94 #define CLASH_DETECTION
99 /* It is possible to receive SIGCHLD when there are no children
100 waiting, because a previous waitsys(2) cleaned up the carcass of child
101 without clearing the SIGCHLD pending info. So, use a non-blocking
102 wait3 instead, which maps to waitpid(2) in SysVr4. */
104 #define HAVE_WAIT_HEADER
106 #define wait3(status, options, rusage) \
107 waitpid((pid_t) -1, (status), (options))
108 #define WRETCODE(w) (w >> 8)
110 /* TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
111 subprocesses the usual way. But TIOCSIGNAL does work for PTYs, and
112 this is all we need. */
114 #define TIOCSIGSEND TIOCSIGNAL
116 /* This change means that we don't loop through allocate_pty too many
117 times in the (rare) event of a failure. */
119 #undef FIRST_PTY_LETTER
120 #define FIRST_PTY_LETTER 'z'
122 /* This sets the name of the master side of the PTY. */
124 #define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
126 /* This sets the name of the slave side of the PTY. On SysVr4,
127 grantpt(3) forks a subprocess, so keep sigchld_handler() from
128 intercepting that death. If any child but grantpt's should die
129 within, it should be caught after sigrelse(2). */
131 #define PTY_TTY_NAME_SPRINTF \
133 char *ptsname(), *ptyname; \
136 if (grantpt(fd) == -1) \
137 fatal("could not grant slave pty"); \
139 if (unlockpt(fd) == -1) \
140 fatal("could not unlock slave pty"); \
141 if (!(ptyname = ptsname(fd))) \
142 fatal ("could not enable slave pty"); \
143 strncpy(pty_name, ptyname, sizeof(pty_name)); \
144 pty_name[sizeof(pty_name) - 1] = 0; \
147 /* Push various streams modules onto a PTY channel. */
149 #define SETUP_SLAVE_PTY \
150 if (ioctl (xforkin, I_PUSH, "ptem") == -1) \
151 fatal ("ioctl I_PUSH ptem", errno); \
152 if (ioctl (xforkin, I_PUSH, "ldterm") == -1) \
153 fatal ("ioctl I_PUSH ldterm", errno); \
154 if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) \
155 fatal ("ioctl I_PUSH ttcompat", errno);
157 /* The definition of this in usg5-3.h is not needed in 5.4. */