• Paul Eggert's avatar
    Simplify SIGIO usage. · 4a4bbad2
    Paul Eggert authored
    The code that dealt with SIGIO was crufty and confusing, e.g., it
    played tricks like "#undef SIGIO" but these tricks were not used
    consistently.  Simplify mostly by not #undeffing standard symbols,
    e.g., use "defined USABLE_SIGIO" (our symbol, which we can define
    or not as we please) rather than "defined SIGIO" (standard symbol
    that we probably shouldn't #undef).
    * configure.ac (NO_TERMIO, BROKEN_FIONREAD, BROKEN_SIGAIO)
    (BROKEN_SIGPOLL, BROKEN_SIGPTY): Remove.
    (USABLE_FIONREAD, USABLE_SIGIO): New symbols.  All uses of
    'defined SIGIO' replaced with 'defined USABLE_SIGIO', with no need
    to #undef SIGIO now (which was error-prone).  Likewise, all uses
    of 'defined FIONREAD' replaced with 'defined USABLE_FIONREAD'.
    * src/admin/CPP_DEFINES (BROKEN_SIGAIO, BROKEN_SIGIO, BROKEN_SIGPOLL)
    (BROKEN_SIGPTY, NO_TERMIO): Remove.
    * src/conf_post.h [USG5_4]: Do not include <sys/wait.h> here.
    Modules that need it can include it.
    [USG5_4 && emacs]: Likewise, do not include the streams stuff here.
    * src/dispextern.h (ignore_sigio): New decl.
    * src/emacs.c (shut_down_emacs): Invoke unrequest_sigio
    unconditionally, since it's now a no-op if !USABLE_SIGIO.
    * src/emacs.c (shut_down_emacs):
    * src/keyboard.c (kbd_buffer_store_event_hold):
    Use ignore_sigio rather than invoking 'signal' directly.
    * src/keyboard.c (USABLE_FIONREAD && USG5_4): Include <sys/filio.h>,
    for FIONREAD.
    (FIONREAD, SIGIO): Do not #undef.
    (tty_read_avail_input): Use #error rather than a syntax error.
    * src/process.c [USG5_4]: Include <sys/stream.h> and <sys/stropts.h>,
    for I_PIPE, used by SETUP_SLAVE_PTY.
    (DATAGRAM_SOCKETS): Simplify defn, based on USABLE_FIONREAD.
    * src/sysdep.c (croak): Remove; no longer needed.  This bit of
    temporary code, with Fred N. Fish's comment that it's temporary,
    has been in Emacs since at least 1992!
    (init_sigio, reset_sigio, request_sigio, unrequest_sigio):
    Arrange for them to be no-ops in all cases when ! USABLE_SIGIO.
    * src/syssignal.h (croak): Remove decl.
    (SIGIO, SIGPOO, SIGAIO, SIGPTY): Do not #undef; that's too fragile.
    * src/systty.h [!NO_TERMIO]: Do not include <termio.h>; no longer needed
    now that we're termios-only.
    (FIONREAD, ASYNC) [BROKEN_FIONREAD]: Do not #undef.
    * src/term.c (dissociate_if_controlling_tty): Use #error rather than
    a run-time error.
    
    Fixes: debbugs:12408
    4a4bbad2
keyboard.c 371 KB