home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / e20313sr.zip / emacs / 20.3.1 / src / s / usg5-4.h < prev    next >
C/C++ Source or Header  |  1999-06-27  |  6KB  |  204 lines

  1. /* Definitions file for GNU Emacs running on AT&T's System V Release 4
  2.    Copyright (C) 1987, 1990 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19. Boston, MA 02111-1307, USA.  */
  20.  
  21. /* This file written by James Van Artsdalen of Dell Computer Corporation.
  22.  * james@bigtex.cactus.org.  Subsequently improved for Dell 2.2 by Eric
  23.  * S. Raymond <esr@snark.thyrsus.com>.
  24.  */
  25.  
  26. /* Use the SysVr3 file for at least base configuration. */
  27.  
  28. #include "usg5-3.h"
  29.  
  30. #define USG5_4
  31.  
  32. /* We do have multiple jobs.  Handle ^Z. */
  33.  
  34. #undef NOMULTIPLEJOBS
  35.  
  36. #define LIBS_SYSTEM -lsocket -lnsl -lelf
  37. #define ORDINARY_LINK
  38.  
  39. #if 0
  40. #ifdef ORDINARY_LINK
  41. #define LIB_STANDARD -lc /usr/ucblib/libucb.a
  42. #else
  43. #define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o
  44. #define LIB_STANDARD -lc /usr/ucblib/libucb.a /usr/ccs/lib/crtn.o
  45. #endif
  46. #else
  47.  
  48. #ifdef ORDINARY_LINK
  49. #define LIB_STANDARD
  50. #else
  51. #define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o
  52. #define LIB_STANDARD -lc /usr/ccs/lib/crtn.o
  53. #endif
  54. #endif
  55.  
  56. /* there are no -lg libraries on this system, and no libPW */
  57.  
  58. #define LIBS_DEBUG
  59. /* This is turned off because nobody actually uses LIBS_STANDARD (Nov 1995).
  60.    That name is a typo.  The next step is to delete this entirely.  */
  61. /* #define LIBS_STANDARD -lc */
  62.  
  63. /* No <sioctl.h> */
  64.  
  65. #define NO_SIOCTL_H
  66.  
  67. /* Undump with ELF */
  68.  
  69. #undef COFF
  70.  
  71. #define UNEXEC unexelf.o
  72.  
  73. /* <sys/stat.h> *defines* stat(2) as a static function.  If "static"
  74.  * is blank, then many files will have a public definition for stat(2).
  75.  */
  76.  
  77. #undef static
  78.  
  79. /* Get FIONREAD from <sys/filio.h>.  Get <sys/ttold.h> to get struct
  80.  * tchars. But get <termio.h> first to make sure ttold.h doesn't
  81.  * interfere.  And don't try to use SIGIO yet.
  82.  */
  83.  
  84. #ifndef NOT_C_CODE
  85. #include <sys/wait.h>
  86. #endif
  87.  
  88. #ifdef emacs
  89. #ifndef NO_FILIO_H
  90. #include <sys/filio.h>
  91. #endif
  92. #include <termio.h>
  93. #include <sys/ttold.h>
  94. #include <signal.h>
  95. #include <sys/stream.h>
  96. #include <sys/stropts.h>
  97. #include <sys/termios.h>
  98. #undef SIGIO
  99. #endif
  100.  
  101. /* Some SVr4s don't define NSIG in sys/signal.h for ANSI environments;
  102.  * instead, there's a system variable _sys_nsig.  Unfortunately, we need the
  103.  * constant to dimension an array.  So wire in the appropriate value here.
  104.  */
  105.  
  106. #ifndef NSIG
  107. #define NSIG    32
  108. #endif
  109.  
  110. /* We need bss_end from emacs.c for undumping */
  111.  
  112. #ifndef USG_SHARED_LIBRARIES
  113. #define USG_SHARED_LIBRARIES
  114. #endif
  115.  
  116. /* We can support this */
  117.  
  118. #define CLASH_DETECTION
  119.  
  120. #define HAVE_PTYS
  121. #define HAVE_TERMIOS
  122. #undef BROKEN_TIOCGWINSZ
  123. #undef BROKEN_TIOCGETC
  124.  
  125. /* It is possible to receive SIGCHLD when there are no children
  126.    waiting, because a previous waitsys(2) cleaned up the carcass of child
  127.    without clearing the SIGCHLD pending info.  So, use a non-blocking
  128.    wait3 instead, which maps to waitpid(2) in SysVr4. */
  129.  
  130. #define HAVE_WAIT_HEADER
  131. #define WAITTYPE int
  132. #define wait3(status, options, rusage) \
  133.   waitpid ((pid_t) -1, (status), (options))
  134. #define WRETCODE(w) (w >> 8)
  135.  
  136. /* TIOCGPGRP is broken in SysVr4, so we can't send signals to PTY
  137.    subprocesses the usual way.  But TIOCSIGNAL does work for PTYs, and
  138.    this is all we need.  */
  139.  
  140. #define TIOCSIGSEND TIOCSIGNAL
  141.  
  142. /* This change means that we don't loop through allocate_pty too many
  143.    times in the (rare) event of a failure. */
  144.  
  145. #undef FIRST_PTY_LETTER
  146. #define FIRST_PTY_LETTER 'z'
  147.  
  148. /* This sets the name of the master side of the PTY. */
  149.  
  150. #define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
  151.  
  152. /* This sets the name of the slave side of the PTY.  On SysVr4,
  153.    grantpt(3) forks a subprocess, so keep sigchld_handler() from
  154.    intercepting that death.  If any child but grantpt's should die
  155.    within, it should be caught after sigrelse(2). */
  156.  
  157. #define PTY_TTY_NAME_SPRINTF                \
  158.   {                            \
  159.     char *ptsname (), *ptyname;                \
  160.                             \
  161.     sighold (SIGCLD);                    \
  162.     if (grantpt (fd) == -1)                \
  163.       { close (fd); return -1; }            \
  164.     sigrelse (SIGCLD);                    \
  165.     if (unlockpt (fd) == -1)                \
  166.       { close (fd); return -1; }            \
  167.     if (!(ptyname = ptsname (fd)))            \
  168.       { close (fd); return -1; }            \
  169.     strncpy (pty_name, ptyname, sizeof (pty_name));    \
  170.     pty_name[sizeof (pty_name) - 1] = 0;        \
  171.   }
  172.  
  173. /* Push various streams modules onto a PTY channel. */
  174.  
  175. #define SETUP_SLAVE_PTY \
  176.   if (ioctl (xforkin, I_PUSH, "ptem") == -1)    \
  177.     fatal ("ioctl I_PUSH ptem", errno);        \
  178.   if (ioctl (xforkin, I_PUSH, "ldterm") == -1)    \
  179.     fatal ("ioctl I_PUSH ldterm", errno);    \
  180.   if (ioctl (xforkin, I_PUSH, "ttcompat") == -1) \
  181.     fatal ("ioctl I_PUSH ttcompat", errno);
  182.  
  183. /* Undo the SVr3 X11 library definition */
  184. #undef LIB_X11_LIB
  185.  
  186. /* The definition of this in s-usg5-3.h is not needed in 5.4.  */
  187. /* liblnsl_s should never be used.  The _s suffix implies a shared
  188.    library, as opposed to a DLL.  Share libraries were used in SVR3, and are
  189.    available only in order to allow SVR3 binaries to run.  They should not be
  190.    linked in to new binaries. -- caraway!pinkas@caraway.intel.com.  */
  191. #undef LIBX10_SYSTEM
  192. #undef LIBX11_SYSTEM
  193.  
  194. /* Tell x11term.c and keyboard.c we have the system V streams feature.  */
  195. #define SYSV_STREAMS
  196.  
  197. /* This definition was suggested for next release.
  198.    So give it a try.  */
  199. #define HAVE_SOCKETS
  200.  
  201. #define bcopy(src,dst,n)    memmove (dst,src,n)
  202. #define bcmp(src,dst,n)        memcmp (src,dst,n)
  203. #define bzero(s,n)        memset (s,0,n)
  204.