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