* unexnext.c:
[bpt/emacs.git] / src / s / usg5-4.h
similarity index 51%
rename from src/s/usg5-3.h
rename to src/s/usg5-4.h
index 3a03f42..79cc10a 100644 (file)
@@ -1,6 +1,6 @@
-/* Definitions file for GNU Emacs running on AT&T's System V Release 3
-   Copyright (C) 1987, 1999, 2001, 2002, 2003, 2004, 2005, 2006,
-                 2007, 2008  Free Software Foundation, Inc.
+/* Definitions file for GNU Emacs running on AT&T's System V Release 4
+   Copyright (C) 1987, 1990, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+                 2006, 2007, 2008  Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -17,38 +17,27 @@ GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
-
-/*
- *     Define symbols to identify the version of Unix this is.
- *     Define all the symbols that apply correctly.
+/* This file written by James Van Artsdalen of Dell Computer Corporation.
+ * james@bigtex.cactus.org.  Subsequently improved for Dell 2.2 by Eric
+ * S. Raymond <esr@snark.thyrsus.com>.
  */
 
+/* Use the SysVr3 file for at least base configuration. */
+
 #define USG                            /* System III, System V, etc */
 
 #define USG5
-
-#define USG5_3
+#define USG5_4
 
 /* SYSTEM_TYPE should indicate the kind of system you are using.
  It sets the Lisp variable system-type.  */
 
 #define SYSTEM_TYPE "usg-unix-v"
 
-/* nomultiplejobs should be defined if your system's shell
- does not have "job control" (the ability to stop a program,
- run some other program, then continue the first one).  */
-
-#define NOMULTIPLEJOBS
-
 /* Default is to set interrupt_input to 0: don't do input buffering within Emacs */
 
 /* #define INTERRUPT_INPUT */
 
-/* Letter to use in finding device name of first pty,
-  if system supports pty's.  'p' means it is /dev/ptyp0  */
-
-#define FIRST_PTY_LETTER 'p'
-
 /*
  *     Define HAVE_TERMIO if the system provides sysV-style ioctls
  *     for terminal control.
@@ -162,27 +151,11 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #define TERMINFO
 
-/* Some variants have TIOCGETC, but the structures to go with it
-   are not declared.  */
-
-#define BROKEN_TIOCGETC
-
-/* AT&T SVr3 X wants to be linked with shared libraries */
-
-#define LIB_X11_LIB -lX11_s
-
-/* X needs to talk on the network, so search the network library.  */
-
-#define LIBX11_SYSTEM -lpt -lnls -lnsl_s -lc_s
 
 /* The docs for system V/386 suggest v.3 has sigpause,
    so let's give it a try.  */
 #define HAVE_SYSV_SIGPAUSE
 
-/* Some variants have TIOCGWINSZ, but the structures to go with it
-   are not declared.  */
-
-#define BROKEN_TIOCGWINSZ
 
 /* If we're using the System V X port, BSD bstring functions will be handy */
 
@@ -198,5 +171,133 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #define SIGTYPE void
 
-/* arch-tag: 2bca65fd-f015-44b9-a2aa-9f8170ce89ca
+#define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o
+#define LIB_STANDARD -lc /usr/ccs/lib/crtn.o
+
+/* there are no -lg libraries on this system, and no libPW */
+
+#define LIBS_DEBUG
+
+/* Undump with ELF */
+
+#undef COFF
+
+#define UNEXEC unexelf.o
+
+/* <sys/stat.h> *defines* stat(2) as a static function.  If "static"
+ * is blank, then many files will have a public definition for stat(2).
+ */
+
+#undef static
+
+/* Get FIONREAD from <sys/filio.h>.  Get <sys/ttold.h> to get struct
+ * tchars. But get <termio.h> first to make sure ttold.h doesn't
+ * interfere.  And don't try to use SIGIO yet.
+ */
+
+#ifndef NOT_C_CODE
+#include <sys/wait.h>
+#endif
+
+#ifdef emacs
+#ifndef NO_FILIO_H
+#include <sys/filio.h>
+#endif
+#include <termio.h>
+#include <sys/ttold.h>
+#include <signal.h>
+#include <sys/stream.h>
+#include <sys/stropts.h>
+#include <sys/termios.h>
+#define BROKEN_SIGIO
+#endif
+
+/* Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
+ * instead, there's a system variable _sys_nsig.  Unfortunately, we need the
+ * constant to dimension an array.  So wire in the appropriate value here.
+ */
+#define NSIG_MINIMUM 32
+
+/* We need bss_end from emacs.c for undumping */
+
+#ifndef USG_SHARED_LIBRARIES
+#define USG_SHARED_LIBRARIES
+#endif
+
+/* We can support this */
+
+#define CLASH_DETECTION
+
+#define HAVE_PTYS
+#define HAVE_TERMIOS
+
+/* It is possible to receive SIGCHLD when there are no children
+   waiting, because a previous waitsys(2) cleaned up the carcass of child
+   without clearing the SIGCHLD pending info.  So, use a non-blocking
+   wait3 instead, which maps to waitpid(2) in SysVr4. */
+
+#define HAVE_WAIT_HEADER
+#define WAITTYPE int
+#define wait3(status, options, rusage) \
+  waitpid ((pid_t) -1, (status), (options))
+#define WRETCODE(w) (w >> 8)
+
+/* TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
+   subprocesses the usual way.  But TIOCSIGNAL does work for PTYs, and
+   this is all we need.  */
+
+#define TIOCSIGSEND TIOCSIGNAL
+
+/* This change means that we don't loop through allocate_pty too many
+   times in the (rare) event of a failure. */
+
+#define FIRST_PTY_LETTER 'z'
+
+/* This sets the name of the master side of the PTY. */
+
+#define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
+
+/* This sets the name of the slave side of the PTY.  On SysVr4,
+   grantpt(3) forks a subprocess, so keep sigchld_handler() from
+   intercepting that death.  If any child but grantpt's should die
+   within, it should be caught after sigrelse(2). */
+
+#define PTY_TTY_NAME_SPRINTF                           \
+  {                                                    \
+    char *ptsname (), *ptyname;                                \
+                                                       \
+    sighold (SIGCLD);                                  \
+    if (grantpt (fd) == -1)                            \
+      { emacs_close (fd); return -1; }                 \
+    sigrelse (SIGCLD);                                 \
+    if (unlockpt (fd) == -1)                           \
+      { emacs_close (fd); return -1; }                 \
+    if (!(ptyname = ptsname (fd)))                     \
+      { emacs_close (fd); return -1; }                 \
+    strncpy (pty_name, ptyname, sizeof (pty_name));    \
+    pty_name[sizeof (pty_name) - 1] = 0;               \
+  }
+
+/* Push various streams modules onto a PTY channel. */
+
+#define SETUP_SLAVE_PTY \
+  if (ioctl (xforkin, I_PUSH, "ptem") == -1)   \
+    fatal ("ioctl I_PUSH ptem", errno);                \
+  if (ioctl (xforkin, I_PUSH, "ldterm") == -1) \
+    fatal ("ioctl I_PUSH ldterm", errno);      \
+  if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) \
+    fatal ("ioctl I_PUSH ttcompat", errno);
+
+/* Tell x11term.c and keyboard.c we have the system V streams feature.  */
+#define SYSV_STREAMS
+
+/* This definition was suggested for next release.
+   So give it a try.  */
+#define HAVE_SOCKETS
+
+/* Markus Weiand <weiand@khof.com> says this is needed for Motif on
+   SINIX.  */
+#define LIBS_SYSTEM -lgen
+
+/* arch-tag: 1a0ed909-5faa-434b-b7c3-9d86c63d53a6
    (do not change this comment) */