From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 87802 invoked by alias); 2 Nov 2017 18:54:37 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 87613 invoked by uid 89); 2 Nov 2017 18:54:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 02 Nov 2017 18:54:30 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 67D56806BB for ; Thu, 2 Nov 2017 18:54:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 67D56806BB Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=sergiodj@redhat.com Received: from localhost (unused-10-15-17-193.yyz.redhat.com [10.15.17.193]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1324D52737; Thu, 2 Nov 2017 18:54:29 +0000 (UTC) From: Sergio Durigan Junior To: Pedro Alves Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 1/3] Assume termios is available, remove support for termio and sgtty References: <1509635522-16945-1-git-send-email-palves@redhat.com> <1509635522-16945-2-git-send-email-palves@redhat.com> Date: Thu, 02 Nov 2017 18:54:00 -0000 In-Reply-To: <1509635522-16945-2-git-send-email-palves@redhat.com> (Pedro Alves's message of "Thu, 2 Nov 2017 15:12:00 +0000") Message-ID: <87r2tgcxzv.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2017-11/txt/msg00036.txt.bz2 On Thursday, November 02 2017, Pedro Alves wrote: > This commit garbage collects the termio and sgtty support. > > GDB's terminal handling code still has support for the old termio and > sgtty interfaces in addition to termios. However, I think it's pretty > safe to assume that for a long, long time, Unix-like systems provide > termios. GNU/Linux, Solaris, Cygwin, AIX, DJGPP, macOS and the BSDs > all have had termios.h for many years. Looking around the web, I > found discussions about FreeBSD folks trying to get rid of old sgtty.h > a decade ago: > > https://lists.freebsd.org/pipermail/freebsd-hackers/2007-March/019983.html > > So I think support for termio and sgtty in GDB is just dead code that > is never compiled anywhere and is just getting in the way. For > example, serial_noflush_set_tty_state and the raw<->cooked concerns > mentioned in inflow.c only exist because of sgtty (see > hardwire_noflush_set_tty_state). > > Regtested on GNU/Linux. > > Confirmed that I can still build Solaris, DJGPP and AIX GDB and that > that GDB still includes the termios.h-guarded code. Confirmed "that that" > mingw-w64 GDB still builds and skips the termios.h-guarded code. Thanks for doing that. You may remember that I also stumbled upon this while doing the startup-with-shell, but I didn't have the necessary background knowledge to do a deep cleanup. It's always nice to see old code being removed. > gdb/ChangeLog: > yyyy-mm-ddd Pedro Alves > > * Makefile.in (SER_HARDWIRE): Update comment. > * common/gdb_termios.h: Delete file. > * common/job-control.c: Include termios.h and unistd.h instead of > gdb_termios.h. > (gdb_setpgid): Remove HAVE_TERMIOS || TIOCGPGRP preprocessor > check. > (have_job_control): Check HAVE_TERMIOS_H instead of HAVE_TERMIOS. > Remove sgtty code. > * configure.ac: No longer check for termio.h and sgtty.h. > * configure: Regenerate. > * inflow.c: Include termios.h instead of gdb_termios.h. Replace > PROCESS_GROUP_TYPE checks with HAVE_TERMIOS_H checks throughout. > Replace PROCESS_GROUP_TYPE references with pid_t references > throughout. > (gdb_getpgrp): Delete. > (set_initial_gdb_ttystate): Use tcgetpgrp instead of gdb_getpgrp. > (child_terminal_inferior): Remove comment. Remove sgtty code. > (child_terminal_ours_1): Use tcgetpgrp directly instead of > gdb_getpgrp. Use serial_set_tty_state instead aof > serial_noflush_set_tty_state. Remove sgtty code. > * inflow.h: Include unistd.h instead of gdb_termios.h. Replace > PROCESS_GROUP_TYPE check with HAVE_TERMIOS_H check. > (inferior_process_group): Now returns pid_t. > * ser-base.c (ser_base_noflush_set_tty_state): Delete. > * ser-base.h (ser_base_noflush_set_tty_state): Delete. > * ser-event.c (serial_event_ops): Update. > * ser-go32.c (dos_noflush_set_tty_state): Delete. > (dos_ops): Update. > * ser-mingw.c (hardwire_ops, tty_ops, pipe_ops, tcp_ops): Update. > * ser-pipe.c (pipe_ops): Update. > * ser-tcp.c (tcp_ops): Update. > * ser-unix.c: Include termios.h instead of gdb_termios.h. Remove > HAVE_TERMIOS checks. > [HAVE_TERMIO] (struct hardwire_ttystate): Delete. > [HAVE_SGTTY] (struct hardwire_ttystate): Delete. > (get_tty_state, set_tty_state): Drop termio and sgtty code, and > assume termios. > (hardwire_noflush_set_tty_state): Delete. > (hardwire_print_tty_state, hardwire_drain_output) > (hardwire_flush_output, hardwire_flush_input) > (hardwire_send_break, hardwire_raw, hardwire_setbaudrate) > (hardwire_setstopbits, hardwire_setparity): Drop termio and sgtty > code, and assume termios. > (hardwire_ops): Update. > (_initialize_ser_hardwire): Remove HAVE_TERMIOS check. > * serial.c (serial_noflush_set_tty_state): Delete. > * serial.h (serial_noflush_set_tty_state): Delete. > (serial_ops::noflush_set_tty_state): Delete. > > gdb/gdbserver/ChangeLog: > yyyy-mm-ddd Pedro Alves > > * configure.ac: No longer check for termio.h and sgtty.h. > * configure: Regenerate. > * remote-utils.c: Include termios.h instead of gdb_termios.h. > (remote_open): Check HAVE_TERMIOS_H instead of HAVE_TERMIOS. > Remove termio and sgtty code. > --- > gdb/Makefile.in | 9 +- > gdb/common/gdb_termios.h | 78 ------------- > gdb/common/job-control.c | 23 ++-- > gdb/configure | 3 +- > gdb/configure.ac | 3 +- > gdb/gdbserver/configure | 2 +- > gdb/gdbserver/configure.ac | 2 +- > gdb/gdbserver/remote-utils.c | 33 +----- > gdb/inflow.c | 88 ++++----------- > gdb/inflow.h | 12 +- > gdb/ser-base.c | 8 -- > gdb/ser-base.h | 3 - > gdb/ser-event.c | 1 - > gdb/ser-go32.c | 12 -- > gdb/ser-mingw.c | 4 - > gdb/ser-pipe.c | 1 - > gdb/ser-tcp.c | 1 - > gdb/ser-unix.c | 264 +------------------------------------------ > gdb/serial.c | 8 -- > gdb/serial.h | 12 -- > 20 files changed, 44 insertions(+), 523 deletions(-) > delete mode 100644 gdb/common/gdb_termios.h > > diff --git a/gdb/Makefile.in b/gdb/Makefile.in > index 6cb0970..c2f6482 100644 > --- a/gdb/Makefile.in > +++ b/gdb/Makefile.in > @@ -729,12 +729,9 @@ XMLFILES = \ > $(srcdir)/features/traceframe-info.dtd \ > $(srcdir)/features/xinclude.dtd > > -# This is ser-unix.o for any system which supports a v7/BSD/SYSV/POSIX > -# interface to the serial port. Hopefully if get ported to OS/2, VMS, > -# etc., then there will be (as part of the C library or perhaps as > -# part of libiberty) a POSIX interface. But at least for now the > -# host-dependent makefile fragment might need to use something else > -# besides ser-unix.o > +# This is ser-unix.o for any system which supports a POSIX interface > +# to the serial port. The host-dependent makefile fragment might need > +# to use something else besides ser-unix.o. > SER_HARDWIRE = @SER_HARDWIRE@ > > # The `remote' debugging target is supported for most architectures, You also need to remove common/gdb_termios.h from HFILES_NO_SRCDIR here. > diff --git a/gdb/common/gdb_termios.h b/gdb/common/gdb_termios.h > deleted file mode 100644 > index 1d0544d..0000000 > --- a/gdb/common/gdb_termios.h > +++ /dev/null > @@ -1,78 +0,0 @@ > -/* Common terminal interface definitions for GDB and gdbserver. > - Copyright (C) 1986-2017 Free Software Foundation, Inc. > - > - This file is part of GDB. > - > - This program 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 3 of the License, or > - (at your option) any later version. > - > - This program is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > - GNU General Public License for more details. > - > - You should have received a copy of the GNU General Public License > - along with this program. If not, see . */ > - > -#ifndef GDB_TERMIOS_H > -#define GDB_TERMIOS_H > - > -/* If we're using autoconf, it will define HAVE_TERMIOS_H, > - HAVE_TERMIO_H and HAVE_SGTTY_H for us. One day we can rewrite > - ser-unix.c and inflow.c to inspect those names instead of > - HAVE_TERMIOS, HAVE_TERMIO and the implicit HAVE_SGTTY (when neither > - HAVE_TERMIOS or HAVE_TERMIO is set). Until then, make sure that > - nothing has already defined the one of the names, and do the right > - thing. */ > - > -#if !defined (HAVE_TERMIOS) && !defined(HAVE_TERMIO) && !defined(HAVE_SGTTY) > -#if defined(HAVE_TERMIOS_H) > -#define HAVE_TERMIOS > -#else /* ! defined (HAVE_TERMIOS_H) */ > -#if defined(HAVE_TERMIO_H) > -#define HAVE_TERMIO > -#else /* ! defined (HAVE_TERMIO_H) */ > -#if defined(HAVE_SGTTY_H) > -#define HAVE_SGTTY > -#endif /* ! defined (HAVE_SGTTY_H) */ > -#endif /* ! defined (HAVE_TERMIO_H) */ > -#endif /* ! defined (HAVE_TERMIOS_H) */ > -#endif /* !defined (HAVE_TERMIOS) && !defined (HAVE_TERMIO) && > - !defined (HAVE_SGTTY) */ > - > -#if defined(HAVE_TERMIOS) > -#include > -#endif > - > -#if !defined(_WIN32) && !defined (HAVE_TERMIOS) > - > -/* Define a common set of macros -- BSD based -- and redefine whatever > - the system offers to make it look like that. FIXME: serial.h and > - ser-*.c deal with this in a much cleaner fashion; as soon as stuff > - is converted to use them, can get rid of this crap. */ > - > -#ifdef HAVE_TERMIO > - > -#include > - > -#undef TIOCGETP > -#define TIOCGETP TCGETA > -#undef TIOCSETN > -#define TIOCSETN TCSETA > -#undef TIOCSETP > -#define TIOCSETP TCSETAF > -#define TERMINAL struct termio > - > -#else /* sgtty */ > - > -#include > -#include > -#include > -#define TERMINAL struct sgttyb > - > -#endif /* sgtty */ > -#endif > - > -#endif /* ! GDB_TERMIOS_H */ > diff --git a/gdb/common/job-control.c b/gdb/common/job-control.c > index d76bc57..78fc672 100644 > --- a/gdb/common/job-control.c > +++ b/gdb/common/job-control.c > @@ -20,7 +20,10 @@ > > #include "common-defs.h" > #include "job-control.h" > -#include "gdb_termios.h" > +#ifdef HAVE_TERMIOS_H > +#include > +#endif > +#include > > /* Nonzero if we have job control. */ > int job_control; > @@ -41,7 +44,6 @@ gdb_setpgid () > > if (job_control) > { > -#if defined (HAVE_TERMIOS) || defined (TIOCGPGRP) > #ifdef HAVE_SETPGID > /* The call setpgid (0, 0) is supposed to work and mean the same > thing as this, but on Ultrix 4.2A it fails with EPERM (and > @@ -56,7 +58,6 @@ gdb_setpgid () > #endif > #endif /* HAVE_SETPGRP */ > #endif /* HAVE_SETPGID */ > -#endif /* defined (HAVE_TERMIOS) || defined (TIOCGPGRP) */ Did you decide to remove the check for HAVE_TERMIOS (instead of replacing it with an "#ifdef HAVE_TERMIOS_H") because we're already checking for HAVE_SETPGID? > } > > return retval; > @@ -67,9 +68,9 @@ gdb_setpgid () > void > have_job_control () > { > - /* OK, figure out whether we have job control. If neither termios nor > - sgtty (i.e. termio or go32), leave job_control 0. */ > -#if defined (HAVE_TERMIOS) > + /* OK, figure out whether we have job control. If termios is not > + available, leave job_control 0. */ > +#if defined (HAVE_TERMIOS_H) > /* Do all systems with termios have the POSIX way of identifying job > control? I hope so. */ > #ifdef _POSIX_JOB_CONTROL > @@ -81,13 +82,5 @@ have_job_control () > job_control = 0; /* Have to assume the worst. */ > #endif /* _SC_JOB_CONTROL */ > #endif /* _POSIX_JOB_CONTROL */ > -#endif /* HAVE_TERMIOS */ > - > -#ifdef HAVE_SGTTY > -#ifdef TIOCGPGRP > - job_control = 1; > -#else > - job_control = 0; > -#endif /* TIOCGPGRP */ > -#endif /* sgtty */ > +#endif /* HAVE_TERMIOS_H */ > } > diff --git a/gdb/configure b/gdb/configure > index 6b445e4..c638652 100755 > --- a/gdb/configure > +++ b/gdb/configure > @@ -11554,8 +11554,7 @@ for ac_header in nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \ > sys/file.h sys/filio.h sys/ioctl.h sys/param.h \ > sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \ > sys/reg.h sys/debugreg.h sys/select.h sys/syscall.h \ > - termios.h termio.h \ > - sgtty.h elf_hp.h \ > + termios.h elf_hp.h \ > dlfcn.h > do : > as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` > diff --git a/gdb/configure.ac b/gdb/configure.ac > index 4e64c80..b909217 100644 > --- a/gdb/configure.ac > +++ b/gdb/configure.ac > @@ -1298,8 +1298,7 @@ AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \ > sys/file.h sys/filio.h sys/ioctl.h sys/param.h \ > sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \ > sys/reg.h sys/debugreg.h sys/select.h sys/syscall.h \ > - termios.h termio.h \ > - sgtty.h elf_hp.h \ > + termios.h elf_hp.h \ > dlfcn.h]) > AC_CHECK_HEADERS(sys/proc.h, [], [], > [#if HAVE_SYS_PARAM_H > diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure > index abab163..d5c62fb 100755 > --- a/gdb/gdbserver/configure > +++ b/gdb/gdbserver/configure > @@ -6177,7 +6177,7 @@ $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cach > cd "$ac_popdir" > > > -for ac_header in sgtty.h termio.h termios.h sys/reg.h string.h proc_service.h sys/procfs.h linux/elf.h fcntl.h signal.h sys/file.h sys/ioctl.h netinet/in.h sys/socket.h netdb.h netinet/tcp.h arpa/inet.h > +for ac_header in termios.h sys/reg.h string.h proc_service.h sys/procfs.h linux/elf.h fcntl.h signal.h sys/file.h sys/ioctl.h netinet/in.h sys/socket.h netdb.h netinet/tcp.h arpa/inet.h > do : > as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` > ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" > diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac > index 60e235d..456d3b3 100644 > --- a/gdb/gdbserver/configure.ac > +++ b/gdb/gdbserver/configure.ac > @@ -96,7 +96,7 @@ ACX_CONFIGURE_DIR(["../gnulib"], ["build-gnulib-gdbserver"], > > ACX_CONFIGURE_DIR(["../../libiberty"], ["build-libiberty-gdbserver"]) > > -AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl > +AC_CHECK_HEADERS(termios.h sys/reg.h string.h dnl > proc_service.h sys/procfs.h linux/elf.h dnl > fcntl.h signal.h sys/file.h dnl > sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl > diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c > index 66e06522..54f27f4 100644 > --- a/gdb/gdbserver/remote-utils.c > +++ b/gdb/gdbserver/remote-utils.c > @@ -17,7 +17,9 @@ > along with this program. If not, see . */ > > #include "server.h" > -#include "gdb_termios.h" > +#if HAVE_TERMIOS_H > +#include > +#endif > #include "target.h" > #include "gdbthread.h" > #include "tdesc.h" > @@ -325,7 +327,7 @@ remote_open (const char *name) > if (remote_desc < 0) > perror_with_name ("Could not open remote device"); > > -#ifdef HAVE_TERMIOS > +#if HAVE_TERMIOS_H Why s/#ifdef/#if/? I prefer #ifdef BTW. > { > struct termios termios; > tcgetattr (remote_desc, &termios); > @@ -342,33 +344,6 @@ remote_open (const char *name) > } > #endif > > -#ifdef HAVE_TERMIO > - { > - struct termio termio; > - ioctl (remote_desc, TCGETA, &termio); > - > - termio.c_iflag = 0; > - termio.c_oflag = 0; > - termio.c_lflag = 0; > - termio.c_cflag &= ~(CSIZE | PARENB); > - termio.c_cflag |= CLOCAL | CS8; > - termio.c_cc[VMIN] = 1; > - termio.c_cc[VTIME] = 0; > - > - ioctl (remote_desc, TCSETA, &termio); > - } > -#endif > - > -#ifdef HAVE_SGTTY > - { > - struct sgttyb sg; > - > - ioctl (remote_desc, TIOCGETP, &sg); > - sg.sg_flags = RAW; > - ioctl (remote_desc, TIOCSETP, &sg); > - } > -#endif > - > fprintf (stderr, "Remote debugging using %s\n", name); > > enable_async_notification (remote_desc); > diff --git a/gdb/inflow.c b/gdb/inflow.c > index d54b8f8..a96d4fc 100644 > --- a/gdb/inflow.c > +++ b/gdb/inflow.c > @@ -31,7 +31,9 @@ > > #include "inflow.h" > #include "gdbcmd.h" > -#include "gdb_termios.h" > +#ifdef HAVE_TERMIOS_H > +#include > +#endif > #include "job-control.h" > > #ifdef HAVE_SYS_IOCTL_H > @@ -64,9 +66,9 @@ struct terminal_info > it when it resumes. */ > serial_ttystate ttystate; > > -#ifdef PROCESS_GROUP_TYPE > +#ifdef HAVE_TERMIOS_H > /* Process group. Saved and restored just like ttystate. */ > - PROCESS_GROUP_TYPE process_group; > + pid_t process_group; > #endif > > /* fcntl flags. Saved and restored just like ttystate. */ > @@ -89,11 +91,11 @@ static serial_ttystate initial_gdb_ttystate; > > static struct terminal_info *get_inflow_inferior_data (struct inferior *); > > -#ifdef PROCESS_GROUP_TYPE > +#ifdef HAVE_TERMIOS_H > > /* Return the process group of the current inferior. */ > > -PROCESS_GROUP_TYPE > +pid_t > inferior_process_group (void) > { > return get_inflow_inferior_data (current_inferior ())->process_group; > @@ -121,25 +123,6 @@ static const char *inferior_thisrun_terminal; > > int terminal_is_ours; > > -#ifdef PROCESS_GROUP_TYPE > -static PROCESS_GROUP_TYPE > -gdb_getpgrp (void) > -{ > - int process_group = -1; > - > -#ifdef HAVE_TERMIOS > - process_group = tcgetpgrp (0); > -#endif > -#ifdef HAVE_TERMIO > - process_group = getpgrp (); > -#endif > -#ifdef HAVE_SGTTY > - ioctl (0, TIOCGPGRP, &process_group); > -#endif > - return process_group; > -} > -#endif > - > /* See terminal.h. */ > > void > @@ -157,8 +140,8 @@ set_initial_gdb_ttystate (void) > #ifdef F_GETFL > our_terminal_info.tflags = fcntl (0, F_GETFL, 0); > #endif > -#ifdef PROCESS_GROUP_TYPE > - our_terminal_info.process_group = gdb_getpgrp (); > +#ifdef HAVE_TERMIOS_H > + our_terminal_info.process_group = tcgetpgrp (0); > #endif > } > } > @@ -187,7 +170,7 @@ child_terminal_init_with_pgrp (int pgrp) > struct inferior *inf = current_inferior (); > struct terminal_info *tinfo = get_inflow_inferior_data (inf); > > -#ifdef PROCESS_GROUP_TYPE > +#ifdef HAVE_TERMIOS_H > /* Store the process group even without a terminal as it is used not > only to reset the tty foreground process group, but also to > interrupt the inferior. */ > @@ -224,7 +207,7 @@ gdb_save_tty_state (void) > void > child_terminal_init (struct target_ops *self) > { > -#ifdef PROCESS_GROUP_TYPE > +#ifdef HAVE_TERMIOS_H > /* This is for Lynx, and should be cleaned up by having Lynx be a > separate debugging target with a version of target_terminal::init > which passes in the process group to a generic routine which does > @@ -232,7 +215,7 @@ child_terminal_init (struct target_ops *self) > pass in inferior_ptid to the same routine). */ > /* We assume INFERIOR_PID is also the child's process group. */ > child_terminal_init_with_pgrp (ptid_get_pid (inferior_ptid)); > -#endif /* PROCESS_GROUP_TYPE */ > +#endif /* HAVE_TERMIOS_H */ > } > > /* Put the inferior's terminal settings into effect. > @@ -269,11 +252,7 @@ child_terminal_inferior (struct target_ops *self) > OOPSY ("fcntl F_SETFL"); > #endif > > - /* Because we were careful to not change in or out of raw mode in > - terminal_ours, we will not change in our out of raw mode with > - this call, so we don't flush any input. */ > - result = serial_set_tty_state (stdin_serial, > - tinfo->ttystate); > + result = serial_set_tty_state (stdin_serial, tinfo->ttystate); > OOPSY ("setting tty state"); > > if (!job_control) > @@ -298,19 +277,12 @@ child_terminal_inferior (struct target_ops *self) > > if (job_control) > { > -#ifdef HAVE_TERMIOS > +#ifdef HAVE_TERMIOS_H > result = tcsetpgrp (0, tinfo->process_group); > if (!inf->attach_flag) > OOPSY ("tcsetpgrp"); > #endif > - > -#ifdef HAVE_SGTTY > - result = ioctl (0, TIOCSPGRP, &tinfo->process_group); > - if (!inf->attach_flag) > - OOPSY ("TIOCSPGRP"); > -#endif > } > - > } > terminal_is_ours = 0; > } > @@ -388,34 +360,20 @@ child_terminal_ours_1 (int output_only) > xfree (tinfo->ttystate); > tinfo->ttystate = serial_get_tty_state (stdin_serial); > > -#ifdef PROCESS_GROUP_TYPE > +#ifdef HAVE_TERMIOS_H > if (!inf->attach_flag) > - /* If setpgrp failed in terminal_inferior, this would give us > + /* If tcsetpgrp failed in terminal_inferior, this would give us > our process group instead of the inferior's. See > terminal_inferior for details. */ > - tinfo->process_group = gdb_getpgrp (); > + tinfo->process_group = tcgetpgrp (0); > #endif > > - /* Here we used to set ICANON in our ttystate, but I believe this > - was an artifact from before when we used readline. Readline sets > - the tty state when it needs to. > - FIXME-maybe: However, query() expects non-raw mode and doesn't > - use readline. Maybe query should use readline (on the other hand, > - this only matters for HAVE_SGTTY, not termio or termios, I think). */ > - > - /* Set tty state to our_ttystate. We don't change in our out of raw > - mode, to avoid flushing input. We need to do the same thing > - regardless of output_only, because we don't have separate > - terminal_is_ours and terminal_is_ours_for_output flags. It's OK, > - though, since readline will deal with raw mode when/if it needs > - to. */ > - > - serial_noflush_set_tty_state (stdin_serial, our_terminal_info.ttystate, > - tinfo->ttystate); > + /* Set tty state to our_ttystate. */ > + serial_set_tty_state (stdin_serial, our_terminal_info.ttystate); > > if (job_control) > { > -#ifdef HAVE_TERMIOS > +#ifdef HAVE_TERMIOS_H > result = tcsetpgrp (0, our_terminal_info.process_group); > #if 0 > /* This fails on Ultrix with EINVAL if you run the testsuite > @@ -428,10 +386,6 @@ child_terminal_ours_1 (int output_only) > safe_strerror (errno)); > #endif > #endif /* termios */ > - > -#ifdef HAVE_SGTTY > - result = ioctl (0, TIOCSPGRP, &our_terminal_info.process_group); > -#endif > } > > #ifdef SIGTTOU > @@ -616,7 +570,7 @@ child_terminal_info (struct target_ops *self, const char *args, int from_tty) > printf_filtered ("\n"); > } > > -#ifdef PROCESS_GROUP_TYPE > +#ifdef HAVE_TERMIOS_H > printf_filtered ("Process group = %d\n", (int) tinfo->process_group); > #endif > > diff --git a/gdb/inflow.h b/gdb/inflow.h > index 428aed4..0b00c61 100644 > --- a/gdb/inflow.h > +++ b/gdb/inflow.h > @@ -20,17 +20,11 @@ > #ifndef INFLOW_H > #define INFLOW_H > > -#include "gdb_termios.h" > +#include > > -#ifdef HAVE_TERMIOS > -# define PROCESS_GROUP_TYPE pid_t > -#elif defined (HAVE_TERMIO) || defined (HAVE_SGTTY) > -# define PROCESS_GROUP_TYPE int > -#endif > - > -#ifdef PROCESS_GROUP_TYPE > /* Process group of the current inferior. */ > -extern PROCESS_GROUP_TYPE inferior_process_group (void); > +#ifdef HAVE_TERMIOS_H > +extern pid_t inferior_process_group (void); > #endif > > #endif /* inflow.h */ > diff --git a/gdb/ser-base.c b/gdb/ser-base.c > index 2bfe82b..3262dcc 100644 > --- a/gdb/ser-base.c > +++ b/gdb/ser-base.c > @@ -551,14 +551,6 @@ ser_base_set_tty_state (struct serial *scb, serial_ttystate ttystate) > return 0; > } > > -int > -ser_base_noflush_set_tty_state (struct serial *scb, > - serial_ttystate new_ttystate, > - serial_ttystate old_ttystate) > -{ > - return 0; > -} > - > void > ser_base_print_tty_state (struct serial *scb, > serial_ttystate ttystate, > diff --git a/gdb/ser-base.h b/gdb/ser-base.h > index 964d640..ceeb7de 100644 > --- a/gdb/ser-base.h > +++ b/gdb/ser-base.h > @@ -40,9 +40,6 @@ extern int ser_base_set_tty_state (struct serial *scb, > extern void ser_base_print_tty_state (struct serial *scb, > serial_ttystate ttystate, > struct ui_file *stream); > -extern int ser_base_noflush_set_tty_state (struct serial *scb, > - serial_ttystate new_ttystate, > - serial_ttystate old_ttystate); > extern int ser_base_setbaudrate (struct serial *scb, int rate); > extern int ser_base_setstopbits (struct serial *scb, int num); > extern int ser_base_setparity (struct serial *scb, int parity); > diff --git a/gdb/ser-event.c b/gdb/ser-event.c > index 08b56a3..8b88ca0 100644 > --- a/gdb/ser-event.c > +++ b/gdb/ser-event.c > @@ -144,7 +144,6 @@ static const struct serial_ops serial_event_ops = > NULL, /* copy_tty_state */ > NULL, /* set_tty_state */ > NULL, /* print_tty_state */ > - NULL, /* noflush_set_tty_state */ > NULL, /* setbaudrate */ > NULL, /* setstopbits */ > NULL, /* setparity */ > diff --git a/gdb/ser-go32.c b/gdb/ser-go32.c > index e352895..6965f19 100644 > --- a/gdb/ser-go32.c > +++ b/gdb/ser-go32.c > @@ -689,17 +689,6 @@ dos_set_tty_state (struct serial *scb, serial_ttystate ttystate) > } > > static int > -dos_noflush_set_tty_state (struct serial *scb, serial_ttystate new_ttystate, > - serial_ttystate old_ttystate) > -{ > - struct dos_ttystate *state; > - > - state = (struct dos_ttystate *) new_ttystate; > - dos_setbaudrate (scb, state->baudrate); > - return 0; > -} > - > -static int > dos_flush_input (struct serial *scb) > { > struct dos_ttystate *port = &ports[scb->fd]; > @@ -882,7 +871,6 @@ static const struct serial_ops dos_ops = > dos_copy_tty_state, > dos_set_tty_state, > dos_print_tty_state, > - dos_noflush_set_tty_state, > dos_setbaudrate, > dos_setstopbits, > dos_setparity, > diff --git a/gdb/ser-mingw.c b/gdb/ser-mingw.c > index 33e4df3..2359a495 100644 > --- a/gdb/ser-mingw.c > +++ b/gdb/ser-mingw.c > @@ -1248,7 +1248,6 @@ static const struct serial_ops hardwire_ops = > ser_base_copy_tty_state, > ser_base_set_tty_state, > ser_base_print_tty_state, > - ser_base_noflush_set_tty_state, > ser_windows_setbaudrate, > ser_windows_setstopbits, > ser_windows_setparity, > @@ -1279,7 +1278,6 @@ static const struct serial_ops tty_ops = > ser_base_copy_tty_state, > ser_base_set_tty_state, > ser_base_print_tty_state, > - ser_base_noflush_set_tty_state, > NULL, > NULL, > NULL, > @@ -1310,7 +1308,6 @@ static const struct serial_ops pipe_ops = > ser_base_copy_tty_state, > ser_base_set_tty_state, > ser_base_print_tty_state, > - ser_base_noflush_set_tty_state, > ser_base_setbaudrate, > ser_base_setstopbits, > ser_base_setparity, > @@ -1341,7 +1338,6 @@ static const struct serial_ops tcp_ops = > ser_base_copy_tty_state, > ser_base_set_tty_state, > ser_base_print_tty_state, > - ser_base_noflush_set_tty_state, > ser_base_setbaudrate, > ser_base_setstopbits, > ser_base_setparity, > diff --git a/gdb/ser-pipe.c b/gdb/ser-pipe.c > index cb94242..56a91fc 100644 > --- a/gdb/ser-pipe.c > +++ b/gdb/ser-pipe.c > @@ -219,7 +219,6 @@ static const struct serial_ops pipe_ops = > ser_base_copy_tty_state, > ser_base_set_tty_state, > ser_base_print_tty_state, > - ser_base_noflush_set_tty_state, > ser_base_setbaudrate, > ser_base_setstopbits, > ser_base_setparity, > diff --git a/gdb/ser-tcp.c b/gdb/ser-tcp.c > index 7ff588b..cc6de30 100644 > --- a/gdb/ser-tcp.c > +++ b/gdb/ser-tcp.c > @@ -399,7 +399,6 @@ static const struct serial_ops tcp_ops = > ser_base_copy_tty_state, > ser_base_set_tty_state, > ser_base_print_tty_state, > - ser_base_noflush_set_tty_state, > ser_base_setbaudrate, > ser_base_setstopbits, > ser_base_setparity, > diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c > index 53c33e6..3cbb77f 100644 > --- a/gdb/ser-unix.c > +++ b/gdb/ser-unix.c > @@ -31,9 +31,7 @@ > #include "gdb_select.h" > #include "gdbcmd.h" > #include "filestuff.h" > -#include "gdb_termios.h" > - > -#ifdef HAVE_TERMIOS > +#include > > struct hardwire_ttystate > { > @@ -51,32 +49,6 @@ show_serial_hwflow (struct ui_file *file, int from_tty, > } > #endif > > -#endif /* termios */ > - > -#ifdef HAVE_TERMIO > - > -/* It is believed that all systems which have added job control to SVR3 > - (e.g. sco) have also added termios. Even if not, trying to figure out > - all the variations (TIOCGPGRP vs. TCGETPGRP, etc.) would be pretty > - bewildering. So we don't attempt it. */ > - > -struct hardwire_ttystate > - { > - struct termio termio; > - }; > -#endif /* termio */ > - > -#ifdef HAVE_SGTTY > -struct hardwire_ttystate > - { > - struct sgttyb sgttyb; > - struct tchars tc; > - struct ltchars ltc; > - /* Line discipline flags. */ > - int lmode; > - }; > -#endif /* sgtty */ > - > static int hardwire_open (struct serial *scb, const char *name); > static void hardwire_raw (struct serial *scb); > static int rate_to_code (int rate); > @@ -89,8 +61,6 @@ static int set_tty_state (struct serial *scb, > struct hardwire_ttystate * state); > static serial_ttystate hardwire_get_tty_state (struct serial *scb); > static int hardwire_set_tty_state (struct serial *scb, serial_ttystate state); > -static int hardwire_noflush_set_tty_state (struct serial *, serial_ttystate, > - serial_ttystate); > static void hardwire_print_tty_state (struct serial *, serial_ttystate, > struct ui_file *); > static int hardwire_drain_output (struct serial *); > @@ -114,61 +84,19 @@ hardwire_open (struct serial *scb, const char *name) > static int > get_tty_state (struct serial *scb, struct hardwire_ttystate *state) > { > -#ifdef HAVE_TERMIOS > if (tcgetattr (scb->fd, &state->termios) < 0) > return -1; > > return 0; > -#endif > - > -#ifdef HAVE_TERMIO > - if (ioctl (scb->fd, TCGETA, &state->termio) < 0) > - return -1; > - return 0; > -#endif > - > -#ifdef HAVE_SGTTY > - if (ioctl (scb->fd, TIOCGETP, &state->sgttyb) < 0) > - return -1; > - if (ioctl (scb->fd, TIOCGETC, &state->tc) < 0) > - return -1; > - if (ioctl (scb->fd, TIOCGLTC, &state->ltc) < 0) > - return -1; > - if (ioctl (scb->fd, TIOCLGET, &state->lmode) < 0) > - return -1; > - > - return 0; > -#endif > } > > static int > set_tty_state (struct serial *scb, struct hardwire_ttystate *state) > { > -#ifdef HAVE_TERMIOS > if (tcsetattr (scb->fd, TCSANOW, &state->termios) < 0) > return -1; > > return 0; > -#endif > - > -#ifdef HAVE_TERMIO > - if (ioctl (scb->fd, TCSETA, &state->termio) < 0) > - return -1; > - return 0; > -#endif > - > -#ifdef HAVE_SGTTY > - if (ioctl (scb->fd, TIOCSETN, &state->sgttyb) < 0) > - return -1; > - if (ioctl (scb->fd, TIOCSETC, &state->tc) < 0) > - return -1; > - if (ioctl (scb->fd, TIOCSLTC, &state->ltc) < 0) > - return -1; > - if (ioctl (scb->fd, TIOCLSET, &state->lmode) < 0) > - return -1; > - > - return 0; > -#endif > } > > static serial_ttystate > @@ -205,39 +133,6 @@ hardwire_set_tty_state (struct serial *scb, serial_ttystate ttystate) > return set_tty_state (scb, state); > } > > -static int > -hardwire_noflush_set_tty_state (struct serial *scb, > - serial_ttystate new_ttystate, > - serial_ttystate old_ttystate) > -{ > - struct hardwire_ttystate new_state; > -#ifdef HAVE_SGTTY > - struct hardwire_ttystate *state = (struct hardwire_ttystate *) old_ttystate; > -#endif > - > - new_state = *(struct hardwire_ttystate *) new_ttystate; > - > - /* Don't change in or out of raw mode; we don't want to flush input. > - termio and termios have no such restriction; for them flushing input > - is separate from setting the attributes. */ > - > -#ifdef HAVE_SGTTY > - if (state->sgttyb.sg_flags & RAW) > - new_state.sgttyb.sg_flags |= RAW; > - else > - new_state.sgttyb.sg_flags &= ~RAW; > - > - /* I'm not sure whether this is necessary; the manpage just mentions > - RAW not CBREAK. */ > - if (state->sgttyb.sg_flags & CBREAK) > - new_state.sgttyb.sg_flags |= CBREAK; > - else > - new_state.sgttyb.sg_flags &= ~CBREAK; > -#endif > - > - return set_tty_state (scb, &new_state); > -} > - > static void > hardwire_print_tty_state (struct serial *scb, > serial_ttystate ttystate, > @@ -246,7 +141,6 @@ hardwire_print_tty_state (struct serial *scb, > struct hardwire_ttystate *state = (struct hardwire_ttystate *) ttystate; > int i; > > -#ifdef HAVE_TERMIOS > fprintf_filtered (stream, "c_iflag = 0x%x, c_oflag = 0x%x,\n", > (int) state->termios.c_iflag, > (int) state->termios.c_oflag); > @@ -262,36 +156,6 @@ hardwire_print_tty_state (struct serial *scb, > for (i = 0; i < NCCS; i += 1) > fprintf_filtered (stream, "0x%x ", state->termios.c_cc[i]); > fprintf_filtered (stream, "\n"); > -#endif > - > -#ifdef HAVE_TERMIO > - fprintf_filtered (stream, "c_iflag = 0x%x, c_oflag = 0x%x,\n", > - state->termio.c_iflag, state->termio.c_oflag); > - fprintf_filtered (stream, "c_cflag = 0x%x, c_lflag = 0x%x, c_line = 0x%x.\n", > - state->termio.c_cflag, state->termio.c_lflag, > - state->termio.c_line); > - fprintf_filtered (stream, "c_cc: "); > - for (i = 0; i < NCC; i += 1) > - fprintf_filtered (stream, "0x%x ", state->termio.c_cc[i]); > - fprintf_filtered (stream, "\n"); > -#endif > - > -#ifdef HAVE_SGTTY > - fprintf_filtered (stream, "sgttyb.sg_flags = 0x%x.\n", > - state->sgttyb.sg_flags); > - > - fprintf_filtered (stream, "tchars: "); > - for (i = 0; i < (int) sizeof (struct tchars); i++) > - fprintf_filtered (stream, "0x%x ", ((unsigned char *) &state->tc)[i]); > - fprintf_filtered (stream, "\n"); > - > - fprintf_filtered (stream, "ltchars: "); > - for (i = 0; i < (int) sizeof (struct ltchars); i++) > - fprintf_filtered (stream, "0x%x ", ((unsigned char *) &state->ltc)[i]); > - fprintf_filtered (stream, "\n"); > - > - fprintf_filtered (stream, "lmode: 0x%x\n", state->lmode); > -#endif > } > > /* Wait for the output to drain away, as opposed to flushing > @@ -300,48 +164,13 @@ hardwire_print_tty_state (struct serial *scb, > static int > hardwire_drain_output (struct serial *scb) > { > -#ifdef HAVE_TERMIOS > return tcdrain (scb->fd); > -#endif > - > -#ifdef HAVE_TERMIO > - return ioctl (scb->fd, TCSBRK, 1); > -#endif > - > -#ifdef HAVE_SGTTY > - /* Get the current state and then restore it using TIOCSETP, > - which should cause the output to drain and pending input > - to be discarded. */ > - { > - struct hardwire_ttystate state; > - > - if (get_tty_state (scb, &state)) > - { > - return (-1); > - } > - else > - { > - return (ioctl (scb->fd, TIOCSETP, &state.sgttyb)); > - } > - } > -#endif > } > > static int > hardwire_flush_output (struct serial *scb) > { > -#ifdef HAVE_TERMIOS > return tcflush (scb->fd, TCOFLUSH); > -#endif > - > -#ifdef HAVE_TERMIO > - return ioctl (scb->fd, TCFLSH, 1); > -#endif > - > -#ifdef HAVE_SGTTY > - /* This flushes both input and output, but we can't do better. */ > - return ioctl (scb->fd, TIOCFLUSH, 0); > -#endif > } > > static int > @@ -349,45 +178,13 @@ hardwire_flush_input (struct serial *scb) > { > ser_base_flush_input (scb); > > -#ifdef HAVE_TERMIOS > return tcflush (scb->fd, TCIFLUSH); > -#endif > - > -#ifdef HAVE_TERMIO > - return ioctl (scb->fd, TCFLSH, 0); > -#endif > - > -#ifdef HAVE_SGTTY > - /* This flushes both input and output, but we can't do better. */ > - return ioctl (scb->fd, TIOCFLUSH, 0); > -#endif > } > > static int > hardwire_send_break (struct serial *scb) > { > -#ifdef HAVE_TERMIOS > return tcsendbreak (scb->fd, 0); > -#endif > - > -#ifdef HAVE_TERMIO > - return ioctl (scb->fd, TCSBRK, 0); > -#endif > - > -#ifdef HAVE_SGTTY > - { > - int status; > - > - status = ioctl (scb->fd, TIOCSBRK, 0); > - > - /* Can't use usleep; it doesn't exist in BSD 4.2. */ > - /* Note that if this gdb_select() is interrupted by a signal it will not > - wait the full length of time. I think that is OK. */ > - gdb_usleep (250000); > - status = ioctl (scb->fd, TIOCCBRK, 0); > - return status; > - } > -#endif > } > > static void > @@ -399,7 +196,6 @@ hardwire_raw (struct serial *scb) > fprintf_unfiltered (gdb_stderr, "get_tty_state failed: %s\n", > safe_strerror (errno)); > > -#ifdef HAVE_TERMIOS > state.termios.c_iflag = 0; > state.termios.c_oflag = 0; > state.termios.c_lflag = 0; > @@ -420,22 +216,6 @@ hardwire_raw (struct serial *scb) > #endif > state.termios.c_cc[VMIN] = 0; > state.termios.c_cc[VTIME] = 0; > -#endif > - > -#ifdef HAVE_TERMIO > - state.termio.c_iflag = 0; > - state.termio.c_oflag = 0; > - state.termio.c_lflag = 0; > - state.termio.c_cflag &= ~CSIZE; > - state.termio.c_cflag |= CLOCAL | CS8; > - state.termio.c_cc[VMIN] = 0; > - state.termio.c_cc[VTIME] = 0; > -#endif > - > -#ifdef HAVE_SGTTY > - state.sgttyb.sg_flags |= RAW | ANYP; > - state.sgttyb.sg_flags &= ~(CBREAK | ECHO); > -#endif > > if (set_tty_state (scb, &state)) > fprintf_unfiltered (gdb_stderr, "set_tty_state failed: %s\n", > @@ -604,24 +384,8 @@ hardwire_setbaudrate (struct serial *scb, int rate) > if (get_tty_state (scb, &state)) > return -1; > > -#ifdef HAVE_TERMIOS > cfsetospeed (&state.termios, baud_code); > cfsetispeed (&state.termios, baud_code); > -#endif > - > -#ifdef HAVE_TERMIO > -#ifndef CIBAUD > -#define CIBAUD CBAUD > -#endif > - > - state.termio.c_cflag &= ~(CBAUD | CIBAUD); > - state.termio.c_cflag |= baud_code; > -#endif > - > -#ifdef HAVE_SGTTY > - state.sgttyb.sg_ispeed = baud_code; > - state.sgttyb.sg_ospeed = baud_code; > -#endif > > return set_tty_state (scb, &state); > } > @@ -648,23 +412,10 @@ hardwire_setstopbits (struct serial *scb, int num) > return 1; > } > > -#ifdef HAVE_TERMIOS > if (!newbit) > state.termios.c_cflag &= ~CSTOPB; > else > state.termios.c_cflag |= CSTOPB; /* two bits */ > -#endif > - > -#ifdef HAVE_TERMIO > - if (!newbit) > - state.termio.c_cflag &= ~CSTOPB; > - else > - state.termio.c_cflag |= CSTOPB; /* two bits */ > -#endif > - > -#ifdef HAVE_SGTTY > - return 0; /* sgtty doesn't support this */ > -#endif > > return set_tty_state (scb, &state); > } > @@ -697,19 +448,9 @@ hardwire_setparity (struct serial *scb, int parity) > return -1; > } > > -#ifdef HAVE_TERMIOS > state.termios.c_cflag &= ~(PARENB | PARODD); > state.termios.c_cflag |= newparity; > -#endif > > -#ifdef HAVE_TERMIO > - state.termio.c_cflag &= ~(PARENB | PARODD); > - state.termio.c_cflag |= newparity; > -#endif > - > -#ifdef HAVE_SGTTY > - return 0; /* sgtty doesn't support this */ > -#endif > return set_tty_state (scb, &state); > } > > @@ -744,7 +485,6 @@ static const struct serial_ops hardwire_ops = > hardwire_copy_tty_state, > hardwire_set_tty_state, > hardwire_print_tty_state, > - hardwire_noflush_set_tty_state, > hardwire_setbaudrate, > hardwire_setstopbits, > hardwire_setparity, > @@ -759,7 +499,6 @@ _initialize_ser_hardwire (void) > { > serial_add_interface (&hardwire_ops); > > -#ifdef HAVE_TERMIOS > #ifdef CRTSCTS > add_setshow_boolean_cmd ("remoteflow", no_class, > &serial_hwflow, _("\ > @@ -771,7 +510,6 @@ when debugging using remote targets."), > show_serial_hwflow, > &setlist, &showlist); > #endif > -#endif > } > > int > diff --git a/gdb/serial.c b/gdb/serial.c > index 6866549..32d4f5a 100644 > --- a/gdb/serial.c > +++ b/gdb/serial.c > @@ -514,14 +514,6 @@ serial_print_tty_state (struct serial *scb, > } > > int > -serial_noflush_set_tty_state (struct serial *scb, > - serial_ttystate new_ttystate, > - serial_ttystate old_ttystate) > -{ > - return scb->ops->noflush_set_tty_state (scb, new_ttystate, old_ttystate); > -} > - > -int > serial_setbaudrate (struct serial *scb, int rate) > { > return scb->ops->setbaudrate (scb, rate); > diff --git a/gdb/serial.h b/gdb/serial.h > index c76ddbe..647eab3 100644 > --- a/gdb/serial.h > +++ b/gdb/serial.h > @@ -169,16 +169,6 @@ extern void serial_print_tty_state (struct serial *scb, > serial_ttystate ttystate, > struct ui_file *); > > -/* Set the tty state to NEW_TTYSTATE, where OLD_TTYSTATE is the > - current state (generally obtained from a recent call to > - serial_get_tty_state()), but be careful not to discard any input. > - This means that we never switch in or out of raw mode, even if > - NEW_TTYSTATE specifies a switch. */ > - > -extern int serial_noflush_set_tty_state (struct serial *scb, > - serial_ttystate new_ttystate, > - serial_ttystate old_ttystate); > - > /* Set the baudrate to the decimal value supplied. Returns 0 for > success, -1 for failure. */ > > @@ -276,8 +266,6 @@ struct serial_ops > int (*set_tty_state) (struct serial *, serial_ttystate); > void (*print_tty_state) (struct serial *, serial_ttystate, > struct ui_file *); > - int (*noflush_set_tty_state) (struct serial *, serial_ttystate, > - serial_ttystate); > int (*setbaudrate) (struct serial *, int rate); > int (*setstopbits) (struct serial *, int num); > /* Set the value PARITY as parity setting for serial object. > -- > 2.5.5 As far as I could, I reviewed all the changes, and they seem OK to me modulo the few nits I pointed. Thanks, -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/