*** empty log message ***
[bpt/emacs.git] / src / s / usg5-4.h
1 /* Definitions file for GNU Emacs running on AT&T's System V Release 4
2 Copyright (C) 1987 Free Software Foundation, Inc.
3
4 This file is part of GNU Emacs.
5
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.
12
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. */
20
21 /* This file written by James Van Artsdalen of Dell Computer Corporation.
22 * james@bigtex.cactus.org.
23 */
24
25 /* Use the SysVr3 file for at least base configuration. */
26
27 #include "usg5-3.h"
28
29 #define USG5_4
30
31 /* We do have multiple jobs. Handle ^Z. */
32
33 #undef NOMULTIPLEJOBS
34
35 /* If compiled by GNU C, we must have gnulib */
36
37 #ifdef __GNUC__
38 #define GNULIB /usr/local/lib/gcc-gnulib
39 #define LIBS_DEBUG
40 #else
41 #define GNULIB
42 #endif
43
44 #define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o
45
46 #define LIB_STANDARD GNULIB -lsocket -lnsl -lelf -lc /usr/ucblib/libucb.a /usr/ccs/lib/crtn.o
47
48 /* Use ptem.h to get structures related to windows. */
49
50 #define NEED_PTEM_H
51
52 /* Undump with ELF */
53
54 #undef COFF
55
56 #define UNEXEC unexelf.o
57
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.
61 */
62
63 #ifdef emacs
64 #include <sys/filio.h>
65 #include <termio.h>
66 #include <sys/ttold.h>
67 #include <signal.h>
68 #undef SIGIO
69 #endif
70
71 /* libc has this stuff, but still not utimes. */
72
73 #define HAVE_RENAME
74 #define HAVE_SELECT
75 #define HAVE_TIMEVAL
76 #define HAVE_CLOSEDIR
77 #define HAVE_GETTIMEOFDAY
78 #define HAVE_DUP2
79
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).
82 */
83
84 #undef static
85
86 /* We need bss_end from emacs.c for undumping */
87
88 #ifndef USG_SHARED_LIBRARIES
89 #define USG_SHARED_LIBRARIES
90 #endif
91
92 /* We can support this */
93
94 #define CLASH_DETECTION
95
96 #define HAVE_PTYS
97 #define HAVE_SETSID
98
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. */
103
104 #define HAVE_WAIT_HEADER
105 #define WAITTYPE int
106 #define wait3(status, options, rusage) \
107 waitpid((pid_t) -1, (status), (options))
108 #define WRETCODE(w) (w >> 8)
109
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. */
113
114 #define TIOCSIGSEND TIOCSIGNAL
115
116 /* This change means that we don't loop through allocate_pty too many
117 times in the (rare) event of a failure. */
118
119 #undef FIRST_PTY_LETTER
120 #define FIRST_PTY_LETTER 'z'
121
122 /* This sets the name of the master side of the PTY. */
123
124 #define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
125
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). */
130
131 #define PTY_TTY_NAME_SPRINTF \
132 { \
133 char *ptsname(), *ptyname; \
134 \
135 sighold(SIGCLD); \
136 if (grantpt(fd) == -1) \
137 fatal("could not grant slave pty"); \
138 sigrelse(SIGCLD); \
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; \
145 }
146
147 /* Push various streams modules onto a PTY channel. */
148
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);
156
157 /* The definition of this in usg5-3.h is not needed in 5.4. */
158
159 #undef LIBX11_SYSTEM