(AC_FUNC_MMAP): Add.
[bpt/emacs.git] / src / systty.h
index 14848d9..6aeb2f6 100644 (file)
@@ -1,11 +1,11 @@
 /* systty.h - System-dependent definitions for terminals.
-   Copyright (C) 1993 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1994 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
 GNU Emacs is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
 any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
@@ -15,7 +15,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_TERMIOS
 #define HAVE_TCATTR
@@ -53,24 +54,28 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #ifndef NO_TERMIO
 #include <termio.h>
 #endif /* not NO_TERMIO */
+#ifndef INCLUDED_FCNTL
+#define INCLUDED_FCNTL
 #include <fcntl.h>
-#else
+#endif
+#else /* not HAVE_TERMIO */
 #ifdef HAVE_TERMIOS
 #if defined(_AIX) && defined(_I386)
 #include <termios.h>           /* termios.h needs to be before termio.h */
 #include <termio.h>
-#else
+#else /* not (_AIX && _I386) */
 #ifndef NO_TERMIO
 #include <termio.h>
 #endif
 #include <termios.h>
-#endif /* _AIX && _I386 */
+#endif /* not (_AIX && _I386) */
+#define INCLUDED_FCNTL
 #include <fcntl.h>
 #else /* neither HAVE_TERMIO nor HAVE_TERMIOS */
 #ifndef VMS
-#ifndef MSDOS
+#ifndef DOS_NT
 #include <sgtty.h>
-#endif
+#endif /* not DOS_NT */
 #else /* VMS */
 #include <descrip.h>
 static struct iosb
@@ -83,15 +88,9 @@ static struct iosb
 
 extern int waiting_for_ast;
 extern int stop_input;
-#if 0 /* VAX C doeasn't understand initializing declarations */
-extern int input_ef = 0;
-extern int timer_ef = 0;
-extern int process_ef = 0;
-#else
 extern int input_ef;
 extern int timer_ef;
 extern int process_ef;
-#endif
 extern int input_eflist;
 extern int timer_eflist;
 
@@ -116,7 +115,12 @@ static struct sensemode {
 #endif /* not HAVE_TERMIOS */
 #endif /* not HAVE_TERMIO */
 
-#ifdef AIX
+#ifdef __GNU_LIBRARY__
+#include <sys/ioctl.h>
+#include <termios.h>
+#endif
+
+#ifdef AIXHFT
 /* Get files for keyboard remapping */
 #define HFNKEYS 2
 #include <sys/hft.h>
@@ -136,22 +140,13 @@ static struct sensemode {
 #if defined (HPUX) && defined (HAVE_PTYS)
 #include <sys/ptyio.h>
 #endif
-  
+
 #ifdef AIX
 #include <sys/pty.h>
-#include <unistd.h>
-#define UNISTD_H_INCLUDED
 #endif /* AIX */
 
-#ifdef IRIX4
-/* Get _getpty prototype */
-#include <unistd.h>
-#define UNISTD_H_INCLUDED
-#endif
-
-#if defined (POSIX) && !defined (UNISTD_H_INCLUDED) && defined (HAVE_UNISTD_H)
+#if (defined (POSIX) || defined (NEED_UNISTD_H)) && defined (HAVE_UNISTD_H)
 #include <unistd.h>
-#define UNISTD_H_INCLUDED
 #endif
 
 #ifdef SYSV_PTYS
@@ -297,13 +292,26 @@ static struct sensemode {
 
 #endif
 
-/* EMACS_GETPGRP (arg) returns the process group of the terminal.  */
+/* EMACS_GETPGRP (arg) returns the process group of the process.  */
 
+#ifdef __GNU_LIBRARY__
+/* GNU libc by default defines getpgrp with no args on all systems.  */
+#if __GLIBC__  >= 2
+/* glibc-2.1 adds the BSD compatibility getpgrp function
+   if you use _BSD_SOURCE, which Emacs does on GNU/Linux systems.  */
+#if __GLIBC_MINOR__ < 1 || ! defined (__FAVOR_BSD)
+#define GETPGRP_NO_ARG
+#endif
+#else /* __GLIBC__ < 2 */
+#define GETPGRP_NO_ARG
+#endif /* __GLIBC__ < 2 */
+#else /* not __GNU_LIBRARY__ */
 #if defined (USG) && !defined (GETPGRP_NEEDS_ARG)
 #  if !defined (GETPGRP_NO_ARG)
 #    define GETPGRP_NO_ARG
 #  endif
 #endif
+#endif /* not __GNU_LIBRARY__ */
 
 #if defined (GETPGRP_NO_ARG)
 #  define EMACS_GETPGRP(x) getpgrp()
@@ -324,11 +332,10 @@ static struct sensemode {
    of the tty on FD in *P.  Return zero if all's well, or -1 if we ran
    into an error we couldn't deal with.
 
-   EMACS_SET_TTY (int FD, struct emacs_tty *P, int waitp)
+   EMACS_SET_TTY (int FD, struct emacs_tty *P, int flushp)
    sets the parameters of the tty on FD according to the contents of
-   *P.  If waitp is non-zero, we wait for all queued output to be
-   written before making the change; otherwise, we forget any queued
-   input and make the change immediately.
+   *P.  If flushp is non-zero, we discard queued input to be
+   written before making the change.
    Return 0 if all went well, and -1 if anything failed.
 
    EMACS_TTY_TABS_OK (struct emacs_tty *P) is false iff the kernel
@@ -354,11 +361,11 @@ struct emacs_tty {
 #ifdef VMS
   struct sensemode main;
 #else
-#ifdef MSDOS
+#ifdef DOS_NT
   int main;
-#else
+#else  /* not DOS_NT */
   struct sgttyb main;
-#endif
+#endif /* not DOS_NT */
 #endif
 #endif
 #endif
@@ -385,13 +392,21 @@ struct emacs_tty {
    expression, so we moved them out to their own functions in sysdep.c.  */
 #define EMACS_GET_TTY(fd, p)        (emacs_get_tty ((fd), (p)))
 #define EMACS_SET_TTY(fd, p, waitp) (emacs_set_tty ((fd), (p), (waitp)))
+#ifdef P_  /* Unfortunately this file is sometimes included before lisp.h */
+extern int emacs_get_tty P_ ((int, struct emacs_tty *));
+extern int emacs_set_tty P_ ((int, struct emacs_tty *, int));
+#endif
 
 \f
 /* Define EMACS_TTY_TABS_OK.  */
 
 #ifdef HAVE_TERMIOS
 
+#ifdef TABDLY
 #define EMACS_TTY_TABS_OK(p) (((p)->main.c_oflag & TABDLY) != TAB3)
+#else
+#define EMACS_TTY_TABS_OK(p) 1
+#endif
 
 #else /* not def HAVE_TERMIOS */
 #ifdef HAVE_TERMIO
@@ -405,11 +420,11 @@ struct emacs_tty {
 
 #else
 
-#ifdef MSDOS
+#ifdef DOS_NT
 #define EMACS_TTY_TABS_OK(p) 0
-#else /* not MSDOS */
+#else /* not DOS_NT */
 #define EMACS_TTY_TABS_OK(p) (((p)->main.sg_flags & XTABS) != XTABS)
-#endif /* not MSDOS */
+#endif /* not DOS_NT */
 
 #endif /* not def VMS */
 #endif /* not def HAVE_TERMIO */