Initial revision
[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 #define DATA_SEG_BITS 0x08000000
49
50 /* Use ptem.h to get structures related to windows. */
51
52 #define NEED_PTEM_H
53
54 /* Undump with ELF */
55
56 #undef COFF
57
58 #define UNEXEC unexelf.o
59
60 /* Get FIONREAD from <sys/filio.h>. Get <sys/ttold.h> to get struct
61 * tchars. But get <termio.h> first to make sure ttold.h doesn't
62 * interfere. And don't try to use SIGIO yet.
63 */
64
65 #ifdef emacs
66 #include <sys/filio.h>
67 #include <termio.h>
68 #include <sys/ttold.h>
69 #include <signal.h>
70 #undef SIGIO
71 #endif
72
73 /* libc has this stuff, but not utimes. */
74
75 #define HAVE_RENAME
76 #define HAVE_SELECT
77 #define HAVE_TIMEVAL
78 #define HAVE_CLOSEDIR
79 #define HAVE_GETTIMEOFDAY
80 #define HAVE_DUP2
81
82 #define USE_UTIME
83
84 /* <sys/stat.h> *defines* stat(2) as a static function. If "static"
85 * is blank, then many files will have a public definition for stat(2).
86 */
87
88 #undef static
89
90 /* We need bss_end from emacs.c for undumping */
91
92 #ifndef USG_SHARED_LIBRARIES
93 #define USG_SHARED_LIBRARIES
94 #endif
95
96 /* We can support this */
97
98 #define CLASH_DETECTION
99
100 #define HAVE_PTYS
101 #define HAVE_SETSID
102
103 /* It is possible to receive SIGCHLD when there are no children
104 waiting, because a previous waitsys(2) cleaned up the carcass of child
105 without clearing the SIGCHLD pending info. So, use a non-blocking
106 wait3 instead, which maps to waitpid(2) in SysVr4. */
107
108 #define HAVE_WAIT_HEADER
109 #define WAITTYPE int
110 #define wait3(status, options, rusage) \
111 waitpid((pid_t) -1, (status), (options))
112 #define WRETCODE(w) (w >> 8)
113
114 /* TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
115 subprocesses the usual way. But TIOCSIGNAL does work for PTYs, and
116 this is all we need. */
117
118 #define TIOCSIGSEND TIOCSIGNAL
119
120 /* This change means that we don't loop through allocate_pty too many
121 times in the (rare) event of a failure. */
122
123 #undef FIRST_PTY_LETTER
124 #define FIRST_PTY_LETTER 'z'
125
126 /* This sets the name of the master side of the PTY. */
127
128 #define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
129
130 /* This sets the name of the slave side of the PTY. On SysVr4,
131 grantpt(3) forks a subprocess, so keep sigchld_handler() from
132 intercepting that death. If any child but grantpt's should die
133 within, it should be caught after sigrelse(2). */
134
135 #define PTY_TTY_NAME_SPRINTF \
136 { \
137 char *ptsname(), *ptyname; \
138 \
139 sighold(SIGCLD); \
140 if (grantpt(fd) == -1) \
141 fatal("could not grant slave pty"); \
142 sigrelse(SIGCLD); \
143 if (unlockpt(fd) == -1) \
144 fatal("could not unlock slave pty"); \
145 if (!(ptyname = ptsname(fd))) \
146 fatal ("could not enable slave pty"); \
147 strncpy(pty_name, ptyname, sizeof(pty_name)); \
148 pty_name[sizeof(pty_name) - 1] = 0; \
149 }
150
151 /* Push various streams modules onto a PTY channel. */
152
153 #define SETUP_SLAVE_PTY \
154 if (ioctl (xforkin, I_PUSH, "ptem") == -1) \
155 fatal ("ioctl I_PUSH ptem", errno); \
156 if (ioctl (xforkin, I_PUSH, "ldterm") == -1) \
157 fatal ("ioctl I_PUSH ldterm", errno); \
158 if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) \
159 fatal ("ioctl I_PUSH ttcompat", errno);
160
161 /* The definition of this in usg5-3.h is not needed in 5.4. */
162
163 #undef LIBX11_SYSTEM