/* 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,
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
#endif
+
\f
/* Include the proper files. */
#ifdef HAVE_TERMIO
#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 DOS_NT
#include <sgtty.h>
+#endif /* not DOS_NT */
#else /* VMS */
#include <descrip.h>
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;
#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>
#ifdef NEED_BSDTTY
#include <sys/bsdtty.h>
-#endif
+#endif
#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
#ifdef EMACS_HAVE_TTY_PGRP
-#ifdef HAVE_TERMIOS
+#if defined (HAVE_TERMIOS) && ! defined (BSD_TERMIOS)
#define EMACS_GET_TTY_PGRP(fd, pgid) (*(pgid) = tcgetpgrp ((fd)))
#define EMACS_SET_TTY_PGRP(fd, pgid) (tcsetpgrp ((fd), *(pgid)))
#endif
-/* EMACS_GETPGRP (arg) returns the process group of the terminal. */
+/* EMACS_GETPGRP (arg) returns the process group of the process. */
-#if defined (USG) && !defined (GETPGRP_NEEDS_ARG)
-# if !defined (GETPGRP_NO_ARG)
-# define GETPGRP_NO_ARG
-# endif
-#endif
-
-#if defined (GETPGRP_NO_ARG)
+#if defined (GETPGRP_VOID)
# define EMACS_GETPGRP(x) getpgrp()
#else
# define EMACS_GETPGRP(x) getpgrp(x)
-#endif /* !GETPGRP_NO_ARG */
+#endif /* !GETPGRP_VOID */
\f
/* Manipulate a TTY's input/output processing parameters. */
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
#ifdef VMS
struct sensemode main;
#else
+#ifdef DOS_NT
+ int main;
+#else /* not DOS_NT */
struct sgttyb main;
+#endif /* not DOS_NT */
#endif
#endif
#endif
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
#else
+#ifdef DOS_NT
+#define EMACS_TTY_TABS_OK(p) 0
+#else /* not DOS_NT */
#define EMACS_TTY_TABS_OK(p) (((p)->main.sg_flags & XTABS) != XTABS)
+#endif /* not DOS_NT */
#endif /* not def VMS */
#endif /* not def HAVE_TERMIO */
#endif /* not def HAVE_TERMIOS */
+
+/* arch-tag: cf4b90bc-be41-401c-be98-40619178a712
+ (do not change this comment) */